ffmpegを使用して3Dムービーを2Dに変換する方法


回答:


9

ffmpegのクロップフィルターを手動で使用してこれを実現できる場合もありますが、stereo3dフィルターはこの目的のために特別に設計されています。あなたが持っている正確な3Dフォーマットを指定しませんでした。上記のstereo3dリンクで説明されているように、いくつかの可能性があります。それinput.mkvが比較的一般的なsbsl(左側に並んだ左目)であると仮定すると、

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

2d(左目のみ)になりoutput.mkvます。-metadata:s:v:0 stereo_mode="mono"ステレオタグを削除する必要がある理由は、メタデータがフィルターシステムを介してパイプ処理されないためであり、ffmpegがオリジナルのメタデータを複製しようとするためです。これを行わない場合、一部のプレイヤーは2Dの結果が3Dであると考え、奇妙なことをすることがあります。

結果のアスペクト比が間違っていることがわかった場合は、stereo3d=sbsl2:ml代わりに入力を半分の幅として並べて使用することを試すことができます。他のすべてが失敗した-aspect 16:9場合は、正しいアスペクト比(または正しいアスペクト比がわかっているもの)を設定できます。


1
ここで使用しているstereo3dフィルターオプションについて説明していただけますか?私はffmpegのドキュメントから、sbslが並列(左目左、右目右)を意味することを理解していますが、:mlは何を意味していますか?その情報を見つけることができないようです。
オタク長老2017年

構文はstereo3d=<input-format>:<output-format>です。リンクされたドキュメントに従って、ml「モノ出力(左目のみ)」を出力することを意味します。
kevmitch

-metadata:s:v:0 stereo_mode="mono"ffmpeg 2.8.14で使用しようとするとエラーが発生しました。この回答を書いてからドキュメントが変更された可能性があります。前述のスイッチを削除するだけで、ffmpegはエラーなしで続行できます。-c:a copyスイッチを使用すると、オーディオストリームの再エンコードを回避できることに注意してください。
オタク長老

1

このフォーラムで参考文献を見つけました。 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

重要な部分は -vf "crop=w=iw/2:h=ih:x=0:y=0,scale=w=2*iw:h=ih,setdar=2"

それは本質的に出力を半分にし、3Dビデオに適切なように再スケーリングします。

これは出力をテストおよびチェックするのにも役立つことがわかりました

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

次のようにして、インデックスをファイルの先頭に移動できます -movflags faststart

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.