CRI Sofdec  Last Updated: 2024-01-10 18:57 p
シーク再生

シーク再生機能について説明します。

シーク再生とは

「シーク再生」とは、ムービーの途中から再生を開始する機能です。再生位置の指定はフレーム番号で行います。


シーク再生の準備

シーク再生を行うためには、プレーヤーハンドル作成後に criManaPlayer_SetMetaDataWorkAllocator()で再生開始前にメタデータ用メモリアロケーターを必ず登録してください。メモリアロケーターが登録されると、シーク再生に必要なメタデータ用のワークバッファーがヘッダー解析時に確保されます。

注意
メタデータ用メモリアロケーターを登録しない場合はシーク再生出来ません。再生開始位置を指定しても先頭から再生を開始しますのでご注意ください。

再生開始位置の指定

再生開始位置はフレーム番号で指定します。指定には criManaPlayer_SetSeekPosition() を使用します。
再生開始位置の指定は「再生開始前」に行ってください。
なお、指定できるフレーム番号の範囲は、0から(ビデオの総フレーム数−1)です。

再生中のムービーに対して、シーク位置を指定して再生位置を変更することは出来ません。
再生位置を変更したい場合は、一旦再生停止してから再生しなおしてください。

シーク再生時のパラメーター取得

シーク再生を行った場合に取得できる情報について説明します。

  • 再生時刻
    criManaPlayer_GetTime() は0からではなく、シークした位置の時刻から始まります。
    10秒の位置にシークした場合、時刻は10秒から始まります。
  • フレーム番号
    取得できるフレーム情報構造体 CriManaFrameInfo のフレーム番号は、0からではなくシークした位置から始まります。
    フレーム番号 90にシークした場合、取得できるフレーム番号も90から始まります。
  • 字幕
    取得できる字幕は、字幕の「開始時刻が再生開始位置よりも後ろ」のもののみです。
    「終了時刻」だけが再生開始位置よりも後ろにある字幕は取得できません。


シーク再生時のファイル読み込み

シーク再生時のファイル読み込み動作について説明します。
ムービーの途中から再生する場合でも、データの途中からいきなりファイルを読むわけではありません。 実際の読み込みはファイルの先頭を少し読んでから、データの途中にシークして読み込みを再開します。
そのためシーク再生の場合、再生開始関数を実行してから実際にフレームが取得できるまでの時間は単純再生よりも長くなります。