web-dev-qa-db-ja.com

最終サイズを設定してビデオを変換する

Ffmpeg(または他のCLIベースのビデオコンバーター)を使用してビデオ変換の最大最終サイズを設定する方法はありますか?

100MBのビデオがあり、最高品質可能の10MBのビデオに変換したい場合、最終的なフォーマットを考慮することは重要ではありません。

2
Asme Just

100mbから10mbに行くと、わずかに非現実的です90%サイズが低下しますが、50mbに縮小してH.264ビデオを作成する例を示しますより合理的なサイズを50%削減し、HEVCを使用して40mbに削減します。

次のサンプルファイルを使用しています。

wget http://dl3.h265files.com/TearsOfSteel_720p_h265.mkv

このサンプルファイルを使用して、次の結果を確認することができます。おそらくexperimentをもう少し進めてください。 MediaInfoは、このダウンロードされたファイルについて次のことを明らかにします。

mediainfo \
--Inform="General;Duration=%Duration/String3%\nFile size=%FileSize/String1%" \
TearsOfSteel_720p_h265.mkv
Duration=00:12:14.058   <-----
File size=101 MiB       <-----

もちろん矢印は私自身のものです!その場合、おそらく2つの適切な選択肢があります。

  1. H.264に再エンコードする
  2. HEVCに再エンコードする

1。 H.264(50mb)に再エンコード

H.264は現在広く受け入れられており、出力ビデオファイルに最適です。目的の50MBの出力ビットレートを計算する式は次のとおりです。

(50 MiB * 8192 [converts MiB to kBit]) / 734 seconds = ~558 kBit/s total bitrate
558 - 128 kBit/s (desired audio bitrate) = 430 kBit/s video bitrate

これを実現するには、次のFFmpeg 2 passコマンドを使用します。

ffmpeg -y -i TearsOfSteel_720p_h265.mkv \
      -c:v libx264 -b:v 430k -pass 1 \
      -c:a libmp3lame -b:a 128k -f mp4 /dev/null && \
ffmpeg -i TearsOfSteel_720p_h265.mkv \
       -c:v libx264 -b:v 430k -pass 2 \
       -c:a libmp3lame -b:a 128k TearsOfSteel_smaller.mp4

結果のファイルサイズは49.4MiBで、非常に合理的ですが、驚くほどの表示品質ではありません。ファイルサイズを50%削減し、実際にビデオビットレートをhuge低下させるのにかなり良いです!

2。 HEVC(40mb)に再エンコード

別の選択肢(emk2203で示唆されている)は、既存のHEVCストリームをより低いビットレートで再エンコードすることです。今回は、HEVCがより低いビットレートでより良い品質を要求するため、40MBを目指します

今回は、式は次のようになります。

(40 MiB * 8192 [converts MiB to kBit]) / 734 seconds = ~446 kBit/s total bitrate
446 - 128 kBit/s (desired audio bitrate) = 318 kBit/s video bitrate

fFmpeg 2パスのコマンドラインは次のとおりです。

ffmpeg -y -i TearsOfSteel_720p_h265.mkv \
      -c:v libx265 -x265-params pass=1 -b:v 318k \
      -c:a libmp3lame -b:a 128k -f mp4 /dev/null && \
ffmpeg -i TearsOfSteel_720p_h265.mkv \
       -c:v libx265 -x265-params pass=2 -b:v 318k \
       -c:a libmp3lame -b:a 128k TearsOfSteel_smaller.mp4

そしてこれにより、非常に合理的な品質の40mbファイルが提供されます。

結論:

これらの例から、数式で必要なMiBを減らし、その後の表示品質を観察することで、さらにexperimentできます。楽しんで!!

参照:

7
andrew.46

はい。ビデオコーデック(x264は汎用性の高いもの)を選択し、解像度を選択します。ほとんどの設定はデフォルトのままにしますが、平均ビットレートを設定して2パス変換を行います。

ビデオ圧縮のクイックレッスン:ビデオ全体でビデオの複雑さが変化するため、全体を通して同じ視覚品質レベルに圧縮すると、実際のビットレートは上下に変動します。固定ビットレートに圧縮すると、ビットレートが低すぎるため、および/または使用されるビットレートが低複雑度の部分に対して高すぎるため、高複雑度のビットでは品質が悪くなります。そのため、可能な限り一定の品質を目指し、ビットレートを変動させます。しかし、コンプレッサーが特定のファイルサイズを目指している場合、まだ変換されていない部分でビデオの複雑さが上下するかどうかはわからないため、人々は特定のファイルサイズ。

出力をビットレートとして指定する必要があります(オーディオとビデオ、およびコンテナにはわずかなオーバーヘッドがあります)。そのため、ファイルサイズと期間をビットレートに変換する計算機が必要です。

0
thomasrutter