我不能为我的生活找出如何用Humble Video寻找。
我的项目是播放多个视频,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 :(得分: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()