对于流媒体视频,有啥方法可以在其播放时准确跳转到某指定一帧
FLV流(注意此处不是FLV封装的文件,流是没有Index的)无法实现帧精确。H.264的TS流可以实现,但这个技术由于需要对GOP作分析,所以对机器性能要求还是很高的,并且目前国内甚至国外也没几家公司有实际产品(一般是用于视频编辑)。至于FLV文件,因为无论是广播电视还是电影或者其他场景,应该不会有人傻到用FLV作为素材格式。所以FLV文件能支持精确到帧也就没太大意义了。对于常见的播放器,比如网页上的等等,因为用户没这方面需求,加上用ffms编码FLV生成精确到帧的FLV文件需要花更长时间,因此一般都没这样弄,甚至在部分Flash播放器上连精确到秒都没办法做到。至于H.264流精确到帧原理,就像上面说的,是对以一个GOP为单位的IBP帧的分析,并且GOP越长,复杂程度越高。更多的东西我就没办法透露了,控标就靠它了。
■网友
视频的帧分为I帧、P帧、B帧(不一定全部种类齐全)I帧是完整的一个画面,P和B是向前或向后与I帧的差别数据,只有找回正确的I帧才能结合形成一个画面。 有些视频为保证质量,全部都使用I帧,这样要精确定位是没有问题的,但是FLV为了最大程度压缩视频,I帧的数量少、间隔大,再加上流文件本身没有一个INDEX作为索引,当你想定位的时侯,只能通过进度条的比例,找到最近的I帧,定位自然是不精确的。 如果在这种视频下,需要精确定位的话,其实可以通过同时分析隔近的P帧和B帧得出。但是这样的话,必须占用大量的资源,本地文件当然是没关系的,但是网络视频的话要把整个GOP长度的帧的数据下载完,对于网站来说,成本太高了。幸好用户这个需求还不强烈,所以就有了现在的结果。
■网友
FLV是容器,里面可以装VP6或者H264,精确定位与容器无关.如果是基于Flash做播放器,客户端无法实现精确定位,但是FMS有一个Enhanced Seeking支持在客户端请求时动态插入I帧以实现精确定位,第三方服务器实现里只有wowza支持该特性.其他所有第三方的实现均不提供该支持.如果是自己基于Dshow或者ffmpeg做播放器,收满一个GOP都塞进解码器,解码出图像之后,在render这边按照时间戳忽略掉指定时间戳之前的图像即可,不难实现.可以参考mpc-hc和vlc等开源项目.
■网友
【对于流媒体视频,有啥方法可以在其播放时准确跳转到某指定一帧】 视频帧在编码压缩之后,会分为 I 帧、P 帧、B帧,后两种的解码依赖于 I 帧(可以认为B、P帧里保存的仅仅是相邻 I 帧的差分)。
所以一般来说播放跳转时,都会落在指定时间附近的 I 帧上。否则,如果是落在 B 或 P 帧,就无法解码图像了。
要达成题主希望的帧级别的定位,其实也很简单,就是先落在时间较早的 I 帧上,然后一直解码解到指定帧,然后再开始播放。。。
推荐阅读
- 5.1声道片源对于没有5.1硬件系统的用户来说有意义吗
- |常州天宁:检察建议让“忙道”回归盲道
- 中国版Evan能火吗美国9岁男童录制评测玩具视频年入800万,中国能否复制成功
- 官方回应“南华县学生被踢视频”:视频内容属实,责令涉事教师停职检查
- 现在在线学习视频有很多了,为啥大部分人还是喜欢下载下来观看
- 微博目前已经支持文本,图片,位置分享,为啥没有语音和视频呢微博的pm肯定想过这两种微博形态,但迟迟不做的原因到底是啥。是语音和视频不符合产
- 虐杀动物视频买卖形成地下产业链,媒体:传播也是宣扬暴力
- 产业链|虐杀动物视频买卖形成地下产业链 传播也是宣扬暴力
- 英雄联盟快捷键Q、E、R咋操作呢
- 有哪些做短视频的自媒体推荐
