オーディオ/ビデオファイルコンバーターFFmpeg

1はじめに



各ユーザーは、少なくとも一度はコンピューターを使用して映画を見たり、音楽を聴いたりしました。 あなたのほとんどは、オーディオとビデオの両方の情報のさまざまな形式の存在を知っています。 各形式は、その目的のために設計されています。

そのため、MP4は、圧縮率が高いため、モバイルデバイスでの再生に便利です。 MKV形式のファイルは巨大ですが、同時に高品質のビデオとサウンドです。 AVI形式は独立した形式ではなく、他の形式のメディアをパッケージ化するためのラッパーです。 厳密に言えば、MKVはXML言語のバイナリアナログに基づいたコンテナでもあります[1] 。 これにより、古いプログラムとの互換性を失うことなく、フォーマットを拡張できます。

リストは続きます。 多くの場合、たとえば、ある形式から別の形式にフィルムを転送する必要があります。 たとえば、元の形式の再生をサポートしていない携帯電話またはDVDプレーヤーでビデオを見るためにこれが必要になる場合があります。

この場合、シンプルだが非常に強力なツールであるFFmpegコンバーターが役立ちます。



1.1一般的な特徴



このセクションの説明は、Wikipedia [2]の資料およびMANオペレーティングシステムUbuntu 10.04 LTSのヘルプページに基づいています。

したがって、FFmpegはオープンソースライブラリのセットです。 このプロジェクトはFabrice Bellarによって作成されました。 ソースコードが開いているため、プログラムは任意のオペレーティングシステム用にコンパイル(作成)できます。 FFmpegユーティリティは、これらのライブラリのインターフェイスです。 コマンドラインから動作します。 現代の多くのユーザーにとってこれは便利ではないように思えるかもしれませんが、コマンドラインを使用すると、システムリソースを使用してグラフィック要素を表示できなくなり、プログラムが高速化されます。

FFmpegはシステム全体です。 コーデック、ストリーミング用のサーバー、ビデオファイルを変換するユーティリティ、さらにはシンプルなプレーヤーも含まれています。 ここで、主にファイルを変換するこのシステムの機能に関心があります。

FFmpegは、ほとんどの一般的な形式をサポートしています。 システムの開発はこれまで停止されていないため、それらの完全なリストを提供することは困難です。 もちろん、FLV、AVI、MP4もその中にあります。 FFmpegでサポートされていない単一の形式を見つけることができませんでした。

ファイルをさまざまな形式に変換する機能に加えて、FFmpegでは、ビデオ形式をオーディオトラックに変換したり、ストリーミングビデオを「キャプチャ」したり、ブロードキャスト放送を手配したりできます。 可能性は膨大です。 さらに、コマンドラインインターフェイスは直感的に開発されています。 したがって、たとえば、ほとんどの形式は、指定された入力および出力ファイル拡張子によって認識されます。

FFmpegには、広範なオーディオおよびビデオ処理機能があります。 そのため、たとえば、オーディオ形式、映画のサウンドトラック、クロップまたはスケールフレームのサンプリングレートを変更できます。

FFmpegは、ストリーミングビデオまたはオーディオコンバーターに使用できます。 システムの利点を引き続きリストできますが、その研究に進み、その過程でそれらを知るようにしましょう。



1.2最初のステップ



どの道も最初のステップから始まります。 それでは始めましょう。 すぐに予約する:FFmpegユーティリティが既にシステムにインストールされていると思います。 そうでない場合は、自分で管理する必要があります。 実際、異なるオペレーティングシステムのインストールは非常に異なります。 記事が普遍的であり、過剰なボリュームを含まないようにするために、使用プロセスの説明のみが含まれています。

したがって、film.mkvというビデオファイルがあるとします。 この形式は非常に高い画質を提供しますが、システムリソースを要求します。 さらに、モバイルデバイスはほとんどの場合サポートしていません。 MP4形式があります。 ビデオデータを非常によく圧縮し、システム要件の低いほとんどのデバイスでサポートされています。 ファイルをこの形式に転送するには、film.mkvファイルがあるディレクトリに移動し、次のコマンドを入力します。



ffmpeg -i film.mkv film.mp4







film.mp4ファイルは同じディレクトリに表示されます。 ちょうどいい? ほとんどの設定は「デフォルト」に設定されています。 ファイル形式は自動的に検出されます。 しかし、これを行うことはお勧めしません。そのため、最新のビデオデータは非常に高品質です。 多くのパラメータに依存しますが、私の意見では、ビットレート、フレームレート、コーデックの3つが決定的です。

ビットレートとは、ムービーを表示したり、サウンドを再生したりするプログラムで1秒あたりに処理する必要があるビット単位の情報量です。 デフォルトでは、ビットレートは200 kb / sに設定されています。 オーディオトラックに64 kb / sがあり、フレームレートが15 fps(15フレーム/秒)であっても、フレームあたり約9 kbまたは約キロバイトであることを意味します。 最新のビデオ圧縮技術を使用しても、品質に問題はありません。

ご理解のとおり、最終ファイルのサイズはビットレートに直接依存します。 いずれの場合も、ビットレートは個別に選択され、一般的な推奨事項はここでは提供できません。 最大ビットレートを設定するには、次のようにコマンドを補足する必要があります。



ffmpeg -i film.mkv -b 1200k film.mp4







現在、最大ビットレートは設定された「デフォルト」の6倍であり、画質は大幅に向上します。

フレームレートは、1秒間に画面を通過するフレームの数です。 標準のテレビ周波数は24 fpsです。つまり、1秒間に24フレームが再生されます。 各フレームは本質的に画像です。 デジタルビデオの標準周波数は15〜16 fpsです。 したがって、ビットレートを上げることができますが、フレームレートを下げることでファイルサイズを増やすことができます。 人間の目では、これはほとんど見えなくなり、ビデオのサイズは約1.5倍減少します。

