Lob & Verbesserungsvorschlag für Subtitles

    • Lob & Verbesserungsvorschlag für Subtitles

      Neu

      Moin!

      Seit einem halben bin ich bei TV-Releases von 100% Scene auf 90% P2P umgestiegen -- und zwar fast ausschließlich dank SJ, ein fettes Lob an dieser Stelle also!! Auch wenn sich die deutsche Scene im TV-Bereich meiner Meinung nach in einem desaströsen Zustand befindet und ein ziemlich leichter 'Gegner' ist, zeigt ihr, gerade mit den TVS-Releases, eine enorm hohe Konsistenz und Qualität! Das Racen bei der Scene mag zwar für die Groups ein toller Wettbewerb sein und für den 0815-User mag die Qualität der Releases auch völlig in Ordnung sein, aber ich bin heilfroh, dass es mit SJ auch noch Leute gibt, die sich die Zeit nehmen, qualitativ hochwertige Releases zu veröffentlichen ohne einfach den Crap der anderen zu kopieren und umzubenennen.

      Da mir als Perfektionist aber immer etwas auffällt, was man in meinen Augen verbessern kann, möchte ich euch das nicht vorenthalten. Ob ihr das dann umsetzt oder nicht, ist mir gar nicht so wichtig, aber ich denke konstruktive Verbesserungsvorschläge haben noch nie geschadet :)

      Es geht in beiden Fällen um die Subtitles. Hier mal der mkvinfo-Auszug von einem typisches TVS-Release mit deutschen und englischen Forced und Full Subs:

      Quellcode

      1. | + A track
      2. | + Track number: 4 (track ID for mkvmerge & mkvextract: 3)
      3. | + Track UID: 2522186146349389964
      4. | + Track type: subtitles
      5. | + Forced flag: 1
      6. | + Lacing flag: 0
      7. | + Codec ID: S_TEXT/UTF8
      8. | + Language: ger
      9. | + Name: Forced
      10. | + Enabled: 1
      11. | + Default flag: 1
      12. | + MinCache: 0
      13. | + Max BlockAddition ID: 0
      14. | + Codec decode all: 1
      15. | + A track
      16. | + Track number: 5 (track ID for mkvmerge & mkvextract: 4)
      17. | + Track UID: 16927982565210103173
      18. | + Track type: subtitles
      19. | + Default flag: 0
      20. | + Lacing flag: 0
      21. | + Codec ID: S_TEXT/UTF8
      22. | + Name: Forced
      23. | + Forced flag: 0
      24. | + Enabled: 1
      25. | + MinCache: 0
      26. | + Max BlockAddition ID: 0
      27. | + Codec decode all: 1
      28. | + A track
      29. | + Track number: 6 (track ID for mkvmerge & mkvextract: 5)
      30. | + Track UID: 18109621776459352498
      31. | + Track type: subtitles
      32. | + Default flag: 0
      33. | + Lacing flag: 0
      34. | + Codec ID: S_TEXT/UTF8
      35. | + Language: ger
      36. | + Name: Full
      37. | + Enabled: 1
      38. | + Forced flag: 0
      39. | + MinCache: 0
      40. | + Max BlockAddition ID: 0
      41. | + Codec decode all: 1
      42. | + A track
      43. | + Track number: 7 (track ID for mkvmerge & mkvextract: 6)
      44. | + Track UID: 17817144306171108521
      45. | + Track type: subtitles
      46. | + Default flag: 0
      47. | + Lacing flag: 0
      48. | + Codec ID: S_TEXT/UTF8
      49. | + Name: Full
      50. | + Enabled: 1
      51. | + Forced flag: 0
      52. | + MinCache: 0
      53. | + Max BlockAddition ID: 0
      54. | + Codec decode all: 1
      Alles anzeigen
      Es fällt auf, dass die Unterscheidung zwischen Forced und Full Subs über die Name-Property stattfindet. Das ist für manche Player (z.B. VLC) auch sinnvoll, da die Namen der Tracks dort angezeigt werden. Für mich als eingefleischten Plex-Nutzer ist es leider ziemlich mühsam, da Plex für die Identifizierung und Anzeige der Subs nur die Language-Property und Default- und Forced-Flags einliest, und dafür genau eine Flag nie richtig gesetzt ist: die Forced-Flag der englischen Forced Subs. Die Default-Flag sollte es natürlich nur einmal pro Track-Type geben, aber die Forced-Flag kann auch mehrmals gesetzt werden. Auszug von mkvpropedit -l:

      'Forced display' flag: Set if that track MUST be used during playback. There can be many forced track for a kind (audio, video or subs). The player should select the one whose language matches the user preference or the default + forced track.
      Ich weiß nicht, ob ihr aus Kompatibilitätsgründen auf ein mehrfaches Setzen der Forced-Flag verzichtet, aber für einen großen Teil der Nutzer wäre die Flag sicherlich sinnvoll. Mir fällt hingegen kein gängiger Player ein, der damit Probleme hätte. Momentan muss ich für jedes Release manuell diese Flag setzen, was zwar mittlerweile Routine geworden, aber leider noch immer ziemlich mühsam ist.

      Mein zweiter Vorschlag ist schnell beschrieben: Die textbasierten Sutitles sind zwar super was Kompatibilität und Größe angeht, ich als Qualitäts-Junkie ziehe aber bildbasierte Subtitles wie IDX/SUB (oder noch besser: PGS) vor, da hier die Positionierung wie vom Publisher gewünscht stattfindet und die Anzahl der Rechtschreibfehler sich nur auf den Publisher und nicht auch noch auf die OCR-Software beschränkt.

      Mein erster Vorschlag liegt mir sehr am Herzen. Zum einen, weil das Setzen der Flag laut Dokumentation von mkvpropedit richtig wäre, vor allem aber, weil es für mich und viele andere mit Sicherheit sehr hilfreich wäre! Der zweite Vorschlag wäre eher Nice-to-have :)

      Ich würde mich über eine kurze Antwort bezüglich der Machbarkeit meiner zwei Vorschläge sehr freuen!

      Gruß aus München
      -mueller56
    • Neu

      Danke für deinen Beitrag, konstruktive Kritik ist immer schön zu lesen. :thumbup:

      Zum ersten Punkt: So einheitlich wie du vermutest, ist das gar nicht in den TVS-Releases. Tatsächlich haben wir da gar keine Richtlinien festgelegt, da der Umgang mit Untertiteln das Nervigste überhaupt ist und niemand sich gern damit beschäftigt. :D
      Recht hast du auf alle Fälle, bei Forced Subs sollte der Forced-Flag gesetzt sein, auch wenn mehr als ein Forced Sub gemuxt wird. Tatsächlich hat ein TVS-Mitglied vor kurzem ein kleines Programm geschrieben, das das Ganze automatisch erledigt, wenn mehr als ein Untertitel derselben Sprache vorhanden ist. Von daher dürfte das überhaupt kein Problem sein. Wir müssen einfach besser darauf achten.

      Zum zweiten Punkt: Das ist abhängig von der Quelle. Bei Netflix und Amazon gibt es nur textbasierte Untertitel (mehr Position als am oberen oder unteren Bildrand ist da nicht drin). Bei Blu-ray-Encodes muxen wir in aller Regel sowohl Bild-Untertitel als PGS (jeweils in der Größe der Auflösung angepasst), als auch per OCR erstellte Text-Untertitel als SRT. DVD-Encodes haben wir schon ewig nicht mehr gebracht, da würden wir aber ebenso vorgehen (IDX/SUB und SRT). In alten Encodes kann das noch anders sein...
      Kein Support per PN!
    • Neu

      simon2011 schrieb:

      So einheitlich wie du vermutest, ist das gar nicht in den TVS-Releases. Tatsächlich haben wir da gar keine Richtlinien festgelegt, da der Umgang mit Untertiteln das Nervigste überhaupt ist und niemand sich gern damit beschäftigt.
      Recht hast du auf alle Fälle, bei Forced Subs sollte der Forced-Flag gesetzt sein, auch wenn mehr als ein Forced Sub gemuxt wird. Tatsächlich hat ein TVS-Mitglied vor kurzem ein kleines Programm geschrieben, das das Ganze automatisch erledigt, wenn mehr als ein Untertitel derselben Sprache vorhanden ist. Von daher dürfte das überhaupt kein Problem sein. Wir müssen einfach besser darauf achten.
      Das klingt ja schon mal vielversprechend :) Natürlich ist der Umgang mit Subs ätzend, aber gerade Forced Subs sind ja meistens essentiell wichtig für ein Release. Gerade im Hinblick auf Software wie Plex ist das Setzen der Forced-Flag also unabdingbar, da Plex immer genau die Tracks auswählt, die man haben will (ENG-Audio und dazu passend ENG-Forced Subs z.B.), damit man eben nicht bei jedem Video selbst auswählen muss, welche Tracks man nun hören/lesen will. Mir ist leider bis jetzt kein Release untergekommen, wo mehr als eine Forced-Flag gesetzt war, aber ich freue mich da sehr über eine Verbesserung :) Die Titel der Tracks sind ja fast immer richtig, es fehlt halt nur der eine Haken bei der Flag.


      simon2011 schrieb:

      Das ist abhängig von der Quelle. Bei Netflix und Amazon gibt es nur textbasierte Untertitel (mehr Position als am oberen oder unteren Bildrand ist da nicht drin). Bei Blu-ray-Encodes muxen wir in aller Regel sowohl Bild-Untertitel als PGS (jeweils in der Größe der Auflösung angepasst), als auch per OCR erstellte Text-Untertitel als SRT. DVD-Encodes haben wir schon ewig nicht mehr gebracht, da würden wir aber ebenso vorgehen (IDX/SUB und SRT). In alten Encodes kann das noch anders sein...
      Der Vorschlag war natürlich ausschließlich auf BD-Encodes bezogen, das hatte ich nicht erwähnt. Aber auch dort habe ich bis jetzt in den seltensten Fällen Bild-Untertitel gefunden, vielleicht hatte ich da einfach Pech :D

      Ich hoffe ich konnte die hohe Bedeutung der richtig gesetzten Flags bei Forced Subs deutlich machen und freue mich auf viele weitere tolle Releases von euch :)
    • Neu

      Ich habe mal ein kleines Script geschrieben, um bei bestehenden Releases, bei denen es Name-Properties in Subtitle-Tracks gibt, die das Wort 'forced' enthalten (wie o.g. ist das bei fast allen TVS-Releases der Fall), die Forced Flags korrekt zu setzen.

      Hätte mir auch mal früher einfallen können, da hätte ich mir ne Menge Arbeit erspart :D Aber ich hätte nicht gedacht, dass das mit so wenig Zeilen Code möglich gewesen wäre..

      Geschrieben für bash, benötigt wird außerdem MKVToolNix. Natürlich alles auf eigene Gefahr! Und das Auskommentieren von Zeile 57 wirklich nur, wenn man sich sicher ist, dass die Ausgabe nur die Tracks enthält, wo man die Forced Flag gesetzt haben möchte!

      Shell-Script

      1. #!/bin/bash
      2. # Based on mkvinfo v8.8.0 ('Wind at my back') 64bit
      3. #
      4. # This script lists all subtitle tracks, whose name property
      5. # contains 'forced', but whose Forced flag is not set.
      6. #
      7. # Adjust the 'find' command in line 24 to match all the files
      8. # you want to be parsed.
      9. #
      10. # The string manipulations at the end of lines 33 to 38 are
      11. # essential for this script to work. With different platforms
      12. # or different versions of mkvinfo, this script might not work.
      13. # In that case you have to adjust the string manipulations so
      14. # that the values of the properties that mkvinfo outputs
      15. # are again correctly parsed.
      16. #
      17. # If you uncomment line 57, the Forced flag will be set correctly
      18. # for all found matches. Only do this, if you are certain, that
      19. # the script only finds those tracks that you want edited.
      20. shopt -s nocasematch
      21. for f in $( find /path/to/search -name "*.mkv" | sort ); do
      22. list=$( mkvinfo "$f" )
      23. trackcounter=0
      24. subpart=0
      25. declare -a array
      26. while read -r line; do
      27. [[ "$line" =~ .*\+\ A\ track.* ]] && ((trackcounter++))
      28. [[ "$line" =~ .*subtitles ]] && ((subpart++))
      29. [[ "$line" =~ .*\+\ Track\ number.* ]] && array[($trackcounter-1)*6]=${line:19:1}
      30. [[ "$line" =~ .*\+\ Track\ UID.* ]] && array[($trackcounter-1)*6+1]=${line:16}
      31. [[ "$line" =~ .*\+\ Track\ type.* ]] && array[($trackcounter-1)*6+2]=${line:17}
      32. [[ "$line" =~ .*\+\ Forced\ flag.* ]] && array[($trackcounter-1)*6+3]=${line:18}
      33. [[ "$line" =~ .*\+\ Language.* ]] && array[($trackcounter-1)*6+4]=${line:15}
      34. [[ "$line" =~ .*\+\ Name.* ]] && array[($trackcounter-1)*6+5]=${line:11}
      35. done <<< "$list"
      36. for (( i=0; i<$trackcounter; i++ )); do
      37. if [[ "${array[i*6+2]}" == "subtitles" && "${array[i*6+5]}" =~ .*forced.* && "${array[i*6+3]}" != "1" ]]; then
      38. echo "$f"
      39. echo -n "Track number: "
      40. echo "${array[i*6+0]}"
      41. echo -n "Track UID: "
      42. echo "${array[i*6+1]}"
      43. echo -n "Track type: "
      44. echo "${array[i*6+2]}"
      45. echo -n "Forced flag: "
      46. echo "${array[i*6+3]}"
      47. echo -n "Language: "
      48. echo "${array[i*6+4]}"
      49. echo -n "Name: "
      50. echo "${array[i*6+5]}"
      51. echo
      52. #mkvpropedit "$f" -e track:="${array[i*6+1]}" -s flag-forced=1
      53. fi
      54. done
      55. unset array
      56. done
      Alles anzeigen