Untertitelspuren beginnen erst nach über 6 Sekunden in einer MPEG-Datei, deshalb hat der neue Film keinen Untertitel

  • Problem:

    Weil die Untertitelspuren erst nach etwas über 6 Sekunden beginnen, findet weder ffprobe noch mediainfo diese streams.

    Leider kann ffmpeg diese Spuren dann auch nicht in das neue Video einbinden.


    > ffmpeg -fflags +genpts -i "Avengers_4_-_Endgame.mpg" -map 0:v -c:v libx264 -profile:v high -preset veryslow -tune film -x264opts ref=4:b-pyramid=strict:bluray-compat=1:weightp=0:vbv-maxrate=12500:vbv-bufsize=12500:level=3:slices=4:b-adapt=2:direct=auto:colorprim=bt709:transfer=bt709:colormatrix=bt709:keyint=50:aud:subme=9:nal-hrd=vbr -movflags faststart -crf 16 -vf scale=856x480,pad='max(iw\,ih*(16/9)):ow/(16/9):(ow-iw)/2:(oh-ih)/2',setsar='1/1' -keyint_min 2-8 -map 0:a:0 -c:a libfdk_aac -afterburner 1 -b:a 344k -map 0:a:1 -c:a libfdk_aac -afterburner 1 -b:a 344k -map 0:s:0? -c:s copy -map 0:s:1? -c:s copy -map 0:s:2? -c:s copy -map 0:s:3? -c:s copy -f mp4 -y ./Avengers_4_-_Endgame_-_mit_Untertitel.mp4


    Input #0, mpeg, from 'Avengers_4_-_Endgame.mpg':

    Duration: 02:53:46.02, start: 0.287267, bitrate: 5848 kb/s

    Stream #0:0[0x1e0]: Video: mpeg2video (Main), yuv420p(tv, progressive), 720x576 [SAR 64:45 DAR 16:9], 25 fps, 25 tbr, 90k tbn, 50 tbc

    Stream #0:1[0x80]: Audio: ac3, 48000 Hz, 5.1(side), fltp, 384 kb/s

    Stream #0:2[0x81]: Audio: ac3, 48000 Hz, 5.1(side), fltp, 384 kb/s

    Stream mapping:

    Stream #0:0 -> #0:0 (mpeg2video (native) -> h264 (libx264))

    Stream #0:1 -> #0:1 (ac3 (native) -> aac (libfdk_aac))

    Stream #0:2 -> #0:2 (ac3 (native) -> aac (libfdk_aac))

    Press [q] to stop, [?] for help

    [libx264 @ 0x8074fec00] using SAR=1/1

    [libx264 @ 0x8074fec00] using cpu capabilities: MMX2 SSE2Fast LZCNT

    [libx264 @ 0x8074fec00] profile High, level 3.0, 4:2:0, 8-bit

    [libx264 @ 0x8074fec00] 264 - core 157 - H.264/MPEG-4 AVC codec - Copyleft 2003-2018 - ...


    Output #0, mp4, to './Avengers_4_-_Endgame_-_mit_Untertitel.mp4':

    Metadata:

    encoder : Lavf58.20.100

    Stream #0:0: Video: h264 (libx264) (avc1 / 0x31637661), yuv420p(progressive), 856x480 [SAR 1:1 DAR 107:60], q=-1--1, 25 fps, 12800 tbn, 25 tbc

    Metadata:

    encoder : Lavc58.35.100 libx264

    Side data:

    cpb: bitrate max/min/avg: 12500000/0/0 buffer size: 12500000 vbv_delay: -1

    Stream #0:1: Audio: aac (libfdk_aac) (mp4a / 0x6134706D), 48000 Hz, 5.1, s16, 344 kb/s

    Metadata:

    encoder : Lavc58.35.100 libfdk_aac

    Stream #0:2: Audio: aac (libfdk_aac) (mp4a / 0x6134706D), 48000 Hz, 5.1, s16, 344 kb/s

    Metadata:

    encoder : Lavc58.35.100 libfdk_aac

    [mpeg @ 0x807585000] New subtitle stream 0:3 at pos:6539278 and DTS:6.48727sits/s speed=1.49x

    [mpeg @ 0x807585000] New subtitle stream 0:4 at pos:6541326 and DTS:6.48727s

    [mpeg @ 0x807585000] New subtitle stream 0:5 at pos:6545422 and DTS:6.48727s

    [mpeg @ 0x807585000] New subtitle stream 0:6 at pos:6608910 and DTS:6.56727s

    [mp4 @ 0x807585c00] Starting second pass: moving the moov atom to the beginning of the file

    frame= 162 fps= 27 q=-1.0 Lsize= 943kB time=00:00:06.36 bitrate=1215.0kbits/s speed=1.06x

    video:416kB audio:517kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 1.010588%


    Leider erkennt auch dieser Aufruf keine Untertitelspuren:

    > ffmpeg -ss 10 -i Avengers_4_-_Endgame.mpg



    Frage:

    Wie kann ich ffmpeg dazu bringen, auch später einsetzenden Spuren mit einzubinden?

    Wie kann ich den genauen Zeitpunkt ermitteln, wann die Untertitelspuren einsetzen (genau auf den Frame)?

    Wie kann ich das erste Stück ohne Untertitel, von dem Rest abtrennen, um beide getrennt zu transkodieren?


    Für hilfreiche Antworten wäre ich sehr dankbar.


    Gruß

    Yoda

  • Anzeigen sollte so funktionieren:


    Code
    1. ffmpeg -ss 10 -i <file> -c copy -map 0 -f mpegts - 2> /dev/null | ffprobe -hide_banner -i -


    vdr-User-# 755 to_h264 chk_r

  • Leider nicht der gewünschte Erfolg, auch wenn ich 100 Sekunden überspringen lasse:


    > ffmpeg -ss 100 -i Avengers_4_-_Endgame.mpg -c copy -map 0 -f mpegts - 2> /dev/null | ffprobe -hide_banner -i -

    [mpegts @ 0x80757e000] Could not find codec parameters for stream 1 (Audio: ac3 ([129][0][0][0] / 0x0081), 0 channels, fltp): unspecified sample rate

    Consider increasing the value for the 'analyzeduration' and 'probesize' options

    [mpegts @ 0x80757e000] Could not find codec parameters for stream 2 (Audio: ac3 ([129][0][0][0] / 0x0081), 0 channels, fltp): unspecified sample rate

    Consider increasing the value for the 'analyzeduration' and 'probesize' options

    Input #0, mpegts, from 'pipe:':

    Duration: N/A, start: 1.440000, bitrate: 8000 kb/s

    Program 1

    Metadata:

    service_name : Service01

    service_provider: FFmpeg

    Stream #0:0[0x100]: Video: mpeg2video (Main) ([2][0][0][0] / 0x0002), yuv420p(tv, progressive), 720x576 [SAR 64:45 DAR 16:9], 8000 kb/s, 25 tbr, 90k tbn, 50 tbc

    Stream #0:1[0x101]: Audio: ac3 ([129][0][0][0] / 0x0081), 0 channels, fltp

    Stream #0:2[0x102]: Audio: ac3 ([129][0][0][0] / 0x0081), 0 channels, fltp

  • Aber ich habe einen möglicherweise brauchbaren Ansatz gefunden.

    Ich habe es geschafft, die Untertitelspuren einzeln zu extrahieren:


    Aber was mache ich jetzt damit?

    Wie kann ich diese Untertitel jetzt dem ffmpeg übergeben?

    Immerhin sind das tausende von BMP-Dateien pro Untertitelspur...


    Gruß

    Yoda




    @EDIT

    Kann man diese Untertitel vielleicht in ein besser handhabbares Format konvertieren?

    So das jede Untertitelspur nur aus einer einzigen Datei besteht?

  • Hallo,


    die Sache scheint noch viel schlimmer zu sein.

    Ich habe mit vob2sub mal ein wenig rumgespielt und so habe ich noch zwei Untertitelspuren gefunden, eine beginnt erst nach über 19 Minuten und die andere erst nach über 52 Minuten...


    Hat einer ne Idee, wie man die komplette Anzahl der Untertitel (zuverlässig) ermitteln kann?


    Gruß

    Yoda

  • Ich glaube jetzt, dass das mit vob2sub der falsche Ansatz ist.

    Im Internet habe ich nur Möglichkeiten gefunden, wie man Textbasierte Untertitel (SRT oder ASS) mit ffmpeg verarbeiten kann. Diese sub.sub+BMP sind ja alles BMP-Grafiken... die kann man sicherlich auch nur schwer wieder in Text umwandeln.


    Deshalb brauche ich wohl eher ein Programm, mit dem man (genauso wie vob2sub es tut) die komplette Film-Datei durchläuft (dauert auch seine Zeit) und so wirklich alle Untertitel erwischt. Aber eben die Untertitel in einem Textformat wie SRT oder ASS ablegt.


    Hat einer ne Idee, mit welchen Programmen es geht?

    mplayer/mencoder vielleicht...? (aber wie)


    Gruß

    Yoda