スポンサード リンク

T.Ishii's Software Library

HTML5 レトロ風ゲーム館

無料ブログはココログ

« 統一性が無いのは困り者 | トップページ | Ubuntu版の改良点 »

今更なので・・・

今は、Ubuntu版AG-ムービーカッターの変更作業を行なっているのだが、Ubuntu版では、一般動画のデコードやエンコードにはLibAVFormatのライブラリ関数を使っている。その結果、Windows環境でエンコードしたMJPEG動画は正しく再生されない、と、思っていたのだが。

libavformatのライブラリ関数を使って動画をデコードすると、その出力画像形式はデコード元の動画によって変わるのだが、普通は、YUV420形式になっている。

具体的には、作者の手持ち動画で試してみた所では、wmv/mpg/mp4/movなんかについては、デコーダーの出力はYUV420形式になっているのだが、唯一、MJPEGだけは、デコード結果はYUV422形式になっている。

もっとも、多分、Ubuntu12.04LTSの時代から、Windows環境でエンコードしたMJPEGファイルは、Ubuntu環境では正しく再生出来なかった。

具体的には、縦方向のセットになる2ラインで偶数/奇数ラインの内容が入れ替わっているので、ぱっと見は正しいのだが、よくよく見ると、大昔のインタレース動画でインタレース解除に失敗した感じの画像になっていた訳だ。

もっとも、上記の様な画像になるのが作者製ソフトに限られていた場合、作者的には、作者製ソフトの問題、という事にしたのだが、実際には、libavformatは使っていなさそうなVLCでも、上記と同様の再生画像になっていた訳だ。

と、いう事で、作者的には、Ubuntu環境でMJPEG動画が正しく再生されないのは、マイクロソフトとLinux陣営とで、MJPEGの仕様の解釈が異なる為かなあ、と、思っていた。

このため、とりあえず、Ubuntu14.04LTSでは、VLCプレイヤーでも、Windows環境でエンコードされたMJPEGファイルは正しく再生されないので、作者的にも、問題があるままにしてあった訳だ。

しかし、今回、Ubuntu14.04LTS環境では正しく再生されないMJPEG動画ファイルをUbuntu16.04LTS環境で再生してみた所、問題なく再生された。

と、いう事なので、どうしようかなあ、と、一瞬、思った訳なのだが、今更なので、特別な対応はとらない事にした。

ちなみに、その結果、どうなるのか、というと、Ubuntu14.04LTS環境では、今まで通り、MJPEG動画は正しく再生されず、Ubuntu16.04LTS環境では正しく再生される、という事になる。

作者的には、Ubuntu14.04LTS環境でも、デコーダーから出力される画像形式はRGB形式等に変換しているので、その変換ルーチンを少し弄るだけで、Ubuntu14.04LTS環境でも、MJPEG動画を正しく再生させる事が可能で、実際、手元には、そういう対策を施したバイナリもある訳だ。

しかし、問題の本質はUbuntuのバージョンではなく、libavformatのバージョンか提供元になる訳なので、下手に、Ubuntuのバージョンを見て対策コードを入れてしまうと、libavformatを入れ替えている環境では、問題を発生させてしまう事になる。

と、いう事もあり、今回も、対策は打たないので、普通のUbuntu14.04LTS環境では、MJPEG動画は正しく再生されないのだが、これはAG-ムービーカッターのバグではないので、Ubuntu16.04LTS環境では、同じソースコードからビルドされたAG-ムービーカッターで、問題なくMJPEG動画の再生も可能だ。

« 統一性が無いのは困り者 | トップページ | Ubuntu版の改良点 »

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/534482/65170384

この記事へのトラックバック一覧です: 今更なので・・・:

« 統一性が無いのは困り者 | トップページ | Ubuntu版の改良点 »

2017年7月
            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 のパートナーは当サイトや他のサイトへのアクセス情報に基づく広告をユーザーに表示できます。

    Cookieを無効にする設定およびAdsenseに関する詳細については、以下のリンクを参照下さい。

    広告 - ポリシーと規約 - Google