Edited at

FFmpegライブラリー チュートリアル (翻訳)

More than 3 years have passed since last update.

 CLIじゃないよ! libavcodecとかの使い方だよ!

 →

 以下の文章は、 “An ffmpeg and SDL Tutorial” (CC BY-SA 2.5) の翻訳です。あまりにもffmpegの学習が捗らないので、とりあえず日本語に翻訳してみようという試みです。

 サンプルプログラムは (可能な限り) swiftで書き直します。ただし翻訳の予定は未定。遅くとも年度内にはなんとか…

 お急ぎの方は原文をご覧ください。

 ずぶの素人訳です。誤字・誤訳・誤解の指摘を大いに歓迎します!

 もし私が途中で力尽きたら、続きの翻訳もよろしくお願いします


ffmpeg チュートリアル


前書


注意:このチュートリアルには一部、適切でなくなった部分があります。

 現時点で、第8章で利用されている img_convert (廃止) を sws_scale に変更する必要があります。私自身このチュートリアルをアップデートしたいとずっと思っていたので、これをよい機会と考えて実行するつもりです。ここ3年にわたって、沢山の方々からの提案・応答が大いに力となりました。もしあなたもEメールで助けてくださるなら嬉しく思います。このチュートリアルは遠からずアップデートされるでしょう。

[翻訳版注記 開始]

 翻訳作成の時点では、その他にも廃止された関数が存在します。残念ながら翻訳者はCに疎いため、サンプルプログラムを適切に書きなおす自信がありません。

 そのため翻訳版では、原作品に附されたCのサンプルをそのまま掲示し、その次に訂正済みのswiftプログラムを示すこととします。C版には適切でない記述がそのまま残されていますので、注意してください。

[翻訳版注記 終了]

 ffmpegは素晴らしいライブラリーであり、映像アプリケーションでも、汎用ツールすらも作ることができます。ffmpegはあなたに代わってデコード、エンコード、ストリームの合成・分離 (mux / demux) のすべてを行い、映像処理の面倒な部分を肩代わりしてくれます。これによりAVデータを扱うアプリケーションをより簡単に書くことができます。C言語で記述されたライブラリー自体はシンプルであり、高速であり、それでいて実用されているコーデックのほとんどをデコードし、あるいはエンコードしなおすことができます。

 このようにffmpegは優れているのですが、困ったことにドキュメントらしきものがほとんど存在しません。ただひとつffmpegの基礎についてのチュートリアルがあり、doxygenドキュメントがありますが、それだけです。そういう有り様なので、ffmpegについて (そしてデジタル映像・音声のアプリケーションの仕組みについて) 学んだ私は、その仕組みをドキュメントとして整え、チュートリアルにしようと決意したのです。

 ffmpegを利用するサンプルプログラムとして、ffplayというものがあります。C言語で書かれた簡単なプログラムですが、ffmpegにより完全な映像プレイヤーとして機能します。本稿はまず、オリジナルのチュートリアル (Martin Böhme著) を大いに参考にしつつ加筆したものから始めて、ffplay.c (Fabrice Bellard著) をベースとする映像プレイヤーを作るべく進んでいきます。チュートリアルの各段階でアイデアを紹介し、それをどうやるのか説明します。チュートリアルにはCのプログラムが添付されていますから、読者はこれをダウンロードし、コンパイルし、自分でやってみることができます。ソースを見ることで、実際のプログラムがどのように機能しているかを知ることができ、その使い方が分かり、チュートリアルでは詳述されない技術的詳細まで理解することができます。最終的には、1000行未満で動作する映像プレイヤーを作成できるでしょう。

 プレイヤーを作成するにあたって、AVファイルの音声と映像を出力するためにSDLを利用します。SDLはクロスプラットフォームの優れたマルチメディアライブラリーであり、MPEG再生ソフトやエミュレーター、ゲームなどで利用されています。チュートリアルのプログラムをコンパイルするためには、読者の環境に応じてSDLの開発用ライブラリーをダウンロードし、インストールする必要があります。

 このチュートリアルは、プログラミング経験のある読者を想定しています。C言語を理解し、キューやミューテックスなどのアイデアを知っていることが最低限求められます。波形などのマルチメディアの基礎知識があることも期待されますが、これについてはチュートリアル内で説明していきますので、ある程度のもので構いません。

This work is licensed under the Creative Commons Attribution-Share Alike 2.5 License. To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/2.5/ or send a letter to Creative Commons, 543 Howard Street, 5th Floor, San Francisco, California, 94105, USA.

Code examples are based off of FFplay, Copyright (c) 2003 Fabrice Bellard, and a tutorial by Martin Bohme.

[翻訳版注記 開始]

 上記の権利表示およびライセンス表示は原作品に附されたものです。

 翻訳者は、本訳文の全体をCC BY-SA 2.5のもとで頒布します。

[翻訳版注記 終了]