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

Antworten:

9

Während Sie dies möglicherweise durch manuelles Verwenden 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 verschiedene Möglichkeiten, wie unter dem obigen Stereo3D-Link dokumentiert. Angenommen, dies input.mkvist das relativ häufige sbsl (linkes Auge links nebeneinander),

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

führt zu einem 2d (nur linkes Auge) output.mkv. Ich glaube, der Grund -metadata:s:v:0 stereo_mode="mono"für das Entfernen des Stereo-Tags ist, dass die Metadaten nicht durch das Filtersystem geleitet werden und ffmpeg andernfalls 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 tun seltsame Dinge.

Wenn Sie feststellen, dass das Ergebnis das falsche Seitenverhältnis aufweist, können Sie stereo3d=sbsl2:mlstattdessen versuchen, die Eingabe als halbe Breite nebeneinander zu behandeln. Wenn alles andere fehlschlägt, können Sie den richtigen Aspekt mit einstellen -aspect 16:9(oder was auch immer Sie das richtige Seitenverhältnis kennen).

kevmitch
quelle
1
Können Sie die Stereo3d-Filteroption erklären, die Sie hier verwenden? Ich verstehe aus der ffmpeg-Dokumentation, dass sbsl nebeneinander parallel bedeutet (linkes Auge links, rechtes Auge rechts), aber was bedeutet: ml? Ich kann diese Informationen nicht finden.
Elder Geek
Die Syntax lautet stereo3d=<input-format>:<output-format>. Bedeutet gemäß der verknüpften Dokumentation mldie Ausgabe von "Mono-Ausgabe (nur linkes Auge)".
Kevmitch
Beim Versuch, es -metadata:s:v:0 stereo_mode="mono"mit ffmpeg 2.8.14 zu verwenden, sind Fehler aufgetreten. Es scheint, dass sich die Dokumentation geändert hat, seit Sie diese Antwort geschrieben haben. Durch einfaches Entfernen der oben genannten Schalter konnte ffmpeg fehlerfrei fortgesetzt werden. Beachten Sie, dass Sie die Neucodierung des Audiostreams mithilfe des -c:a copySchalters vermeiden können .
Elder Geek
1

Ich habe eine Referenz in diesem Forum 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 der -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 dem 3D-Video neu.

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

Nelaaro
quelle