2011-02-01 16 views
1

私は約100ミリ秒離れたキーフレームを持つH.264エンコードされたビデオを持っています。私は特定のキーフレームを探すことができないことを知りました。シークした後、再生ヘッドは希望の時間(キーフレーム時間)にジャンプし、数ミリ秒前または後にジャンプします。 2.86
ns.t:2.86
ns.t:2.86
[10時12分01秒GMT + 0100] VideoPlayerNetStream: - のNetStreamたNetStatusEvent NetStream.timeは私のためのトレース出力リレーはNetStream.seek(ミリ秒単位)

ns.tのように見えます。 Seek.Notify時間:ns.time = 2.86
[10時12分02秒GMT + 0100] VideoPlayerNetStream:Seek.Notify info.seekPoint:未定義
ns.t:2.76
ns.t:2.76
NS。 t:2.76
ns.t:2.76
ns.t:2.8
ns.t:2.8

私は2.76(thats 2秒と76ミリ秒)を探しています。あなたが望むキーフレーム(2.76のキーフレームがあります)を探していますが、2.8にジャンプしています。これは、フレームを後方に機能させるために多くの問題を引き起こします。 奇妙なことに、いくつかのキーフレームでは機能し、一部のキーフレームでは機能しません。ビデオに問題はありますか?ビデオが正しくエンコードされているかどうかテストできますか? Googleで検索したところ、人々はキーフレーム以外のものを探すのに問題があることが示されました。しかしここで私はキーフレームを探しています。このアプリケーションは、数秒離れたキーフレームを持つビデオに使用できます。この問題は、ビデオのエンコーディングが異なってエンコードされたときに発生し、ミリ秒単位の機能を実現しました。

私は長い間この問題に苦しんでおり、解決のためのヒント/ポインタを受け取っていただければ幸いです。
Vrushali

答えて

2

よろしくヘルプで述べたように:

playheadTimeプロパティを使用すると、の一つが方法を模索か模索引き起こすことのplayheadTimeを設定して呼び出した直後に期待値を持っていない可能性があります。プログレッシブダウンロードでは、キーフレームのみを検索することができます。したがって、シークを実行すると、指定された時間が経過した後の最初のキーフレームの時間に移動します。あなたはplayheadTimeプロパティを求めるメソッドを呼び出すか、されているかのよう

[...]

探しているが、非同期である、のplayheadTime はすぐを更新しません。シークが完了してから時間を取得するには、はseekイベントを受信します()。これはplayheadTimeプロパティが更新されるまで開始されません。

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/fl/video/VideoPlayer.html#seek

()

のでhttp://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/fl/video/VideoEvent.html#SEEKED は、再生ヘッドが実際のキーフレームに達したときにディスパッチ(のはず)です。

他の言い方をすれば、キーフレームが少なくても、シーク方式が不十分になります。 NB:再生ヘッドが常に適切な時間/キーフレームに即座に設定されるストリーミングビデオの場合は、これは当てはまりません。

あなたはキューポイントを有効にしている場合、解決策は、ビデオのを「ピン」の重要なフレームであると私はそれらをよりacurateた覚えることができる限りseekToNavCuePoint()、seekToNextNavCuePoint()およびseekToPrevNavCuePoint() を使用しています。

+0

私の問題は、ビデオが一時停止状態であるにもかかわらず、再生ヘッドの時間が希望の値に更新された後、再度変更される(数ミリ秒先に進みます)ということです。この新しい時間はキーフレーム時間でもありません。したがって、シークが完了した後でも、再生ヘッドは期待値を表示しません。私が質問で説明したように、私は時間2.76でキーフレームを求めます。再生ヘッドの時間プロパティは2.76に更新され、2.8に変更されます。次のフレームで前のフレームを検索すると、2.76が前のフレーム(2.76 <2.8)になります。だから私は再び2.76を求めなければなりません。しかし、それは2.76ではなく、2.8になることは決してありません。 – Vrushali

+0

"seekは、*指定された時間の後の最初のキーフレーム*の時間に移動します"ので、 "ジャンプ"の前進は "通常"の動作です:指定した時間後に再生ヘッドが最初のキーフレームにスナップします。キーフレームの前にちょっとした時間を探してみてください。デルタが0.04秒(2.8-2.76 = 25pfs)の場合、2.72(2.76-0.04)の時間に達すると、再生ヘッドが2.76(2.72の後の最初のキーフレーム)にスナップされる可能性があります。それ以外の場合は、1秒間に多くのキーフレームをエンコードすることができます(15秒ごとではなく5秒ごとまたは10秒ごとに)、それはもっと激しくスナップしますが、問題+大きなファイルをシフトします。 – nicoptere

関連する問題