可変フレームレート ムービーを作成するには、私のQTWriterクラスを使用できます。これは、Matlab のVideoWriterクラスに着想を得た使いやすい単一のクラス ファイルであり、Matlab スタイルのグラフィックスに適したいくつかの形式で QuickTime でエンコードされたムービーをネイティブにエクスポートできます。(出力ファイルを再生したい場合を除いて) QuickTime でさえも、他には何も必要ありません。特に、フレーム レートを連続的に変化させる Quicktime の機能をサポートしています。
この QuickTime ムービーに似たムービーを生成するコードの例を次に示します。
% Prepare new movie file using the default PNG compression
movObj = QTWriter('peaks.mov');
% Create an animation
hf = figure; Z = peaks; surfc(Z); frames = 100;
axis tight; set(gca,'nextplot','replacechildren');
% Animate plot and write movie
for k = 0:frames
surfc(sin(2*pi*k/frames)*Z,Z);
% Vary the frame-rate
movObj.FrameRate = k;
% Write each frame to the file
writeMovie(movObj,getframe(hf));
end
% Finish writing movie and close file
close(movObj);
Matlab 内では、可変フレームレートの QuickTime ムービーは、関数に渡すことで、Matlab のクラスで再生できますVideoReader
(Windows/Linux ではこれについてはわかりません) 。出力ムービーを別のコンテナ形式 (AVI など) または可変フレームレートをサポートしていないコーデック (または変換ソフトウェアがサポートしていない場合) に変換する場合は、変換したムービーのフレームレートを最高に設定する必要があります。 QuickTime ファイルのフレームレート。これにより、ファイルが大きくなる可能性があります-可変フレームレートのムービーは、一時的に圧縮されていると考えることができます(フレーム間圧縮で行われるのと少し似ています)。readerobj.FrameRate
movie
フレームレート パラメータには無限の解像度と範囲がないため、'TimeScale'
パラメータも調整する必要がある場合があります。ユーザーのハードウェア、デコードの計算コスト、およびデータ レートによっては、高フレームレートでのムービーの再生が困難になる場合があります。通常、プレイヤーはフレームを落とすだけです。QTWriter
また、'PlayAllFrames'
QuickTime Player にすべてのフレームを強制的にレンダリングさせるオプションもありますが、これは非リアルタイム再生になる可能性があります。または、ファイル サイズが少し大きくなりますが、より高速にデコードできる 'Photo TIFF' 圧縮タイプを選択することもできます。
コードはオープン ソース (BSD) であり、 Githubでホストされています。貢献者を歓迎します。最適化と改善の余地はまだたくさんあります。別の例と結果のムービーは、プロジェクトの Web ページで見ることができます。