WMV(v9(WMV3)、960x720、30.000030 fps、プレーナ4:2:0 YUV、PowerPoint 2010で作成)ファイルを取得し、それをMPEG2に変換する必要があります-TVセットがUSBフラッシュドライブから読み取ることができる唯一の形式(私はMP4/h.264、AVI/XVIDも試しました。MPEG2以外は機能しません)。
簡単に仕事になんとかしました
ffmpeg -i "in.wmv" -c:v mpeg2video "out.mpg"
しかし、結果の品質は恐ろしく(はっきりと見える視覚的な歪みが導入されます)、再生はスムーズではありません(ある時点で遅すぎる)。
私も試しました
ffmpeg -i "in.wmv" -c:v mpeg2video -pix_fmt yuv420p -me_method epzs -threads 4 -r 30.000030 -g 45 -bf 2 -trellis 2 -cmp 2 -subcmp 2 -s 960x720 -b 2500k -bt 300k -async 1 -y "out.mpg"
(私はこれをインターネットのどこかで見つけて少し修正しました-魂の変化、リフレッシュレート、および出力形式(VOBからMPGへ)から)を正常に変更しましたが、品質はまだ高すぎます悪い。
できるだけ多くの品質を保存するには、どのパラメーターを使用する必要がありますか?圧縮率はまったく問題ではなく、ファイルサイズの増加も許容されます。
私が実際に必要とするもの(具体的にしすぎるのを避けるために、質問のタイトルには含めないことにしましたが、回答で考慮されることを歓迎します)は、サウンドトラックとして純粋な沈黙を追加しています-サウンドはありませんオリジナルですが、テレビはそれについて不満を言っています。この不満を取り除きたいのですが。私はAudacityを使用して同じ長さ(2番目の精度)の沈黙OGG Vorbisファイルを生成しましたが、それをビデオとマージすることができません。
ffmpeg -i in.mpg -i silence.ogg -c:v copy -c:a libmp3lame out.mpg
そして裸でさえ
ffmpeg -i in.mpg -c:v copy -out.mpg
「バッファアンダーフロー」および「パケットが大きすぎます」エラーが発生します。 (in.mpgは、質問の最初の2つのコマンドを使用して、同じFFMPEGバイナリと同じソースWMVファイルによって生成されたファイルです)。
Windows 7でZeranoe FFMPEGビルドを使用しています。
問題は、MPEG-2のデフォルトのビットレートがかなり低いことです(ffmpegの他のほとんどのビデオエンコーダーと同様、H.264は例外です)。 MPEG-2は、最近のコーデックとしても最適ではありません。
MPEG-2を使い続ける場合は、いくつかのオプションがあります。
ビットレートを上げます。現在-b:v 2500k
を使用しています。 HDビデオの場合、2.5 MBit/sで十分です。結果を美しく見せるためには、少なくとも2倍以上が必要です。たとえば、-b:v 6000k -target pal-dvd
を使用します。
720pの場合は、より高いビットレートを使用する必要があると思います。 DVDはMPEG-2を使用し、2時間の映画で約4.7 GBになるので、最終的には約5〜8 MBit /秒になります。 MPEG-2は実際には非常に圧縮効率がよくなく、ビットレートが高いほどうまく機能します。
特定の品質設定を使用します。 -b:v …
を-qscale:v 2
に変更します。ここでの数値の範囲は1〜31であり、高いほど品質が低くなります。 4または5を超える意味はありません。ビットレートが気にならない場合は、2から始めて、それがうまくいくかどうかを確認してください。
Bフレームの数、モーション推定法、またはGOPサイズをいじると、品質が少し微調整される可能性がありますが、大きな変化にはなりません。
サイレントオーディオストリームを生成するには、-f lavfi -i aevalsrc=0
を使用します。例えば:
ffmpeg -i "in.wmv" -f lavfi -i aevalsrc=0 -shortest -c:v mpeg2video -qscale:v 2 -c:a libmp3lame "out.mpg"
上記のコマンドに-target pal-dvd
を追加して、特定のバッファサイズを強制する必要がある場合があります。
コーデックとしてMP3を選択しました。 MPEGファイルには、MPEGレイヤーIおよびII以外のオーディオとPCMストリームを含めることはできません。そのため、オーディオストリームも変換しない限り、サイレントOgg Vorbisファイルを使用しても機能しません(これは、-c:a copy
を使用している場合とは異なります) )。
ビデオファイルを再生するテレビがMPEG-2を読み取るだけで、それ以外は読み取れないことに驚いています。少なくとも MPEG-4パートIIビデオ がサポートされている必要があります( "DivX"として知られていること– an MPEG-4パートIIエンコーダー)。 :
ffmpeg -i "in.wmv" -f lavfi -i aevalsrc=0 -shortest -c:v libxvid -qscale:v 2 -c:a libmp3lame "out.mp4"
お使いのテレビは実際にはH.264もサポートしている可能性がありますが、特定のプロファイルのみです。 baseline
プロファイルを使用してみてください。例:
ffmpeg -i "in.wmv" -f lavfi -i aevalsrc=0 -shortest -c:v libx264 -profile:v baseline -crf 23 -c:a aac -strict experimental "out.mp4"
上記の例では、qscale
ではなくCRFオプションを使用して品質を設定しています。詳細は H.264エンコーディングガイド を参照してください。
ファイルサイズが問題にならない場合は、ビットレートを上げてみてください。
Ffmpegを使いたくなるかもしれないサイレントオーディオについては、Audacityについて十分な知識がなく、コメントを付けることはできません。私は以前これを使用しました。
ffmpeg.exe -f lavfi -i aevalsrc=0:0::duration=YOUR_DESIRED_DURATION -ab 10k YourAudioName.aac
Mpgコンテナーを使用しているため、これは機能しません。試してみてください。(mp3コンテナー)
ffmpeg.exe -f lavfi -i aevalsrc=0:0::duration=YOUR_DESIRED_DURATION -ab 10k YourAudioName.mp3
それは私にはうまくいったようです。