ffmpegでh.264プロファイルレベルを設定するにはどうすればよいですか?


16

Macで問題なく再生するムービー(m4v / h.264 / AAC)を持っていますが、最近Apple TV3で再生できないことがわかりました。このムービーファイルのプロパティを見ると、プロファイルはHigh@4.1ですが、Apple TV3はHigh@4.0までしかサポートしていません。このビデオに互換性がない唯一のプロパティは最大ビデオビットレートであると思います。他のプロパティはすべて、High @ 4.0でサポートされているように見えます。

ffmpegを使用してこのビデオをHigh@4.0にダウングレードするにはどうすればよいですか?

または、このビデオを4.0ではなく4.1にする実際のプロパティ(最大ビットレート)を代わりに変更する必要がありますか?ビットレートを変更するだけでは、ファイルはHigh@4.0と互換性がありますが、High @ 4.1として「タグ」が付けられているため、Apple TV3で再生できません。

回答:


22

でエンコードする場合libx264、H.264プロファイルとレベルを次のように設定できます。

  • -profile:v-のいずれかhighmainまたはbaseline(その他は、これはここでは無関係です)
  • -level:v– H.264規格の附属書Aで定義されているとおり4.0

例えば:

ffmpeg -i input.mp4 -c:v libx264 -profile:v high -level:v 4.0 -c:a copy output.mp4

ここでは、影響を受けないため、オーディオストリームをコピーしました。

出力のメタデータには、正しいプロファイルとレベルが設定されています。エンコード中にこれを確認できますx264

[libx264 @ 0x7fb26103a000] profile High, level 4.0

MediaInfoは、コンテナとコーデックの詳細の分析にも役立ちます。

もちろん、損失のある変換を再度適用する場合、ビデオを再エンコードすると品質がある程度低下します。-crf一定の品質パラメーターに影響するオプションを設定してみてください。ここでのデフォルト値は23ですが、18〜28の間の値は正常と見なされます。低いほど品質が向上します。入力のビットレートが最大65,000 kBit / sである場合、変換後もかなり良く見える可能性があります。


1
それはうまくいきました。残念ながら、一部のメタデータは失われましたが、実際のビデオには目立った品質の変化はありませんでした。興味深いことに、次のコマンドは同じことを達成したでしょうか?ffmpeg -i input.mp4 -vcodec x264 -vprofile high -vlevel 4.0 -acodec copy output.mp4
サム

はい、-vオプションはオプションのエイリアスです:v。どのメタデータを失いましたか?
slhck

失われたのはアートワークだったのではないかと思います。それが技術的にメタデータと見なされるかどうかわかりません...アートワークは実際にファイル内に含まれていますか?全体を再度追加する前に、他のすべてをチェックしませんでした。
サム

現在、同様の問題を持つ別のファイルがあります。間違ったプロファイルレベルですが、残りの仕様は必要なレベル(4.0)と互換性があるようです。上記のコマンドを使用する場合、入力されたプロファイルレベルと互換性がない場合を除き、データは変更されませんか?基本的に、ffmpegがどのプロファイルとレベルであるかを示すタグ以外のデータに触れないようにします。それは可能ですか、それともすべての値(硝酸塩、フレームレートなど)をプリセット値に設定しますか?
サム

2
私はこれを達成する方法を見つけました。Sublerには、実際にビデオストリームを選択するときに、プロファイルとレベルを変更して特定のデバイスと互換性を持たせるオプションがあります。ビデオが設定しているプロファイルと互換性があることを確認するように指示するので、再エンコードは行わないと思います。メタデータを変更するだけです。
サム

1

コメントを参照して、次のコマンドを試してください。

ffmpeg -i input.mp4 -map 1 -c:v libx264 -profile:v high -level:v 4.0 -c:a copy \
# copies all global metadata from input.mp4 to output.mp4
-map_metadata 0 \
# copies video stream metadata from input.mp4 to output.mp4
-map_metadata:s:v 0:s:v \
# copies audio stream metadata from input.mp4 to output.mp4
-map_metadata:s:a 0:s:a \
output.mp4

乾杯

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