web-dev-qa-db-ja.com

ビデオを変換する最速の方法(バッチまたはシングル)?

ここではビデオエンコーダーについて多くの質問があることを知っていますが、私の質問はワークフロー/効率性に関するものです。

私の仕事では、ビデオを頻繁に多くのランダムな形式(通常は大きな AVIM4V など)から変換し、変換して圧縮する必要がありますアップロードのためにインターネット上で使用できる効率的なファイルにダウンします。私が作成しなければならない形式は次のとおりです。

いくつかのユースケースに共通のテンプレートを作成する必要があり(ソースと同じ、 1080p 、または 720p に変換)、これらをすばやく処理し、キューに入れることができます。

Ubuntuでこのプロセスを最適に実行するためのアイデアはありますか?

26
Garrett

コマンドラインを使用する場合は、ffmpeg(またはhandbrake-cli)を使用できます。

MP4

ffmpegの最新バージョンを使用していると仮定します:

ffmpeg -i input -c:v libx264 -crf 23 -preset medium -c:a aac -b:a 128k \
-movflags +faststart -vf scale=-2:720,format=yuv420p output.mp4
  • -crf:品質。範囲は対数0(損失なし)から51(最低品質)です。デフォルトは23です。主観的な正常範囲は約18〜28です。それでも許容できる品質が得られる最高の値を使用します。 YouTubeなどにアップロードするために非現実的に大きな入力を再エンコードする場合、これらのビデオサービスはいずれにしても再エンコードされるため、17または18の値を試してください。

  • -preset:エンコード速度。プリセットを遅くすると圧縮率は向上しますが(ファイルサイズあたりの品質)、遅くなります。忍耐力が最も遅いものを使用してください:超高速、超高速、超高速、高速、高速、中(デフォルト)、低速、低速、超低速。

  • -movflags +faststart:プログレッシブダウンロード表示の場合、完全にダウンロードされる前にビデオを再生できます。ビデオをホストしている場合に役立ちます。YouTubeのようなビデオサービスにアップロードする場合は不要です。

  • -vf scale=-2:720,format=yuv420p:A filtergraphscale および format ビデオフィルターを使用。高さ720ピクセルに拡大縮小し、アスペクトを維持する幅を自動的に選択してから、ピクセル形式がダムプレーヤーと互換性があることを確認します。

  • -b:a 128k:音声ビットレート。 ffmpegが古い場合、-strict experimentalを使用するには-c:a aacを追加する必要があります。

MOV

MOVおよびMP4ファイルにはおそらく同じビデオおよびオーディオ形式が含まれているため、再エンコードする代わりに、MP4をエンコードし、( ストリームコピー モードで)再多重化することでMOVを作成できます。

ffmpeg -i input.mp4 -codec copy output.mov

WMV

FFmpegはWMV 7および8のみをサポートします。バージョン9のオープンソースエンコーダーを知りません。

$ ffmpeg -encoders | grep -i windows
[...]
 V..... = Video
 A..... = Audio
 ------
 V..... wmv1                 Windows Media Video 7
 V..... wmv2                 Windows Media Video 8
 A..... wmav1                Windows Media Audio 1
 A..... wmav2                Windows Media Audio 2

私はこれらのエンコーダーに慣れていないので、テストされていない例を紹介するだけです。

ffmpeg -i input -c:v wmv2 -b:v 1024k -c:a wmav2 -b:a 192k output.wmv

Ffmpegの入手

ffmpegのLinuxビルド をダウンロードするか、ステップバイステップの ffmpegコンパイルガイド に従ってビルドをカスタマイズできます。

Bash「forループ」を使用してバッチエンコードを実行する

ディレクトリ内のすべてのビデオをエンコードするには:

$ mkdir encoded
$ for f in *.avi; do ffmpeg -i "$f" -c:v libx264 -crf 23 -preset medium \
  -c:a aac -b:a 128k -movflags +faststart -vf scale=-2:720,format=yuv420p \
  "encoded/${f%.avi}.mp4"; done

こちらもご覧ください

52
llogan

HandBrake を試してください。

HandBrakeは、ほぼすべての形式のビデオを、幅広くサポートされている最新のコーデックに変換するためのツールです。インストールするには、単に押す Ctrl+Alt+T キーボードでターミナルを開きます。開いたら、以下のコマンドを実行します:

Sudo add-apt-repository ppa:stebbins/handbrake-releases
Sudo apt-get update
Sudo apt-get install handbrake
5
Mitch