2017-07-18 4 views
1

私の人生のために私はどのように探すべきかを理解することはできませんHumble Video謙虚なビデオを求める(Javaライブラリ)

私のプロジェクトは100%同期した複数の動画を再生することです。特定のフレームを探す必要があります。

私のビデオはAVIになります、すべてのビデオは非常に短いクリップ(< 30秒)になります、すべてのパケットはフレームです(私はチェックしました)。

//count the number of frames the first time 
    while (demuxer.read(packet) >= 0) { 
     numFrames++; 
    } 
    System.out.println(numFrames); 
    //this resets me to packet 0, but so does every other thing I try 
    demuxer.seek(videoStreamId, 0, 0, numFrames, VideoJNI.Demuxer_SEEK_BACKWARD_get()); 

    //this seek resets me to packet 0 also... 
    demuxer.seek(videoStreamId, 0, frame, numFrames, VideoJNI.Demuxer_SEEK_BACKWARD_get()); 

私は必要なフレームを探すことができます。 フレームの代わりにタイムスタンプを付ける必要がある場合、私はそれらの計算を行うことができます。

私はタイムベースはマイクロ秒で、50fpsのビデオを持っているので、フレームは* * 1000000 50が、それはどちらか私のために動作しません...

私はまた、フラグが、運を変更しようとしました。

答えて

0

私はこれが問題だと思います。私はコードをスラッシュして、できる限りのバグを見つけようと、これをループで実行していました。これにより、フレームごとのシークおよびバックワードシークも可能になる。

私は私ができるすべての組み合わせで一緒にフラグを追加してみました、そして最終的に彼らはORで結合されなければならないいくつかの他のフラグにメモを見つけた|私は

demuxer.seek(videoStreamId, 0, frame, numFrames, VideoJNI.Demuxer_SEEK_BACKWARD_get()|VideoJNI.Demuxer_SEEK_FRAME_get()); 

...追加されていません(+)()タイムスタンプを求めている人に賭けてみると、SEEK_FRAMEではなくSeekFlagが必要になります。

VideoJNI.Demuxer_SEEK_ANY_get() 
関連する問題