T.Ishii's Software Library

HTML5 レトロ風ゲーム館

無料ブログはココログ

« Libav対応に時間を浪費!? | トップページ | あと少しなのか? »

未だ道半ば

今は、Mirror-DTC Ver1.4.4の開発フェーズで、既にWindows/macOS用はβ2版を公開中だ。Ubuntu版の絡みからUbuntu24.04LTSをチェックしてみた所、AGMPlayerがビルドできなかったので、対応中なのだが、時間がかかっている。

AGMPlayerがビルドできない原因は、使用しているビデオ系ライブラリである所のLibavcodecなんかのライブラリ関数が変更されてしまっているので、現行版が使っているライブラリ関数の多くも存在しなくなっているからだ。

なので、致し方なく、新しい! と、言われている関数を使ってコードを書き直しているのだが、サンプルコードに従って記述してみても、エラーが発生して正しく動作しなかったりしている訳だ。

具体的には、StackOverflowの以下の書き込みを見てみると、雰囲気が伝わる筈だ。

ffmpeg failed to call avcodec_send_packet

上記のページの最後の方に、「I've spent way to much time getting this library to work without using obsolute functions...」

と、書かれているのだが、この書き込みは2017年10月7日の書き込みになる訳だ。

つまり、作者的には、2017年の時点で、同じ様な感想を持ったのだが、それから7年近く経った今でも、また、同じ様な感想をブログに書き込まなければならない状況だ。

と、いう事で、このライブラリの開発スタッフは、作者のみならず、全世界のプログラム開発者に絶大なる時間を浪費させている! という事を自覚していない筈はないのだが、未だに、ライブラリのAPI関数を変更し続けている訳だ。

その結果として、作者的には、また、対応に膨大な時間を費やさなければならくななっているのだが、上記の書き込みの最後に、「it works perfectly for h264 files that I had. but I could not decode mp4 data with this code. do I have to include av_parser_parse2 or what?」というのがある。

作者的には、上記の書き込みの回答とは関係ない所でトラブっているので、上記の書き込みの回答は助けになっていないのだが、上記の様な問題がある! ということは参考になった。

具体的には、現時点では、一番簡単そうな、音声ファイルのデコードだけをやらせてみているのだが、その結果として、mp3ファイルの再生は可能になっているのだが、m4aファイルではある関数でエラーが発生し、wavファイルでは、それよりも前の関数でエラーが発生している。

つまり、mp3ファイルの再生は上手く行ったので、新しいAPI関数に対応できた筈だったのだが、wav/m4aファイルは再生できなかった。

更に言えば、これらのファイルは、全て、Ubuntu22.04LTS用の現行版AGMPlayerでは再生できている。

なので、wav/m4aファイルの再生でエラーが出るのは新しいAPIのバグ! という可能性も捨てきれず、作者的にはストレスになる訳だ。

もっとも、上記の問題については、サンプルコードに記述されていないコードを追加することで、対応できた感じで、とりあえず、音声ファイルの再生は可能になった段階だ。

と、いう事で、Libav系、つまり、ffmpeg系のライブラリのAPIはコロコロと変わり、新しいAPI用のサンプルコードを参照しても、それだけでは正常動作するプログラムは作れないのが常だ。

それではどうすれば良いんだ? と、訊かれたら、ライブラリの開発者的には、自分で考えろ! と、答えるんだろうなあ、と、思ったりする今日この頃だ。

と、いう事なので、作者的にも、得られた解決策の詳細については書かない事にするのだが、作者的には、別に開発者に知り合いはいないので、普通にネットで検索した情報を組み合わせる事で解決に至った、という事だけは書いておく。

もっとも、未だ、道半ばなので、作者的にも、映像付きの動画の再生/エンコードが行えるかどうかは、まだまだ判らない今日この頃だ。

« Libav対応に時間を浪費!? | トップページ | あと少しなのか? »

2024年5月
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  

広告

プライバシーポリシー

  • 当サイトでは、第三者配信による広告(Google Adsense)サービスを利用しています。

    Google を含む第三者配信事業者は、Cookie を使用して、ユーザーのウェブサイトでの閲覧履歴に基づく広告を配信します。 Google 広告 Cookie を使用することにより、Google や Google のパートナーは当サイトや他のサイトへのアクセス情報に基づく広告をユーザーに表示できます。

    収集された情報がGoogleによってどの様に使用されるか、収集される情報をユーザーが管理する方法については、以下のリンクを参照下さい。

    ポリシーと規約 - Google