スポンサード リンク

T.Ishii's Software Library

HTML5 レトロ風ゲーム館

無料ブログはココログ

« 移植を始めた | トップページ | 今日の進捗は少し »

AGM to MP4は可能に

今は、Mac用AGMPlayerの開発フェーズで、今週は、AVFoundationを使ったmp4/agm変換ツールを作るのだが、今日の時点で、AGM動画をMP4動画に変換する処理は、一応、可能になった。まだ、モノラルだとか音声なしだとかの特殊形式には対応させていないのだが。

昨日の時点では、AGMファイルの読み込みが出来なかったのだが、その問題の原因は、GetFileSizeEx関数にあった。

この関数はWin32APIのモノなので、当然の事ながら、OS Xには存在しないのだが、作者は、何年も前から、Mirror-DTCだとか、AGMPlayerだとか、Nostalgic UFO Battlerだとかの、マルチプラットフォームソフトを開発してきた。

そして、それらのソフトの初版は、大体はWindowsで開発していた訳なので、他OS版については、Windows版からの移植になっているのだが、移植にあたっては、極力、Windows版のソースコードを流用できる様にした。

つまり、Windows版でGetFileSizeEx関数を使っていた場合、OS Xには、そんな関数は存在しないのだが、作者的には、別の関数を使う代わりに、同名で同一の機能を持つ関数を自分で作成して使う格好にしていた訳だ。

当然の事ながら、それらの関数は自前のライブラリとして増築してきているので、今回の開発にあたっても、基本的なAPIについては、移植のネックにはなっていない。

何故なら、Windows版のソースコードを持ってきて、前述のライブラリ用ヘッダーを読み込ませる格好にすれば、Windows版のコードは殆ど無変更で使える状況になっているからだ。

もっとも、作者的には、Win32APIをMacに移植する、なんて無謀な事は考えていないので、前述のライブラリにある同名の関数はWin32APIのそれと全く同じ動作をする訳ではない。

それでは、どんな動作をするのか、というと、例えば、前述のGetFileSizeEx関数では、指定したファイルのサイズが出力できる。

で、GetFileSizeEx関数は、今回の開発を始める前から、前述の自前ライブラリに存在していたので、既に、使用実績もあった事になるのだが、今回は、使い方が異なったので、問題が出た訳だ。

具体的には、自前ライブラリにあったGetFileSizeEx関数は、渡されたファイルハンドルに対して、ファイルの最後までシークしてftell関数でその位置を知る格好で、ファイルサイズを出力していた。

この処理自体には問題は無く、正しいファイルサイズが出力されていたのだが、今回の移植では、前述のファイルハンドルは、そのまま、次のファイル読み出しでも使われていたので、GetFileSizeEx関数でファイルポインタが移動してしまったのが問題になった訳だ。

と、いう事で、原因が判れば、解決は簡単だったので、今日の時点で、AGMファイルの読み込みは可能になり、AVFoundationを使ってMP4ファイルにエンコードして出力する事も可能になった。

で、エンコード性能も見てみたのだが、AVFoundationでのエンコード処理は、Windows環境でQSVを使ってエンコードした場合と殆ど同じ時間で終了した。

具体的には、フルHD15分のAGM形式動画をエンコードしてみた所、Mac mini Late2014では、4分丁度くらいで終了した。

同じファイルをQSVが使えないWindows7のCorei7 2600マシンでエンコードすると約13分、Windows10のQSVが使えるCorei3 3217Uマシンでエンコードすると約8分30秒かかった。

なので、作者の手持ち環境では、最も速くエンコードしてくれる訳なのだが、同じMac mini Late 2014にBootCampでインストールしてあるWindows8.1上では、やはり、4分丁度くらいでエンコードは終わった。

と、いう事で、OS XのAVFoundationのエンコード性能はWindowsのMedia Foundationと比べて特に良くはないのだが、悪くも無いかもしれない。

ちなみに、前述のAVFoundationでエンコード出力したフルHDのMP4ファイルの再生テストを行ってみた所、OS Xで再生できたのは当然として、Windows7/10でも再生できたのだが、更に、Android7のNexus9、iOS10のiPad Airでも再生できた。

数年前までは、フルHDのMP4ファイルなんてモノは、モバイル機器では再生できる気がしなかったのだが、今では、普通に再生できる様なので、色々なデバイスを持っている作者的には、便利な時代になったかもしれない。

« 移植を始めた | トップページ | 今日の進捗は少し »

トラックバック

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

この記事へのトラックバック一覧です: AGM to MP4は可能に:

« 移植を始めた | トップページ | 今日の進捗は少し »

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