ubuntuusers.de

ffmpeg Videos ruckeln

Status: Gelöst | Ubuntu-Version: Kein Ubuntu
Antworten |

anonumouus

Anmeldungsdatum:
3. Juni 2010

Beiträge: 184

Hallo,

ich habe festgestellt, dass Videos, die ich mit ffmpeg mit den Optionen -ss und -t geschnitten habe im VLC-Player ruckeln. Der Mplayer (bzw. SMPlayer) spielt sie einwandfrei ab. Wie kann ich feststellen wo in den Videos der Fehler ist.

Oder hat vielleicht jemand eine Ahnung woran das liegen könnte und wie man die Videos umwandeln kann damit sie nicht mehr ruckeln?

Edit: Außerdem ist mir aufgefallen, dass im VLC-Player große Pixel oder Artefakte oder wie man das nennt auftreten. Das sieht so aus, als hätte man den Film zu stark komprimiert. Im SMPlayer sind diese allerdings nicht in dem Maße zu sehen.

Edit 2: Komisch, wenn ich das Video nochmal mit mencoder neu verpacke läuft es:

 mencoder video.mp4 -ovc copy -oac copy -of lavf -o video2.mp4

Ich dachte immer mencoder würde die Bibliothek von ffmpeg nutzen. Mit ffmpeg neu zu verpacken hilft nicht. Kennt vielleicht einer den Grund dafür? Gibt es Parameter für ffmpeg die da helfen?

Edit 3: Wenn ich das ganze mit mencoder neu muxe ruckelt es im Quicktime Player, was vorher nicht der Fall war. Gibt es denn keine Software, die ein Video wirklich fehlerfrei muxen kann, sodass es in allen namenhaften Playern flüssig läuft?

anonumouus

(Themenstarter)

Anmeldungsdatum:
3. Juni 2010

Beiträge: 184

Habe jetzt nochmal versucht das ganze mittels MP4Box zu machen

 MP4Box -add film.mp4 filmout.mp4

Hier laggt das ganze wieder im VLC-Player. Kennt sonst jemand ein Programm, dass Filme so muxen kann, dass man sie in allen namenhaften Playern abspielen kann.

Ich meine es kann ja nicht sein, dass es unter Linux solch ein Tool nicht gibt. Bis jetzt habe ich keine Alternative zu ffmpeg, mencoder und MP4Box gefunden.

Edit: Was mir auch aufgefallen ist, ist dass beim VLC steht Bildwiederholrate: 24.999473 und beim smplayer und ffmpeg 25 fps.

anonumouus

(Themenstarter)

Anmeldungsdatum:
3. Juni 2010

Beiträge: 184

Mmmh, ich denke es hat irgendwie mit der Bildwiederholrate zu tun. Bei der mit dem mencoder neu gemuxten Datei wird diese vom VLC auch mit 25 fps erkannt und flüssig abgespielt. Bei den anderen Dateien, wo VLC was mit 24.99 ausgibt ruckelt es. Ich habe jetzt probiert mit ffmpeg mit -r 25 die fps auf 25 zu setzen. Doch VLC sagt weiterhin es sind 24.99... und es ruckelt. Bei MP4Box auch das gleiche mit -fps 25. Es muss ja eigentlich möglich sein die fps auf 25 setzen zu können.

anonumouus

(Themenstarter)

Anmeldungsdatum:
3. Juni 2010

Beiträge: 184

Ich habe gerade nochmal geguckt und es gibt bei dem Video das läuft und bei dem das nicht läuft Unterschiede im tbn Wert, den ffmpeg ausgibt. Weiß nicht genau was das bedeuten soll. Im Netz gefunden habe ich: tbn = the time base in AVStream that has come from the container

Zacharias

Avatar von Zacharias

Anmeldungsdatum:
29. November 2006

Beiträge: Zähle...

Hast das ganze mal mit avconv versucht? Ist ein Fork von ffmpeg und wird glaub ich unter Ubuntu ... "bevorzugt". Wenn ich mich nicht irre dann bei den ganzen Debianbasierten Distros.

Hier mal ein Weblink zu der Bibliothek ...

http://libav.org/

In der Wiki:

Libav

Ich verwende avconv jetzt schon eine ganze Weile und bin doch recht zufrieden. Die neuste Version hat zudem recht nette Filter. Vielleicht könnte das ja was für dich sein.

Zu deinem Problem. Die Infos sind recht dürftig ... und mit ffmpeg, geschweige denn mencoder oder mp4box, kenn ich mich nicht aus. Aber hast du vllt mal versucht das ganze in einen anderen Container zu packen. Also zum Beispiel in mkv?... Kenne jetzt nicht die die mp4 spezifikationen im Detail, aber das wäre was, was ich mal checken würde.

mrkramps Team-Icon

Avatar von mrkramps

Anmeldungsdatum:
10. Oktober 2006

