So konvertieren Sie einen 3D-Film mit ffmpeg in 2D

Ich suche nach einer Möglichkeit, einen 3D-Film in einen 2D-Film umzuwandeln.

Ich habe in diesem Forum einen Hinweis gefunden. http://www.ffmpeg-archive.org/How-to-re-encode-3d-video-to-2d-video-td4676271.html

Antworten (3)

Während Sie dies möglicherweise durch manuelle Verwendung des Crop - Filters von ffmpeg erreichen können, wurde der Stereo3D-Filter speziell für diesen Zweck entwickelt. Sie haben nicht das genaue 3D-Format angegeben, das Sie haben. Es gibt mehrere Möglichkeiten, wie im obigen Stereo3D-Link dokumentiert. Angenommen, input.mkvdies ist das relativ häufige sbsl (linkes Auge nebeneinander links),

ffmpeg -i input.mkv -vf stereo3d=sbsl:ml -metadata:s:v:0 stereo_mode="mono" output.mkv

ergibt ein 2d (nur linkes Auge) output.mkv. Ich glaube, der Grund -metadata:s:v:0 stereo_mode="mono"für das Entfernen des Stereo-Tags liegt darin, dass die Metadaten nicht durch das Filtersystem geleitet werden und ffmpeg ansonsten versucht, die Metadaten des Originals zu duplizieren. Wenn Sie dies nicht tun, denken einige Spieler möglicherweise, dass Ihr 2D-Ergebnis immer noch 3D ist, und machen seltsame Dinge.

Wenn Sie feststellen, dass das Ergebnis das falsche Seitenverhältnis hat, können Sie stereo3d=sbsl2:mlstattdessen damit experimentieren, dass die Eingabe als Seite-an-Seite in halber Breite behandelt wird. Wenn alles andere fehlschlägt, können Sie das richtige Seitenverhältnis mit einstellen -aspect 16:9(oder wie auch immer Sie das richtige Seitenverhältnis kennen).

Können Sie die Stereo3D-Filteroption erklären, die Sie hier verwenden? Ich verstehe aus der ffmpeg-Dokumentation, dass sbsl Seite an Seite parallel bedeutet (linkes Auge links, rechtes Auge rechts), aber was bedeutet das: ml? Ich kann diese Informationen nicht finden.
Die Syntax ist stereo3d=<input-format>:<output-format>. Gemäß der verknüpften Dokumentation mlbedeutet dies, "Mono-Ausgang (nur linkes Auge)" auszugeben.
Ich habe Fehler beim Versuch, -metadata:s:v:0 stereo_mode="mono"mit ffmpeg 2.8.14 zu verwenden. Anscheinend hat sich die Dokumentation geändert, seit Sie diese Antwort geschrieben haben. Durch einfaches Entfernen der oben genannten Schalter konnte ffmpeg ohne Fehler fortgesetzt werden. Beachten Sie, dass Sie die Neucodierung des Audiostreams vermeiden können, indem Sie den -c:a copySchalter verwenden.

Ich habe in diesem Forum einen Hinweis gefunden. http://www.ffmpeg-archive.org/How-to-re-encode-3d-video-to-2d-video-td4676271.html

ffmpeg -i './a3dmovie.mp4'  -vf "crop=w=iw/2:h=ih:x=0:y=0,scale=w=2*iw:h=ih,setdar=2" -y ./a2dmovie.mp4

Der wichtige Teil ist die-vf "crop=w=iw/2:h=ih:x=0:y=0,scale=w=2*iw:h=ih,setdar=2"

Es halbiert im Wesentlichen die Ausgabe und skaliert entsprechend für das 3D-Video.

Ich fand, dass dies auch nützlich ist, um die Ausgabe zu testen und zu überprüfen

ffplay -i ./some3dmovie.mp4  -vf "crop=w=iw/2:h=ih:x=0:y=0,scale=w=2*iw:h=ih,setdar=2" 

Sie können den Index wie folgt an den Anfang der Datei verschieben-movflags faststart

Als Adaption von Kevmitchs Antwort ging ich mit

ffmpeg  -i "foo.mkv" -vf stereo3d=sbs2l:ml -c:a copy "bar.mp4"

Bemerkenswerter Unterschied: Es verwendet sbs2l(anstelle von sbsl2 ) und kopiert nur Audiostreams (funktioniert bei mir). Weiterführende Literatur zu stereo3d