お知らせ

  • 利用規約を守って投稿してください。また、よくある質問および投稿の手引きも参照してください。
  • メッセージの投稿にはアカウントが必要です。未登録の方は、ユーザ登録ページからアカウントを作成することができます。

#1 2011-02-14 11:51:31

のんき
メンバ
登録日: 2007-03-04

ffmpegにlibaacplusモジュールを追加したくて

ffmpegにlibaacplusモジュールを追加したくて以下の操作を行いました所
下記コード欄のようなエラーが出て作成出来なくなりました。
ホームページを色々検索してみましたがコンパイル順番が間違っているので
このエラーが出るとの情報を得ただけで具体的にどこをどのように修正したら
よいのか解りません。お知恵を拝借出来たら幸です。

HOWTO: Install and use the latest FFmpeg and x264
http://ubuntuforums.org/showthread.php?t=786095

からffmpeg、X264をgitにて取り出し、指示のとおり
./configure、makeまで問題なく出来ました。

tipok.org.ua : HE-AAC+ Codec as Shared Library
http://tipok.org.ua/ru/node/17
・libaacplus-2.0.2.tar.gz
・ffmpeg-aacp.diff

からlibaacplus-2.0.2tar.gz、ffmpeg-aacp.diffを取り出し
libaacplusは./autogen、./configure、makeにて登録を行いました。
ffmpeg-aacp.diffはffmpegの対称となっているバージョンが古いため
手作業にて当該と思われるソース行を更新いたしました。

コード:

LD    ffmpeg_g
/home/ubuntu/Public/src/ffmpeg/libavcodec/libavcodec.a(allcodecs.o): In function `avcodec_register_all':
/home/ubuntu/Public/src/ffmpeg/libavcodec/allcodecs.c:356: undefined reference to `ff_libaacplus_encoder'
collect2: ld returned 1 exit status
make: *** [ffmpeg_g] エラー 1

このエラーはSubversionからGitに変わってから出るようになりました。
diffファイルがSubversionの時に作られたものですので当然かもしれません。
よろしくお願いします。

オフライン

 

#2 2011-02-14 16:34:01

einundzwanzighundertsechs
メンバ
登録日: 2008-12-28

Re: ffmpegにlibaacplusモジュールを追加したくて

git レポジトリを FireFox で眺めただけですが,2011/01/26 の日付で,
Add ff_ prefix to data symbols of encoders, decoders, hwaccel, parsers, bsf.
とあるように,ffmpeg ではシンボルに ff_ をプレフィクスするようになったのに,aacplus が未だそうなっていないのが原因です.

ところで,こういう質問のときは git.ffmpeg.org Git へのリンクも貼り付けてあると,
ブラウザでレポジトリを眺められるので,回答が付くチャンスが増えるのではないでしょうか.

オフライン

 

#3 2011-02-14 16:46:41

einundzwanzighundertsechs
メンバ
登録日: 2008-12-28

Re: ffmpegにlibaacplusモジュールを追加したくて

「原因です.」などと断定調にしてしまいましたが,自分では試していないのでもちろん推測です.
エラーメッセージと照らし合わせると,ffmpeg-aacp.diff で追加される変数 libaacplus_encoder の名前に
ff_ がプレフィックスされていないのが当面の問題の原因でしょう.
以下 ffmpeg-aacp.diff の該当部分を抜粋.

+AVCodec libaacplus_encoder = {
+    "libaacplus",
+    AVMEDIA_TYPE_AUDIO,
+    CODEC_ID_AAC,
+    sizeof(aacPlusAudioContext),
+    aacPlus_encode_init,
+    aacPlus_encode_frame,
+    aacPlus_encode_close,
+    .sample_fmts = (const enum SampleFormat[]){SAMPLE_FMT_S16,SAMPLE_FMT_NONE},
+    .long_name = NULL_IF_CONFIG_SMALL("libaacplus AAC+ (Advanced Audio Codec with SBR+PS)"),
+};

オフライン

 

#4 2011-02-14 17:43:47

のんき
メンバ
登録日: 2007-03-04

Re: ffmpegにlibaacplusモジュールを追加したくて

einundzwanzighundertsechs さんの投稿:

git レポジトリを FireFox で眺めただけですが,2011/01/26 の日付で,
Add ff_ prefix to data symbols of encoders, decoders, hwaccel, parsers, bsf.
とあるように,ffmpeg ではシンボルに ff_ をプレフィクスするようになったのに,aacplus が未だそうなっていないのが原因です.

ところで,こういう質問のときは git.ffmpeg.org Git へのリンクも貼り付けてあると,
ブラウザでレポジトリを眺められるので,回答が付くチャンスが増えるのではないでしょうか.

おかげさまで動作するようになりました。
また勉強になりました。ffmpeg.gitリポジトリにそのような変更履歴があることを知りませんでした。
我ながらどこを捜しているんだと反省しきりです。
また、ご指摘にしたがって今度質問する時は参照gitへのリンクをつけて質問するようにします。
ありがとうございました。

オフライン

 

#5 2011-02-14 18:49:43

einundzwanzighundertsechs
メンバ
登録日: 2008-12-28

Re: ffmpegにlibaacplusモジュールを追加したくて

のんき さん による投稿:

ffmpeg.gitリポジトリにそのような変更履歴があることを知りませんでした。

git でも,svn でも,cvs でも,リビジョン管理ツールに変更履歴機能は付き物です.
作業コピーをチェックアウトしていれば
$ git log
等のコマンドで変更履歴を調べられますし,gitk 等の GUI ツールも有ります.
問題の箇所を見つけるには, これらの機能を使う方が http://git.ffmpeg.org/ をブラウザで這い回るより,多分ずっと速いです.
詳しくは
$ git --help log
を参照して下さい.

ただ,私のような面倒臭がりは,自分では使う予定のない作業コピーを,履歴を調べるためだけにチェックアウトすることは有りません.
リンクが貼って有れば,腰の重い私でも「ちょっとクリックして眺めてみよう」という気持ちになることもあるかな…

オフライン

 

Board footer

Powered by FluxBB