0

私はおそらく過去 2 週間、Apple Quicktime のドキュメントを検索して、かなり基本的な質問のように思えるものを解決しようとしましたが、役に立ちませんでした。これが問題です...

それぞれ 3 つのトラックを含む短い QTMovie ファイルがいくつかあります。通常、音声とビデオを含む 2 つと、字幕付きのテキスト イメージを含む追加のビデオ トラックがあります (合計 2 つのビデオ トラックを作成します)。Quicktime Pro でこれらのトラックの 1 つを選択し、それを「ムービーから画像へのシーケンス」としてエクスポートすると、ムービーの継続時間全体に 142 の静止画が広がることがわかります。私の検索方法でも、正しい合計フレーム数が報告されます。

ここで、単一フレームの画像を取得して QTMovie に追加し、「attributeForKey:QTMovieDurationAttribute」を使用して、個々の画面上の表示時間を好きなだけ設定できることを学びました。しかし、一体どうすればそのデータに再びアクセスできるのでしょうか? (これは本質的に、このプロセスの逆のように見えます)。

疑似コードでは、私がやろうとしていることは次のようなものです:

{
select video track #2 ...
call up the first image in the sequence ...
access and note its on-screen duration setting ...
call up the second image ...
access and note its duration ...
... repeat until done.

}

私はこのデータなどを編集した後ではありません-ビデオトラック内の個々のフレームにアクセスする方法を見つけただけです...そして、このタイミング情報がQTの腸内に隠れている場所.

高齢者として、私はこの種のことをするには年を取りすぎていると思います.Quicktimeは大きく、しばしば複雑で紛らわしいフレームワークです.誰かがアドバイスや(理想的には)数行のここのサンプルコードは本当にありがたいです。前もって感謝します :-)

4

1 に答える 1

0

わかった。さらに数日間掘り下げて実験した後、私はついに自分の質問に対する答えを見つけました。私が使用した(次の)字幕画像を取得するには:

// access the subtitle track
Track theTrack = [self getVideoSubtitleTrack];

// set flags to find NEXT image (ignoring the current one)...
myFlags = nextTimeStep;
// ... and search forward from current position.
GetTrackNextInterestingTime(theTrack, myFlags, playheadPos, fixed1, &nextInterestingTime, NULL);

ただし、これは画像オブジェクトの開始のみを検出し、トラックを反復処理すると、連続する各画像の前縁が検出されます。しかし、現在のテキストの終了時間も必要でした。

開始時刻を取得した後、7 つの使用可能なフラグを試してみたところ、フラグを「nextTimeTrackEdit」に設定すると終了時刻が取得されることがわかりました。

于 2013-04-27T23:51:19.940 に答える