5

コア ビデオ エキスパートの皆さん、私は .mov ファイル用のカスタム ビデオ プレーヤーを作成しています。.mov パーサーが動作しており、ビデオを再生しようとしている QTCoreVideo101 サンプルを使用しています。

私が抱えている問題は、表示リンク getFrameForTime です。時間値を使用して正しいフレームを見つける方法がわかりません。

CVTimeStamp に含まれる値は意味がありません。以下は、1 秒の動画で要求される値のサンプルです。これらの値を使用して .mov ファイルで正しいフレームを見つける方法を誰か説明できますか?

最初の 3 つのリクエスト - CVTimeStamp の値

  1. ビデオ時間: 489150134353920.000000 hostTime: 2026048145326080.000000 videoTimeScale: 241500000.000000 rateScalar: 1.000000 videoRefreshPeriod: 4028320.000000

  2. ビデオ時間: 489150201462784.000000 ホスト時間: 2026048279543808.000000 ビデオ時間スケール: 241500000.000000 レートスカラー: 0.999985

  3. ビデオ時間: 489156643913728.000000 ホスト時間: 2026074988871680.000000

4

1 に答える 1

2

CVTimeStamps はCVTimeStamp リファレンス ドキュメントで説明されています。はvideoTimeScale、1 秒を分割する単位の数です。したがって、30 fps のビデオの場合、少なくとも 30 である必要があります (ただし、30 の倍数 - 60、120、30000 など)。はvideoTime、現在のフレーム (またはフィールド) が開始するタイムスケールの時間です。したがって、タイムベースが 30000 で、15 番目のフレームにいる場合、videoTimeScale30000 になり、videoTime15000 になります。

フィールドをチェックして、smpteTime期待したものと一致するかどうかを確認することで、値が正しく解釈されたことを確認できます。上記の例では、0 時間 0 分 0 秒 15 フレーム (または 00:00:00:15) になります。

OS に組み込まれているビデオ デコード機能だけを使用できる理由はありますか?

于 2012-06-28T01:47:09.990 に答える