2017-07-18 75 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的视频,时基是微秒,所以帧* 50 * 1000000,但是,这并不对我也工作...

我试图改变标志也,但没有运气。

回答

0

我认为这是问题所在。我在一个循环中运行这个查找来摧毁代码,并尝试解决任何我能做到的错误。这将允许逐帧寻找和向后寻找。

我试着在我所有能加的组合在一起的标志,终于发现了一张字条给,他们应该或运算一些其他的标志(|)不加(+)...

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

我打赌任何寻求时间戳的人都需要下面的SeekFlag而不是SEEK_FRAME。

VideoJNI.Demuxer_SEEK_ANY_get()