スポンサーリンク

T.Ishii's Software Library

HTML5 レトロ風ゲーム館

無料ブログはココログ

« エンコード時は連続出力化 | トップページ | 動作の問題は無くなった »

コード整理は必要だが

今は、AmuseGraphics Ver1.4.1の開発フェーズで、macOS版AGMPlayerに続き、macOS版AG-ムービーカッターの変更作業中で、トランジション効果付きエンコードの品質向上のために特別なコードを追加中だ。動作は問題なさそうだが、より複雑化される。

AG-ムービーカッターの初版は2010年の4月にリリースした事になっているのだが、その頃の本ブログ記事を見てみると、その名称を決める前には、「AVIファイル操作ユーティリティ」と、呼んでいた。

つまり、AG-ムービーカッターというのは、主に、AG-デスクトップレコーダー用に、エンコード負荷が軽く、編集性能も良い、自前動画形式である所のAGM形式を開発するにあたり、そのベースにしているAVI形式動画を扱える諸々の処理ルーチンを開発したのだが、それらの動作確認を行う必要があったので、AVI形式動画の再生/エンコードを行えるツールとして同時開発した、というのが起源になる。

なので、実際の所、動画編集機能なんてのは、後付け機能なので、内部構造的には、そういった機能用のアーキテクチャ設計はされていない。

と、いう事なので、ここのところ書いてきた様に、トランジション効果の追加機能を導入するにあたっては、結構、苦労しているのだが、上記の通りなので、現行版にある各種機能は、逆にいうと、後から付け足してきたモノなので、独立性は高くなっている。

その結果として、AG-ムービーカッターでは、エンコード中に、エンコード対象としている動画の再生なんかも同時に行える訳なのだが、これは何を意味しているのか、というと、エンコード処理を変更するのは、比較的簡単、という事だ。

なので、昨日書いた様に、トランジション効果の追加時に、主に、音声に不連続が発生するのを防ぐための改良は、エンコード時に限る格好にしたのだが、だとしても、AG-ムービーカッターには、初版と比べると、結構、色々な機能が追加されてきている訳だ。

そして、AG-ムービーカッターというのは、AmuseGraphicsファミリーソフトの中では、あまり人気があるソフトでもなかったので、バージョンアップ時に諸々の機能追加は行ってきたのだが、あまり時間はかけたくなかったので、マトモな実装はしてきていない。

このため、現行版では、結構、色々な事が行える様になっているのだが、その分、内部構造は、結構、複雑怪奇になってきている訳だ。

特に、エンコード処理については、前述の様に、独立性が高いので、弄りやすいといえば弄りやすいのだが、一つのスレッドで、全ての動作/オプションをサポートしている格好になっているので、そのスレッドの処理コード量は、物理的に、多くなっている。

そして、もう一つ、処理コードを複雑怪奇にしている原因としては、エンコード用のソースファイルと出力ファイルを仮想化していない、という事が挙げられる。

つまり、現状のエンコードスレッドでは、ソースファイルがAGM形式であるかAVF形式であるかを認識しつつ、処理を行なっているので、ぱっと見のコード量が膨大になってる訳だ。

その解決方法としては、上記している様に、それらのファイルを仮想化してしまって、どの形式のファイルでも同じ形式で扱える様にすれば良いのだが、初版のAG-ムービーカッターでは、AGM形式動画をWVM形式にエンコードする、みたいな事しか鑑みていなかったので、ワザワザ、ファイル形式を仮想化したりはしなかった訳だ。

そして、前述の様に、これまでのバージョンアップ時にも、あまり時間をかけたくない、という事で、上記の様な問題については、見て見ぬ振りをしてきたので、AG-ムービーカッターのエンコードルーチンというのは、作者が見ていても、何これ? 状態になっていた訳だ。

と、いう事なので、今回、トランジション効果の追加機能用に、エンコードルーチンは更に複雑化するので、今回は、少しコード整理もしておこうか、と、思ったりもしている。

ちなみに、AmuseGraphicsファミリーソフトとしては、AG-ムービーカッターの次に、AGMPlayerも開発した。

AGMPlayerは、初版開発当時、Android機器でAGM形式動画を再生可能にするために、AG-ムービーカッターのコードを移植する感じでAndroid用を開発したのだが、その後、PC版も開発した。

で、PC版のAGMPlayerというのは、初版はAndroid版の開発言語だったJavaを使って開発していたのだが、これは、Windowsだけではなく、MacやLinux搭載PCでも動作する様にしたかったからだ。

つまり、AGM形式動画というのは、オリジナル動画形式で、Windows環境では、DirectShowフィルターを用意してあるので、一般の動画プレイヤーでも再生可能なのだが、その他OSでは、DirectShowの様な仕組みは利用できないので、普通なら、再生する事が出来ない訳だ。

なので、DirectShowの様に、デコーダーを提供する格好で既存の動画プレイヤーで再生可能にできないのであれば、動画プレイヤー自体を作ってしまおう、と、いう感じで作ったのがPC版のAGMPlayerだった訳だ。

そして、その後、特に、macOSでApple純正のJavaが廃止された事もあり、AGMPlayerは各OSで、ネイティブアプリ化したのだが、同時に、フリー版のAG-デスクトップレコーダーとAG-Webカメラレコーダーに同梱したりもした訳だ。

これは何故だったのか、というと、巷のWebカメラユーティリティなんかを見ていると、自前のライブラリフォルダーにデータを蓄積して管理したりする機能が搭載されたりしていたからだ。

つまり、作者的にも、そんな機能をAG-WebカメラレコーダーだとかAG-デスクトップレコーダーに入れようか、と、思ったりもしたのだが、AmuseGraphics的には、AGMPlayerがあって、AGMPlayerのライブラリビューを使えば、上記の様な目的は達成できるので、AG-XXX自体にそういった機能を搭載する代わりに、AGMPlayerを同梱する事にした訳だ。

と、いう事で、AmuseGraphicsファミリーソフトの中では、ここ数年、AG-ムービーカッターとAGMPlayerを比べた場合、AGMPlayerの方が存在感が強かった筈なのだが、今回のバージョンアップで、AG-ムービーカッターも、結構、使えるソフトになる筈なので、今後は、両雄並び立つ、みたいな感じになるかもしれない。

« エンコード時は連続出力化 | トップページ | 動作の問題は無くなった »

2019年12月
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