FFMPEG m4v -> mp4 == Ruckeln...

  • Ich nutzte gern ffmpeg in einer Batch Datei um aus einem m4v ein mp4 zu machen:

    Code
    ffmpeg.exe -i "%~1" -vcodec copy "%~n1.mp4"

    Doch das funktioniert nicht gut, weil es zu diesen Fehlern kommt:

    Zitat

    [mp4 @ 02375a20] pts has no value


    und das oft.

    Im MPHC sieht man dann das viele Frames beim Abspielen ausgelassen werden -> Ruckeln...

    Im Netz findet man auch häufig diesen Fehler beschrieben. z.B.:
    http://superuser.com/questions/7100…-no-value-error

    Lösung soll sein: -fflags +genpts (als erstes, noch vor -i zu setzten)
    Damit ist der Fehler zwar weg, aber das abspielen ruckelt weiter, wegen ausgelassener Frames.

    Nehme ich die selbe Datei und jage sie durch AviDemux (Video mit copy), dann ist alles ok. Aber avidemux_cli.exe zu nutzten ist eine Qual.
    Mit libav ist es das selbe :(

    Ideen?

  • Hatte ich auch schon nach geschaut. Doch er erkennt das Source Video nicht richtig:

    Code
    MPEG-4 Video import - 0 x 0 @ 25.0000 FPSIndicated Profile: Simple Profile @ Level 1Import results: 0 VOPs (0 Is - 0 Ps)Converting to ISMA Audio-Video MP4 file...[ISMA convert] Adjusting visual track size to 0 x 0Saving test.mp4: 0.500 secs Interleaving

    Batch sieht so aus:

    Code
    mp4box.exe -keepsys -isma -add "%~1" -new "%~n1.mp4"


    Ohne -keepsys -isma ist es ebenfalls unbrauchbar.

  • Gut, die Besonderheiten eines ISMA-Formates kenne ich nicht. Anscheinend geht es da ums Streaming über Netzwerke. Das ist schon ein ganz anderes Problem als das Abspielen einer lokalen Datei.

    In einer aktuellen MP4Box (GPAC version 0.5.1-DEV-rev5158) hat der Parameter "-keep-sys" noch ein Minus in der Mitte.

  • ffmpeg aktuell? ältere ffmpeg hatten große Probleme mit dem MP4 Container.

    Wandel die Datei mal mit mkvmerge in ein MKV um, um zu sehen, welche Fehlermeldungen mkvmerge auswirft. Vielleicht hilft die Fehlermeldung weiter.
    Viele Probleme repariert mkvmerge automatisch selbst, du kannst also auch die erzeugte mkv mittels ffmpeg in mp4 umwandeln und sehen, ob mkvmerge für dich das Problem löst.

    zu mp4box:
    wenn ich mp4box mit einer "fehlerhaften" (z.B: Player spielt sie nicht) mp4 Datei füttere, kommt wieder ne "fehlerhafte" MP4 Datei raus.
    Splitte ich die Streams aber vorher in raw Streams auf und füttere mp4box damit, spielt die erzeugte MP4 nahezu jeder Player.

    Gibt also große Unterschiede, ob ich MP4Box mit einer MP4 Datei oder den raw Streams versorge.

  • Zitat

    Splitte ich die Streams aber vorher in raw Streams auf und füttere mp4box damit, spielt die erzeugte MP4 nahezu jeder Player.


    Wesentlicher Unterschied: Alles Timecodes gehen verloren, wenn diese nicht auch extrahiert und wieder mit gemuxed werden.

  • Timecodes sind bei mir egal...

    Wie kann ich denn aus einem .m4v ein .raw machen? Auch mit ffmpeg? Also ffmpeg.exe -i foo.m4v -vcodec copy foo.raw ???

  • Splitte ich die Streams aber vorher in raw Streams auf und füttere mp4box damit, spielt die erzeugte MP4 nahezu jeder Player.

    Ja, das funktioniert und die pts has no value Fehler sind weg:

    Code
    ffmpeg.exe -i FooBar.m4v -vcodec copy FooBar.h264
    mp4box.exe -add FooBar.h264 -new FooBar.mp4

    Umständlich und erstmal ohne Audio, aber schon mal eine Brauchbare Lösung.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!