| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
多くのオープンソースプロジェクト同様、FFmpeg ではマンパワーがある程度不足している状態にあります。 このため、開発者は彼らの為す任務を優先しなければならず、リリースを出すことはそのリストの最上段にくるものではなく、 バグを修正しパッチをレビューすることが優先されています。 あなたがリリースを作成するのを手助けするつもりがないなら、 どうか苦情を出してより定期的な/頻繁なリリースを求めたりしないでください。
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
報告先はどこにもありません。私たちは古い版の FFmpeg はどんな形でもサポートしません。 私たちにはそうするための時間も、動機もマンパワーもありません。 もし古い版の FFmepg で問題があれば、最新のスナップショットにアップグレードしてください。 それでもその問題が起こる場合には、http://ffmpeg.org/bugreports.html にあるガイドラインに沿って報告することができます。
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
それはその任務に取り掛かる人がいないからです。FFmpeg の開発は 個々の開発者にとって重要な任務によって進められています。 あなたにとって重要な機能があるときには、それが実装されるようにする一番よい方法は あなた自身がその任務に着手することです。
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
いいえ。FFmpeg はオープンソースのコーデックしかサポートしません。Windows の DLL は移植可能でなく、 膨らみ過ぎで、また多くの場合遅いです。
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
ありがちな理由
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
私たちのメーリングリストをフォーラムに似た見た目で見るにはこちらです: http://dir.gmane.org/gmane.comp.video.ffmpeg.user しかし、投稿する場合には、私たちのメーリングリストの規則はそこでも適用されることを忘れないでください。
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
たとえ ffmpeg がそのコンテナフォーマットを読むことができても、そのフォーマットの全てのコーデックを サポートしているとは限りません。ffmpeg のドキュメントにあるサポートするコーデックのリストにあたって みてください。
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
追加のコーデックをインストールしない限り、 Windows は MPEG のような標準フォーマットを十分にはサポートしていません。
下に挙げる映像コーデックはほとんどの Windows システムで動作するでしょう:
.avi/.asf
.asf のみ
.asf のみ
.asf のみ
ffdshow または Xvid のような MPEG-4 コーデックがインストールされている場合に限る。
.mpg のみ
Windows では ASF ファイルがしばしば .wmv や .wma という拡張子を持つので注意してください。 また Microsoft が ASF フォーマットの特許を主張しており、非 Microsoft のソフトウエアで ASF ファイルを作成するユーザーを訴える、もしくは脅かす恐れがある、ということも述べておくべきでしょう。 可能な場合には ASF を避けることを強く忠告します。
下に挙げる音声コーデックはほとんどの Windows システムで動作するでしょう:
LAME のような MP3 コーデックがインストールされている場合。
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
error: can't find a register in class 'GENERAL_REGS' while reloading 'asm'これは gcc のバグです。私たちに報告しないでください。代わりに、gcc の開発者にそれを 報告してください。私たちは gcc のバグのための回避策を加えるつもりはないことに注意してください。
また gcc の開発者(のうちのいく人か)はこれがバグないし彼らが直すべきバグだと信じていないことに 注意してください: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=11203。 そしてさらに、彼らのうちには決定不可能な問題と NP-hard 問題の違いを分かっていないものもいます...。
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
ffmpeg のソースディレクトリでビルドの前に ’make distclean’ を試してください。これが助けにならない場合は (http://ffmpeg.org/bugreports.html) を見てください。
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
その JPEG ファイルが img1.jpg, img2.jpg, img3.jpg,... なら、次のようにします:
ffmpeg -f image2 -i img%d.jpg /tmp/a.mpg |
‘%d’ は画像の番号に置き換えられます。
‘img%03d.jpg’ とすると ‘img001.jpg’, ‘img002.jpg’, ... などになります。
多数の画像をリネームする際には、次のようなコマンドを使って
負担を和らげることができます。このコマンドは、bourne shell の
構文を使って、カレントディレクトリにある *jpg に合致する
すべてのファイルから ‘/tmp’ ディレクトリに
‘img001.jpg’、‘img002.jpg’ などと並べてシンボリックリンクを張ります。
x=1; for i in *jpg; do counter=$(printf %03d $x); ln "$i" /tmp/img"$counter".jpg; x=$(($x+1)); done |
これらを最も古い時点で変更されたものから先に並べたい場合には、
*jpg のところを $(ls -r -t *jpg) で置き換えてください。
そして実行してください:
ffmpeg -f image2 -i /tmp/img%03d.jpg /tmp/a.mpg |
他の画像フォーマットでも同じ方式が用いられます。
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
次のようにします:
ffmpeg -i movie.mpg movie%d.jpg |
この ‘movie.mpg’ が入力として用いられ、 ‘movie1.jpg’, ‘movie2.jpg’, ... などに変換されるでしょう。
ファイルフォーマットの自己認識に頼る代わりに、エンコーディングを強制するため
を使うことになるかもしれません。
これらを前の例に応用すると:
ffmpeg -i movie.mpg -f image2 -vcodec mjpeg menu%d.jpg |
“jpeg” というコーデックはないことに注意してください。代わりに “mjpeg” を使ってください。
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
マルチスレデッド MPEG* エンコーディングのため、エンコードされた断片はそれぞれ独立でなければなりませんが、 そうでなければスレッド n は実用的には n-1 が終わるまで待たなくてはなりません。 そのため品質の小さな低下があるのはごく論理的なことです。これはバグではありません。
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
ファイル名として ‘-’ を使ってください。
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
’-f image2 test%d.jpg’ を試してください。
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
コーデックの中には、MPEG-1/2 のように、少数の決まったフレームレートのみを許すものがあります。 -vcodec コマンドラインオプションで別のコーデックを選んでください。
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Xvid、DivX(バージョン 4+) どちらも ISO MPEG-4 標準の実装です (これと同じ標準を使った他の多くのコーディングフォーマットがあることに注意してください)。 したがって、これらのフォーマットにエンコードするためには ’-vcodec mpeg4’ を使ってください。 MPEG-4 でコードされたファイルに格納される既定の fourcc は ’FMP4’ です。 異なる fourcc にしたい場合は、’-vtag’ オプションを使ってください。例えば、’-vtag xvid’ とすると video fourcc としてデフォルトの ’FMP4’ ではなく ’xvid’ が格納されるよう強制します。
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
-acodec libfaac -vcodec mpeg4 width<=320 height<=240
4mv, title
B-frames
ffmpeg -i input -acodec libfaac -ab 128kb -vcodec mpeg4 -b 1200kb -mbd 2 -flags +4mv -trellis 2 -aic 2 -cmp 2 -subcmp 2 -s 320x180 -metadata title=X output.mp4
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
-acodec libfaac -vcodec mpeg4 width*height<=76800 width%16=0 height%16=0 -ar 24000 -r 30000/1001 or 15000/1001 -f psp
4mv, title
B-frames
ffmpeg -i input -acodec libfaac -ab 128kb -vcodec mpeg4 -b 1200kb -ar 24000 -mbd 2 -flags +4mv -trellis 2 -aic 2 -cmp 2 -subcmp 2 -s 368x192 -r 30000/1001 -metadata title=X -f psp output.mp4
-acodec libfaac -vcodec libx264 width*height<=76800 width%16=0? height%16=0? -ar 48000 -coder 1 -r 30000/1001 or 15000/1001 -f psp
title, loop filter
CAVLC
ffmpeg -i input -acodec libfaac -ab 128kb -vcodec libx264 -b 1200kb -ar 48000 -mbd 2 -coder 1 -cmp 2 -subcmp 2 -s 368x192 -r 30000/1001 -metadata title=X -f psp -flags loop -trellis 2 -partitions parti4x4+parti8x8+partp4x4+partp8x8+partb8x8 output.mp4
-vcodec libx264 -level 21 -coder 1 -f psp
ffmpeg -i input -acodec libfaac -ab 128kb -ac 2 -ar 48000 -vcodec libx264 -level 21 -b 640kb -coder 1 -f psp -flags +loop -trellis 2 -partitions +parti4x4+parti8x8+partp4x4+partp8x8+partb8x8 -g 250 -s 480x272 output.mp4
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
’-mbd rd -flags +4mv+aic -trellis 2 -cmp 2 -subcmp 2 -g 300 -pass 1/2’, 試してみるべきもの: ’-bf 2’, ’-flags qprd’, ’-flags mv0’, ’-flags skiprd’。
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
’-mbd rd -trellis 2 -cmp 2 -subcmp 2 -g 100 -pass 1/2’ ですが ’-g 100’ はデコーダーによっては問題が生じるかもしれません。 試してみるべきもの: ’-bf 2’, ’-flags qprd’, ’-flags mv0’, ’-flags skiprd’。
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
インターレースされたデータには ’-flags +ilme+ildct’ を使うべきで、また ’-flags +alt’ も良いかもしれません。 さらに結果が本当にむちゃくちゃなら ’-top 0/1’ を試してください。
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
FFmpeg を ./configure --enable-avisynth としてビルドしている
(MinGW/Cygwin プラットフォームでのみ可能性があります)なら、
DirectShow が読めるファイルならどれでも入力として使えます。
単に次の1行からなるテキストファイル “input.avs” を作成します:
DirectShowSource("C:\path to your file\yourfile.asf")
|
... そして続いてこのテキストファイルを FFmpeg にフィードします:
ffmpeg -i input.avs |
Avisynth に関するこれ以外の一切のヘルプについては、 http://www.avisynth.org/ を訪ねてください。
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
単にファイルを結合するだけでビデオファイルをつなげることができるマルチメディア コンテナ(MPEG-1, MPEG-2 PS, DV)が少しだけあります。
したがってマルチメディアファイルを結合するには、まずそれらをこれら特権的なフォーマット
にコード変換し、そして質素な cat コマンド(もしくは同じような Windows 上の質素な
copy)を使い、最後に選んだフォーマットに変換し直すことです。
ffmpeg -i input1.avi -sameq intermediate1.mpg ffmpeg -i input2.avi -sameq intermediate2.mpg cat intermediate1.mpg intermediate2.mpg > intermediate_all.mpg ffmpeg -i intermediate_all.mpg -sameq output.avi |
ビデオの品質を保ちたいときには、中間および出力ファイルのために -sameq
を使うか、適度に高いビットレートを指定するかするべきであることに注意して
ください。
プラットフォームがサポートしているなら、名前付きパイプの利点を生かして 巨大な中間ファイルを避けることができることにも注意してください:
mkfifo intermediate1.mpg mkfifo intermediate2.mpg ffmpeg -i input1.avi -sameq -y intermediate1.mpg < /dev/null & ffmpeg -i input2.avi -sameq -y intermediate2.mpg < /dev/null & cat intermediate1.mpg intermediate2.mpg |\ ffmpeg -f mpeg -i - -sameq -vcodec mpeg4 -acodec libmp3lame output.avi |
同様に、yuv4mpegpipe フォーマット、未加工ビデオ、および未加工オーディオコーデック
もまた結合を許し、かつコード変換ステップがほとんどロスレスです。
複数の yuv4mpegpipe を使う際には、最初の行は最初のストリーム以外すべて
捨てる必要があります。これは、次に見るように、tailを通じてパイプする
ことによって達成できます。tailを通じてパイプする際には
適切にバックグラウンドにするためコマンドのグループ化 { ;} を使わなければ
ならないことに注意してください。
例えば、2つの FLV ファイルを1つの output.flv ファイルにつなげたいとします:
mkfifo temp1.a
mkfifo temp1.v
mkfifo temp2.a
mkfifo temp2.v
mkfifo all.a
mkfifo all.v
ffmpeg -i input1.flv -vn -f u16le -acodec pcm_s16le -ac 2 -ar 44100 - > temp1.a < /dev/null &
ffmpeg -i input2.flv -vn -f u16le -acodec pcm_s16le -ac 2 -ar 44100 - > temp2.a < /dev/null &
ffmpeg -i input1.flv -an -f yuv4mpegpipe - > temp1.v < /dev/null &
{ ffmpeg -i input2.flv -an -f yuv4mpegpipe - < /dev/null | tail -n +2 > temp2.v ; } &
cat temp1.a temp2.a > all.a &
cat temp1.v temp2.v > all.v &
ffmpeg -f u16le -acodec pcm_s16le -ac 2 -ar 44100 -i all.a \
-f yuv4mpegpipe -i all.v \
-sameq -y output.flv
rm temp[12].[av] all.[av]
|
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
MPEG の仕様を読み、video buffer verifier について読んでください。
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
あなたは cbr が何なのか分かっていません、MPEG の仕様を読んでください。 video buffer verifier と constant bitrate について読んでください。 1文で要約すると、buffer があって入力レートが一定でも、必要に応じて 出力レートは変わることがあります。
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
MPEG-2 の仕様を引用すると: “全ての vbv_delay 値を検査しかつ複雑な計算をしない限り ビットストリームが固定ビットレートかどうかを知る方法はありません。”
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
はい。FFmpeg のドキュメントの the Developers Guide を読んでください。あるいは、 (http://ffmpeg.mplayerhq.hu/projects.html) にある FFmpeg を既に組み入れている 多くのオープンソースプロジェクトのソースコードを調べてみてください。
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
場合によります。もしそのコンパイラが C99 準拠であれば、
そのコンパイラに関係した #ifdef でソースコードを汚さないかぎり
それをサポートするパッチは歓迎される見込みがあります。
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
いいえ。Microsoft Visual C++ は C 標準に準拠しておらず - 中でも - FFmpeg で使っているインラインアセンブリを サポートしていません。 もしあなたが自分のプロジェクトで MSVC++ を使いたいなら、 動作する C コンパイラで libav* をコンパイルする限りは MSVC++ コードを libav* とリンクできます。 FFmpeg のドキュメントの Microsoft Visual C++ compatibility の節を見てください。
過去に FFmpeg を MSVC++ と互換にする努力がなされました。 しかし、それらはあまりに邪魔であったため、特にMinGW が適切に役割を果たしたために、全て拒否されました。 MSVC++ で作業をするコア開発者が1人もおらず、このためこの項目の優先度は低いです。 あなたがこの問題を解決する銀の弾丸を見つけておられるなら、遠慮なく私たちに向かって撃ってください。
私たちは MSVC++ から MinGW ツールに移行することを強く奨めます。
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
はい、しかし FFmpeg をコンパイルするのには 必ず Cygwin または MinGW ツールを使わなければなりません。 さらなる情報を見つけるには FFmpeg のドキュメントの Windows の節を読んでください。
Windows 上で FFmpeg をビルドするための助けや教えを得るためには、 http://ffmpeg.arrozcru.org/ にある FFmpeg Windows Help Forum をチェックしてください。
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
いいえ。これらのツールは膨らみ過ぎで、ビルドを複雑にします。
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
FFmpeg は既に高いモジュール構成からなる方式で組織化されており、フォーマルなオブジェクト言語で 書き直す必要はありません。さらに、開発者の多くが純粋な C を好んでいます; 彼らにはそれでうまくいくのです。この題材についてさらなる議論をするには (http://www.tux.org/lkml/#s15) にある “Programming Religion” を読んでください。
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
ビルドの過程では完全なデバグ情報を含んでいる ffmpeg_g や ffplay_g などを作成します。 ffmpeg や ffplay などを作成するためにこれらのバイナリは strip されます。 デバグ情報が必要なら、*_g バージョンを使ってください。
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
はい、そのコードがオプションであり、簡単かつきれいに何も壊すことなく #if CONFIG_GPL で配置される限りは。 ですので、例えば新しいコーデックやフィルターは GPL でよいですが LGPL のコードへのバグ修正ならよくありません。
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
共通のコードは libav* の中のそれ自身のファイルにあり、個別のコーデックによって利用されています。 それらは共通部分なしでは機能せず、libav* 全体をコンパイルしなければなりません。 お望みであれば、いくつかの部分を configure スイッチによって無効にしてください。 またハックしてさらに削ることを試みてもいいですが、コンパイルの失敗を修正するのに問題があるなら、 多分あなたには向いていないでしょう。
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
FFmpeg は純粋な C のプロジェクトですので, そのライブラリを C++ アプリケーション内で使うには、
C のライブラリを使うと明示的に述べる必要があります。これは FFmpeg の include を extern "C" で
取り囲むことによってできます。
http://www.parashift.com/c++-faq-lite/mixing-c-and-cpp.html#faq-32.3 を見てください。
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
URLProtocol を実装しなければなりません。 FFmpeg の ‘libavformat/file.c’ や Mpalyer のソースの ‘libmpdemux/demux_lavf.c’ を見てください。
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
標準の MSys bash (2.04) は壊れています。2.05 またはより新しいものをインストールする必要があります。
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
標準の MSys インストールには pr が含まれていません。coreutils パッケージから取得する必要があります。
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
http://www.iversenit.dk/dev/ffmpeg-headers/ を見てください。
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
see http://www.ffmpeg.org/~michael/ を見てください。
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
たとえネットワーク指向であるがゆえ特異であるとはいえ、RTP は他のものと同様コンテナです。 libavcodec にペイロードをフィードする前に RTP の多重化を解かなければなりません。 この特殊な場合には、何がなされるべきかを知るために RFC 4629 を見てください。
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
r_frame_rate は平均フレームレートでは*なく*、全てのタイムスタンプを正確に表現することが 可能な最小のフレームレートです。このため平均のものより大きくなっても間違っていません! 例えば 25 および 30 fps の内容が混ぜられていれば、r_frame_rate は 150 になるでしょう。
| [Top] | [Contents] | [Index] | [ ? ] |
This document was generated by Takeshi Abe on July 20, 2010 using texi2html 1.82.
The buttons in the navigation panels have the following meaning:
| Button | Name | Go to | From 1.2.3 go to |
|---|---|---|---|
| [ < ] | Back | Previous section in reading order | 1.2.2 |
| [ > ] | Forward | Next section in reading order | 1.2.4 |
| [ << ] | FastBack | Beginning of this chapter or previous chapter | 1 |
| [ Up ] | Up | Up section | 1.2 |
| [ >> ] | FastForward | Next chapter | 2 |
| [Top] | Top | Cover (top) of document | |
| [Contents] | Contents | Table of contents | |
| [Index] | Index | Index | |
| [ ? ] | About | About (help) |
where the Example assumes that the current position is at Subsubsection One-Two-Three of a document of the following structure:
This document was generated by Takeshi Abe on July 20, 2010 using texi2html 1.82.