この記事の本文を始める前に、まず ffmpeg プログラムをインストールする必要があります (Linux では x264 エンコーディングもインストールする必要があります)。 Mac で brew を使用して直接インストールします。 brew ffmpeg をインストールします --with-faac --with-fdk-aac --with-ffplay --with-fontconfig --with-freetype --with-libass --with-libbluray --with-libcaca --with-libsoxr --with-libquvi --with-frei0r --with-libvidstab --with-libvorbis --with-libvpx --with-opencore-amr --with-openjpeg --with-openssl --with-opus --with-rtmpdump --with-schroedinger --with-speex --with-theroa --with-tools --with-x265 インストール後、ffmpeg コマンドを使用して MP4 ファイルを圧縮できます。 ffmpeg -i MVI_7274.MOV -vcodec libx264 -preset fast -crf 20 -y -vf "scale=1920:-1" -acodec libmp3lame -ab 128k a.mp4 パラメータの説明は次のとおりです (https://vistb.net/2012/02/x264-video-compress-intro/ から変更)。 -preset: エンコード設定を指定します。 x264 エンコード アルゴリズムには、設定可能なパラメータが多数あります。パラメータ値が異なるとエンコード速度が大きく異なり、品質にも影響する場合があります。ユーザーがアルゴリズムを理解して手動でパラメータを設定する手間を省きます。 x264 はいくつかのプリセット値を提供しており、プリセットで指定できます。プリセットは、ultrafast、superfast、veryfast、faster、fast、medium、slow、slower、veryslow、placebo です。 Ultrafast はエンコード速度が最も速いですが、圧縮率が低く、生成されるファイルサイズが大きくなります。一方、Placebo はその逆です。 x264 で使用されるデフォルト値は medium です。プリセットは主にエンコード速度に影響し、エンコード結果の品質には大きな影響を与えないことに注意してください。 HD ムービーを圧縮する場合、通常は slow または slower を使用します。マシンの性能が非常に優れている場合は veryslow を使用できますが、通常、それほど大きなメリットはありません。 -crf: これは最も重要なオプションで、出力ビデオの品質を指定するために使用されます。値の範囲は 0 ~ 51 で、デフォルト値は 23 です。数値が小さいほど、出力ビデオの品質が高くなります。このオプションは、出力ビデオのビット レートに直接影響します。一般的に言えば、480p を圧縮する場合は約 20、720p を圧縮する場合は 16 ~ 18 を使用しますが、1080p は試していません。個人的には、通常の状況では 16 未満にする必要はないと考えています。最善の方法は、いくつかの値をそれぞれ数分間試して、最終的な出力品質とファイル サイズを確認し、ニーズに応じて選択することです。 実際、-b 1024k のようなパラメータもあるのですが、-crf が設定されると -b は役に立たないことがわかりました。私の簡単な試みによると、5D2 で撮影した 18 秒間の 1920x1080 ビデオ (午後の自然光、シンプルな画像、大きな白い壁、黒いドアが 1 つだけ) の crf と圧縮ファイル サイズの関係は次のとおりです。
crf が 20、28、32 のときのビデオ品質を比較したところ、32 でも品質が低下していることがわかりました。20 は確かに非常に優れていますが、28 と 20 の違いはそれほど大きくありません。crf 値を 26 ~ 28 に設定するのが適切です。サイズに要件がある場合は、そのままにしてデフォルト値 (おそらく 31) を使用できます。 また、プリセットに関して、低速と高速は実行時間のみに関係します。低速の実行時間は高速の実行時間よりもはるかに長くなります。低速で生成された mp4 ファイルは小さくなり (12M)、高速で生成されたファイルは大きくなります (14M) が、ビデオ品質の違いは明らかではありません。 元のビデオ サイズを 1920x1080 から 960x540 に縮小すると、ビデオ サイズは次のようになります。
まとめると、品質に対する要件が高い場合は 22 以下を選択します。サイズに対する要件が非常に高い場合は 26 を選択します (ただし、品質はわずかに低下します)。それ以外の場合は 24 の方がコスト効率が高く (またはデフォルトの 23 でも問題ありません)、サイズに対する要件が非常に高い場合は 28 以上を選択します。 追記(@gghyooより) 以下にいくつか例を挙げます。 ffmpeg -threads 2 -crf 20 -y -i ML-02.avi -strict 実験的 ML-02.mp4 要約する 上記はこの記事の全内容です。この記事の内容が皆さんの勉強や仕事に一定の参考学習価値を持つことを願っています。ご質問があれば、メッセージを残してコミュニケーションしてください。123WORDPRESS.COM を応援していただきありがとうございます。 以下もご興味があるかもしれません:
|
<<: MYSQLは、ショッピングカートに追加する際に重複追加を防ぐためのサンプルコードを実装します。
>>: CocosCreator システムイベントがどのように生成され、トリガーされるかについての詳細な説明
Dockerfileの作成yumソースを設定する cd /tmp/docker vim Docker...
この記事では、天気予報機能を実現するためのVueの具体的なコードを参考までに共有します。具体的な内容...
CSS のアニメーション部分は JS によってブロックされますが、transform のアニメーショ...
Docker の作成Docker Compose は、管理対象コンテナをプロジェクト、サービス、コン...
nGrinderとは何ですか? nGrinder は、スクリプトの作成、テストの実行、監視、結果レポ...
目次1. 電流制限アルゴリズム2. nginxの基礎知識4. 実戦要約する高並行性システムには、キャ...
以前は、角を丸くするのは非常に面倒でしたが、CSS3 では、角を丸くするのは非常に簡単になり、bor...
勉強や仕事で FTP サーバーを頻繁に使用する場合は、起動時に自動的に起動するように設定できます。設...
目次序文1. xinetdサービスに基づく起動管理(1)Telnetサービスのインストール(2)Te...
1. まず、次のパスに従って対応するフォルダを作成します。 ローカルのdockerでmysqlを実行...
mysql は期間内のすべての日付または月を取得します1: mysqlは期間内のすべての月を取得し...
目次1. サブルート構文2. 例1. 2つの新しいコンポーネントを作成し、その内容を変更する2. ル...
この記事では、Element-uiを使用してvue.jsでナビゲーションメニューを実装するための具体...
サーバーに複数のサイトを展開するには、異なるサイトにアクセスするために複数のポートを開く必要がありま...
1. コマンドの紹介read コマンドは、シェルの組み込みコマンドで、標準入力または -u オプショ...