VideoView seekTo 查找关键帧

在新公司项目赶进度,有个模块需要播放视频,使用了VideoView,结果需要来回传递播放进度,需要使用VideoView的seekTo方法,因为上传的视频比较小,也就十几秒,结果发现一个问题,就是视频会跳,明明拖拽到8秒的地方,结果点击播放从头开始了。



其实 ,在VideoView里面seekTo,会就近查找关键帧,这个和视频源是有关系的,当然这里不讲怎么搞关键帧,毕竟我也不是专业做视频的,我们只要告诉测试小姐姐,关键帧在第几秒。然后一句系统的问题,我也搞不了就可以回家休息啦。



我是用mac的,下载ffmpeg,在iTerm2里输入ffprobe -show_frames(显示帧信息) xxx(视频文件路径)
比如我是放在桌面文件夹

输入回车
下面就是视频帧信息,一般来说一个屏幕是放不下的,我们可以将日志输出


命令 :ffprobe -show_frames /Users/leo/Desktop/key/dd.mp4 >video_log.txt



找到我们的文件打开



什么才是关键帧 呢 可以搜索下
key_frame=1 表示是关键帧,其实我这个视频只有两个关键帧,为啥查出来200多个呢?

有个参数叫pict_type 当type为I的时候,才是我们viedeView能seek的



搜索pict_type=i 发现只有两处



pkt_pts_time 就是关键帧的时间节点

终于我可以拿着数据告诉测试小姐姐,你看就俩关键帧,只能跳来跳去的了


你可能感兴趣的:(VideoView seekTo 查找关键帧)