2016-05-01 3 views
1

私は上に他のものを重ねるために使うことができる緑のスクリーンの背景を作ろうとしています。私はthis answerからの情報を使用して、次のコマンドを使用しています:ffmpegで緑のスクリーンの背景を作る

ffmpeg -f lavfi -i color=color=green -s 1920x1080 -t 3600 -r 60 small_green.mp4 

私はQuickTimeの中でそれを開いたときただし、インスペクタウインドウは、それが実際に1440x1080の代わりに、1920×1080だと言っているように見えます。

enter image description here

そして、私はVLCにそれを持って来るとき、それは1920x1090 enter image description here

しかしffprobe、それは1920×1080だと言っているように見えるということを言っているように見える:

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'small_green.mp4': Metadata: 
    major_brand  : isom 
    minor_version : 512 
    compatible_brands: isomiso2avc1mp41 
    encoder   : Lavf56.36.100 Duration: 01:00:00.00, start: 0.000000, bitrate: 40 kb/s 
    Stream #0:0(und): Video: h264 (High) (avc1/0x31637661), yuv420p, 1920x1080 [SAR 3:4 DAR 4:3], 34 kb/s, 60 fps, 60 tbr, 15360 tbn, 120 tbc (default) 
    Metadata: 
     handler_name : VideoHandler 

そしてIそれをGarmin VIRB Editに持ってくると、1440x1080と報告します。では、どうすればffmpegが本当にHD 1920x1080解像度のビデオを吐き出すのですか?

答えて

2

FFmpegソースフィルタは、指定されていない場合に出力されるデフォルトサイズを持ちます。カラーフィルタの場合は320x240です。 scale引数はカラーフィルタの出力を1920x1080にリサイズしますが、ffmpegはソースアスペクト比(この場合は4:3)を保持したいと考えています。つまり、ファイルに書き込む表示のアスペクト比です。 4:3の比率を持つ1920x1080のビデオは効果的に1440x1080です。これがQTのレポートです。

カラーで直接サイズを設定する(または後で正しいアスペクト比を設定する)必要があります。

ffmpeg -f lavfi -i color=color=green:s=1920x1080 -t 3600 -r 60 small_green.mp4 
+0

「-s 1920x1080 -aspect 16:9」とは違いますか? –

+1

'-s'は色が生成された後にスケーラを挿入しますが、color内で指定されたサイズはカラーフィルタの出力サイズを設定します。つまり、前者は4'x6 'の写真を印刷してから8'x12 '、後者は元の印刷物を8'x12'で実行しています。この特定の場合、均一なベタのカラービジュアルの場合、品質には影響しませんが、スケーラはフィルタによって生成されるアスペクト比(4:3)を継承し、望ましくない結果につながります。アスペクトスイッチは、アスペクトフラグをビデオストリームではなくコンテナに設定します。いくつかの選手はそれを尊重し、そうでない人もいる。 – Mulvya

関連する問題