web-dev-qa-db-ja.com

古いビデオを小さいサイズに変換する

数年前のビデオがいくつかあり、avi、mpg、wmv、rm、rmvbなどのさまざまな形式があります。サイズは巨大です(500 MB以上、場合によっては1GB以上)。

  1. データ圧縮がある程度進歩する可能性があることを考えると、明らかなデータを失うことなく、大幅なサイズ削減を達成するという基準で、最近推奨されているファイル形式と圧縮方法を知りたいと思います。
  2. Ubuntu 12.04でファイル形式の変換とデータ圧縮を実行するにはどうすればよいですか?コマンドラインとバッチの方法が最も便利ですが、GUIの方法もありがたいです。

ありがとう、よろしく!

6
Tim

UbuntuとそのバンドルされたFFmpeg

さて、FFmpegがUbuntuに同梱されていないという問題に遭遇しましたが、apt-getを介してインストールしようとしました。

このプログラムはもう開発されておらず、互換性のためにのみ提供されています

これは単なる嘘です。 FFmpegは活発に開発されていますが、Ubuntuパッケージは古く、 libav に切り替わりました。メッセージの 文言について説明しているバグレポート については、こちらを参照してください。

ソースからインストールするか、静的ビルドを使用する

自分でコンパイルすることに興味がない場合は、 ダウンロードページ から静的ビルドを取得するだけです。

最新の状態に保ち、自分でツールを構成したい場合は、ソースからコンパイルする必要があります。インストールの詳細な方法については、 buntuコンパイルガイド を確認してください。これらの手順に従うと、FFmpeg(エンコードツール)とx264(特定のビデオエンコーダー)の両方の最新バージョンが作成されます。

サイズを小さくするには何が必要ですか?

あなたが尋ねる …

最近推奨されているファイル形式と圧縮方法

実際、誰もが推奨する圧縮方法( "コーデック")は1つだけです。これは、H.264またはMPEG-4パート10/AVC標準であり、低帯域幅のビデオの圧縮方法を指定します。H.264は、高帯域幅でも優れた結果を実現します。これは「x264」と呼ばれ、上記でインストールしたものです。

MPEG-4 Part 2、「DivX」および「XviD」エンコーダーを有名にしたビデオコーデック標準に取って代わります。これらも優れていますが、同じ品質を維持するにはより多くの帯域幅が必要です。

実際のファイル形式は重要ではありません。 H.264ビデオは、AVIからMP4、MOV、MKVまで、ほぼすべてのコンテナに保存できます。ビデオコーデック自体と、それを単純にカプセル化するコンテナとの違いを理解することが重要です。詳細については、こちらを参照してください: コーデック(DivXなど)とは何ですか?ファイル形式(MPGなど)とどのように異なりますか? 最近は出力コンテナとしてMP4またはMKVを選択します。 AVIは古すぎて、ビデオで多くのことを行うことができません。前述のコンテナーには、再多重化のためのより優れたツールがあります。

サイズを小さくしたいときは、ビデオの平均ビットレートを下げたいと思います。最も単純なケースでは、これは、エンコーダに1.5 MBit/sの固定ビットレートを強制することを意味します。これは機能しますが、いくつかの欠点があります。固定ビットレートでエンコードする代わりに、エンコーダーに使用する金額を選択させます。これにより、ビデオのコンテンツに適合した平均ビットレートが得られます。これを行うには、一定レート係数オプションを使用します。

X264の場合、これは、このCRFの値を18〜26のどこかに設定することを意味します。デフォルトは23で、値を大きくすると品質が低下し、その逆も同様です。それが何をするのかを正確に知る必要はありませんが、興味がある場合はこれを参照してください CRFガイド

どのように変換を実行しますか?

FFmpegを起動して実行すると、192 kBit/sの固定ビットレートでAACオーディオを使用してビデオをx264/MP4に変換できます。

ffmpeg -i input.avi -c:v libx264 -crf 23 -c:a aac -strict experimental -b:a 192k output.mp4

それでおしまい。 CRF値を調整することにより、出力サイズと品質を変更できます。低いほど、品質が高く、サイズが大きくなります。高いと、品質が低下し、サイズが小さくなります。私が言ったように、正気の値は18から26の間のどこか、多分それ以上です。入力ビデオのサイズを本当に縮小したい場合は、ファイルサイズを縮小しても許容できるビデオ品質を提供するCRF値を選択してください。

ビデオがどのように見えるかをテストするには、を押します Q 変換中はいつでも。切り捨てられたファイルが残りますが、それでも再生可能であるはずです。 -t <seconds>オプションを指定することもできます。ここで、<seconds>は、エンコードする期間を指定します(たとえば、最初の30秒のみ)。

その他の設定については、 H.264エンコーディングガイド を参照してください。

バッチ処理

変換したいAVIファイルのバッチがある場合は、そのようなことを行うことができます。これは、たとえばBashですべてのファイルを再帰的にトランスコードします。

while IFS= read -d '' -r file; do 
  ffmpeg -i "$file" -c:v libx264 -crf 23 -c:a aac -strict experimental -b:a 192k ${file%%.avi}-converted.mp4 
done < <(find . -iname "*.avi" -print0)

このコマンドで.aviサフィックスを変更して、他のファイルに対して再度実行することができます。

ビデオエンコーディングは時間のかかる作業であり、ソースファイルに最適な設定を見つけるのに時間がかかることに注意してください。

5
slhck

もう1つの用途の広い(そして非常に実用的なGUIを備えた)ツールは Avidemux です。

バッチ処理の仕組みに関する詳細情報は次のとおりです。 Avidemux DocuWiki-バッチ処理

3
Mark0