Beiträge: 5523

Wohnort: south central EL

Du kannst es mal mit der Option -vsynch versuchen. Siehe Manpage für die Erklärung der einzelnen Parameter für diese Option.

anonumouus

(Themenstarter)

Anmeldungsdatum:
3. Juni 2010

Beiträge: 184

In einem mkv-Container ändert sich auch nichts. Die Option -vsync hat mit keinem Parameter etwas geändert. avconv gibt es in meiner Distro nicht. Aber die Dateien, die ich einmal unter Ubuntu mit avconv erstellt habe, leiden unter dem gleichen Fehler.

Ich werde den Verdacht nicht los, dass es sich um einen Fehler des VLC-Players handelt, auch wenn er die mit mencoder gemuxte Datei abspielt. Schließlich sehen die Filme im VLC-Player auch so verpixelt aus. Mir geht es eigentlich nur darum, dass die Video Dateien auch wirklich „heile“ sind.

Ich vermute es hat auch irgendwie mit den Optionen -ss und -t zu tun, da nicht geschnittene Filme ja laufen. Auch wenn sie im VLC verpixelt aussehen.

Zacharias

Avatar von Zacharias

Anmeldungsdatum:
29. November 2006

Beiträge: 161

Jetzt muss ich noch mal nachhaken .. nicht geschnittene Filme sind im VLC bereits verpixelt?

anonumouus

(Themenstarter)

Anmeldungsdatum:
3. Juni 2010

Beiträge: 184

So wie es scheint sind nicht geschnittene auch verpixelt. Es handelt sich wohl um zwei unterschiedliche Fehler. Das verpixelte liegt vermutlich am VLC. Aber das laggen vielleicht am Video, weil nicht geschnittene nicht laggen.

anonumouus

(Themenstarter)

Anmeldungsdatum:
3. Juni 2010

Beiträge: 184

Also ich habe zum Test nochmal die Dateien mit mkvmerge nach mkv konvertiert. Das hat zwar auch nichts am ruckelt geändert, aber wenn ich die Datei, die der mencoder erzeugt hat und welche im VLC läuft versuche zu muxen kommt die Fehlermeldung:

Warnung: 'test.mp4' Track 0: Dem AVC-Video-Track fehlt das 'CTTS'-Element, das die Zeitstempeloffsets enthält. Dieses wird für AVC-Video-Tracks benötigt, weil diese mehr als zwei Referenz-Frames enthalten können und deshalb die Zeitstempel für solche Frames nicht sortiert sind. Der Inhalt des 'CTTS'-Elements wird benötigt, um diese Zeitstempel richtig zu berechnen. Da es fehlt werden die Zeitstempel vermutlich falsch sein. Sie sollten sich die Ausgabedatei genau ansehen und sicherstellen, dass sie wie erwartet aussieht.

Bei der mp4-Datei die ich ohne mencoder erzeugt hatte kam das nicht.

VLC scheint also irgendein Problem mit den Zeitstempeln zu haben und spielt die Datei nur flüssig, wenn diese falsch sind. Das klingt irgendwie Paradox.

Kennt jemand vielleicht eine Möglichkeit bzw. ein Programm um die Zeistempel zu reparieren.

anonumouus

(Themenstarter)

Anmeldungsdatum:
3. Juni 2010

Beiträge: 184

Ok, ich habe jetzt die Ursache und Lösung des Problems gefunden. Die Dateien die ich konvertieren wollte waren Avis von onlinetvrecorder.com. H.264 in Avi ist natürlich nicht konform, was die Ursache für die Probleme ist. Wenn man nämlich mit ffmpeg die Avi in eine mp4 verwandelt treten die Fehler auf

pts has no value

Um das zu verhindern nutzt man entweder mkvmerge und verwandelt das ganze zunächst in eine mkv-Datei, oder man nimmt die kaputte mp4-Datei, die man mit ffmpeg erzeugt hat, und extrahiert mit MP4Box die einzelnen Spuren mittels

 MP4Box film.mp4 -raw 1

 MP4Box film.mp4 -raw 2

. Dann muxt man sie wieder, wobei Mp4box automatisch die Framerate von 25 wählt, die in diesem Fall auch passt:

 MP4Box -add video.h264 -add audio.mp3 fertiger_film.mp4

Meine Versuche mit MP4Box sind deshalb fehlgeschlagen, weil ich einfach neu gemuxt habe:

 MP4Box -add film.mp4 neuer_immernoch_kaputter_film.mp4

Dabei übernimmt er aber anscheinend die Angaben des alten Containers. Wenn die Datei kaputt ist, geht es mit Mkvmerge nicht nachträglich. Das hätte man vorher machen müssen.

Edit: Man kann auch anscheinend direkt aus Avi demuxen

MP4Box -aviraw video film.avi -out video.h264
MP4Box -aviraw audio film.avi -out audio.mp3
Antworten |