在新公司项目赶进度,有个模块需要播放视频,使用了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 就是关键帧的时间节点
终于我可以拿着数据告诉测试小姐姐,你看就俩关键帧,只能跳来跳去的了
网友评论