画面に表示されるローカル (またはリモート) ビデオ ファイルの字幕に対してテキスト処理を行う必要があります。現在使用しAVPlayerItem
ており、そのアセットを調べると、クローズド キャプション トラックがあることがわかりますが、実際の字幕テキストを取得できません。したがって、問題は、字幕トラックが表示されたときに(できれば迅速に)字幕トラックの実際のテキストを取得するにはどうすればよいかということです。
2269 次
1 に答える
2
http://www.slideshare.net/invalidname/stupid-videotricksdc2014のプレゼンテーションは、これに必要なすべてを提供するはずです (コメント内のサンプル コードへのリンクを参照してください)。
テキスト トラック (クローズド キャプション、サブタイトルなど) があることを確認したら、そのトラックを取得し、AVAssetReader で開き、サンプル バッファーの読み取りを開始する必要があります。それぞれにプレゼンテーションのタイムスタンプと期間があり、次に CMBlockBuffer があります。そのバッファの内容は、読み取っているトラックの種類によって異なり、QuickTime ファイル形式のドキュメントで定義されています。テキストの場合、これは単なる Pascal 文字列です。テキストの長さを示すビッグ エンディアンの UInt16 の後に、テキスト自体が続きます。確かに、必要なエンディアン フリップとデータ コピーは、Swift よりも C の方が自然ですが、確実に実行可能です。または、この部分を独自の C または Obj-C ファイルに残して、Swift から呼び出します。
于 2016-01-07T14:17:59.633 に答える