今は、macOS用ネイティブ版AGMPlayerの開発フェーズで、Windows版のストリーム録画機能を除いた機能は実装できたので、このレベルでリリースする事にして使い込みを行いつつ、最終調整中なのだが、MP4エンコーダーのコードは微変更した。今回開発しているAGMPlayerでは再生可能な動画はAGM/MP4形式に再エンコード可能なのだが、その為に使用しているMP4エンコーダーはAVFoundationを使って実現している。このMP4エンコーダーは、既に、macOS用AGMConvとAG-ムービーカッターに実装してリリース済みなのだが、少なくとも作者的には、そのエンコード出力に少し不満があった訳だ。具体的には、例えば、30FPSのAGM形式動画をMP4形式にエンコードした場合、エンコード出力されるMP4動画が、30FPSにしては、ギクシャクしている様に感じられる事があった。MP4エンコーダーの出力がフレーム落ちしている感じになる事もあったのだが、そうはならない事もあったので、今日までは、特に対策は行なっていなかった。2016モデルにもインストールして動作確認しているのだが、そこでMP4エンコーダーを使うと、出力されるMP4動画の画質は、より一層、悪い感じになっていた訳だ。2016モデルでエンコードしたMP4ファイルを再生すると、ティアリング現象が発生した。コマ送りで各フレームを見ていくと、元々の動画では2つのフレームに分かれていた画像が、一つのフレームに分割されて入っている現象を確認できた訳だ。15インチモデルのAVFoundationに固有のバグなのかもしれない。15インチモデルでは、マトモにMP4エンコードが出来ない、なんて事になると、結構、辛いので、何とかならないモノか、と、色々と試してみた訳だ。その結果としては、AVFoundationの使い方を少し変更する事で、問題を無くす事が出来たのだが、その変更というのは、元々は、AVFoundationのエンコーダーに渡すピクセルバッファは一つだけ生成して全ての書き込みで使い回していたのだが、書き込み毎に別のピクセルバッファを生成する様にした、という事だ。前述のティアリングというのは、まだ、AVFoundationのエンコーダーがピクセルバッファを使用しているタイミングで、作者ルーチンがピクセルバッファの内容を書き換えていた為に、発生していた問題である筈だったので、作者的には、元々、エンコーダーのready確認やピクセルバッファのロックは行なっていたのだが、より確実に、そういう現象が発生しない様に、AVFoundationに渡したピクセルバッファには、それ以降、アクセスしない様に変更した訳だ。2016モデルでMP4エンコードを行なっても、ティアリング現象は発生しなく出来たのだが、既にリリース済みのAG-ムービーカッターとAGMPlayerでは、この現象が発生する筈なので、これらについても、修正版をリリースする事になる筈だ。ちなみに、フレーム落ちする感じに見える問題についても、別の変更を行う事で解決した。具体的には、作者製のエンコード処理ルーチンでは、フレームレートの変更も可能にしてあるのだが、MP4エンコード時には、そのフレームレート計算の誤差が悪影響を与えていたので、その誤差の悪影響を回避できる様にした。作者製のエンコード処理ルーチンでは、ソース動画からフレーム画像を受け取り、出力動画のエンコード用に使うのだが、受け取るフレーム画像のフレームレートが高すぎると判断した場合には、そのフレームを捨てる処理を行うのだが、フレームレート計算で誤差が発生すると、本来は捨てる必要がないフレームを捨てる事になってしまう訳だ。やって1フレームを捨てる事になったとしても、それだけでは、見た目で判るくらいのフレーム落ちにはならないのだが、そうやってフレームを落とす事で、今度は、フレームが微妙に足りない計算になるので、同一フレームを二度書き込む現象が発生する訳だ。なると、今度は、また、フレームが微妙に多くなるので、ソース動画から送られてくるフレームを落とす格好になり、また、フレームが足りなくなり・・・、という感じでフレーム落ちが繰り返されていた訳だ。言う事で、上記の問題についても、AGMConv/AG-ムービーカッターにも、内在しているので、近々、リリースされる筈の修正版では、これらの問題も、修正される事になる筈だ。Adsense)サービスを利用しています。使用して、ユーザーのウェブサイトでの閲覧履歴に基づく広告を配信します。パートナーは当サイトや他のサイトへのアクセス情報に基づく広告をユーザーに表示できます。収集された情報がGoogleによってどの様に使用されるか、収集される情報をユーザーが管理する方法については、以下のリンクを参照下さい。