フレームレートを設定するには、前のコマンドを次のように補足する必要があります。



ffmpeg -i film.mkv -b 1200k -r 16 film.mp4







コマンドを実行すると、film.mp4ファイルがディレクトリに表示されます。最大ビットレートは1200 kb / sで、フレームレートは16 fpsです。

「余分な」フレームを削除すると、より低い周波数への変換が行われます。 おそらく、隣接するフレームを複製することにより、より高い周波数に変換します。 ご存知のように、このような変換は品質には影響しませんが、サイズにも影響します。

もう1つの基本操作:フレームのサイズ変更。 このような変更は、各フレームをスケーリングまたはトリミングすることで可能です。 ここでは、スケーリングのみを検討します。

状況:フィルムのフレームサイズは640×480です。携帯電話はMP4形式のみを再生し、画面サイズは320×240です。フィルムの各フレームのサイズを変更するには、前のコマンドを次のように変更する必要があります。



ffmpeg -i film.mkv -b 1200k -r 16 -s 320x200 film.mp4







film.mp4ファイルは、最大ビットレート1200 kb / s、フレームレート16 fps、フレームサイズ320×240ピクセルでカタログに表示されます。 頻度と同じ理由で、フレームのサイズを大きくする価値はありません。

したがって、元の倍数でなく、任意のフレームサイズを設定できます(これにより、画像が変形しますが、可能です)。 ほとんどのフィルムとクリップには標準サイズがあります。 たとえば、320×240、640×480、1024×768、1600×1200などです。 それらのほとんど(おそらくすべての人)に文字の指定があります。 したがって、前のコマンドは次のように記述できます。



ffmpeg -i film.mkv -b 1200k -r 16 -s qvga film.mp4







結果はまったく同じです。 フォーマット(いずれにしても、メインのもの)を覚えることは非常に簡単です。 たとえば、ご存じのとおり、640x480はVGAです。 320×240はQVGA(VGAの1/4)です。 なぜ四半期なのか? VGAフィールドに精神的に2本の線を描画し、それらを縦と横に半分に分割します。 320×240のサイズの4つの長方形が得られます。そのため、VGAの1/4です。 文字の指定を以下に示します。 フォーマットのリストは完全ではありませんが、他のフレームサイズはおかしく、めったに見つかりません。 FFmpegのmanページからそれらについて知ることができますが、それらを必要とすることはまずありません。



sqcif - 128 × 96

qqvga - 60 × 120

uxvga - 1600 × 1200

qcif - 176 × 144

qvga - 320 × 240

qxga - 2048 × 1536

cif - 352 × 288

vga - 640 × 480

sxga - 1280 × 1024

4cif - 704 × 576

svga - 800 × 600

qsxga - 2560 × 2048

16cif - 1408 × 1152

xvga - 1024 × 768

hsxga - 5120 × 4096








システムにコマンドを与えるとどうなると思いますか:



ffmpeg -i film.mkv film.mp3







そうです。サウンドトラックはfilm.mp3ファイルにコピーされます。 ビデオとサウンドを簡単に分離できます。

多くの場合、ビデオファイルを標準メディア(DVDなど)に記録するのに適した形式に変換する必要があります。 このようなメディアには、特別な構造といくつかの制限があります。 ファイルをディスクに書き込むだけでは不十分です。 これをすべて考慮するには、FFmpegに多くのパラメーターを伝える必要がありますが、その多くはあなたも私も知りません。 幸いなことに、プログラムの作成者がこれを処理しました。 1つのパラメーターを指定するだけで十分で、残りは自動的に設定されます。 したがって、film.mkvファイルをDVD-ROMに書き込む準備をするには、次のコマンドを与える必要があります。



ffmpeg -i film.mkv -target dvd film.mpg







いつものように、最終ファイルはディレクトリに表示され、ディスクに書き込む準備ができています。 一般的な形式のリスト(dvdの代わりに名前をコマンドに置き換える必要があります)は、プログラムのヘルプページにあります。 これらの最も一般的なものは、 vcd, svcd, dvd, dv, dv50, pal- vcd, ntsc-svcd



。 これらの表記は、最後のコマンドの-target



フィールドで直接置き換えることができます。 オペレーティングシステムが拡張子の影響を受けない場合(Linuxを使用している場合など)、ファイルの拡張子は重要ではありません。

拡張子に関係なく、出力ファイル形式を設定できます。 これを行うには、次のコマンドを指定します:



ffmpeg -f mp4 -i film.mkv -b 1200k -r 16 -s qvga film







フィルムファイルは、拡張子なしでディレクトリに表示されますが、MP4形式です。 形式の名前は、これらの形式のファイルの拡張子と一致します。

この記事では、コーデックとファイル形式について言及しました。 あなたが利用できるものを見つけることができます。 このためには、コマンドを与える必要があります:



ffmpeg -codecs

ffmpeg -formats









最初のコマンドは使用可能なコーデックをリストし、2番目のコマンドは使用可能なフォーマット(オーディオを含む)をリストします。

以上です。 FFmpegプログラムの基本的な作業コースを無事に完了しました。 これで、ファイルを変換するためのほとんどのタスクと、平均的なユーザーが遭遇するタスクを実行できます。 質問がある場合は、mailto:mna-norn@mail.ruで「FFmpeg」という件名で質問してください。 この件名のないなじみのないアドレスからの手紙は読まずに削除されます。 この記事は終わりました。 ご清聴ありがとうございました。



All Articles