求解xvid解码实现随机访问

扯淡砖家 2013-03-19 04:12:39
新手求教:
用xvid进行解码播放视频,如何实现在随机访问。就是播放器随意进度条来从指定位置开始播放视频。网络上都找不到相关的信息呀。
...全文
146 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
扯淡砖家 2013-03-21
  • 打赏
  • 举报
回复
引用 11 楼 baipv008 的回复:
定位开始播放的帧不需要解码。开始解码后就和普通播放时一样了。
额,大哥,我在这方面是新手,很多东西都还不懂,你说的定位开始播放的帧不需要解码是什么意思?不解码怎么知道是哪个帧?
扯淡砖家 2013-03-21
  • 打赏
  • 举报
回复
引用 15 楼 baipv008 的回复:
只要读一下一帧压缩数据靠近开头某个字节就能判断。具体自己去看吧,我也早忘了。
哦,那我继续看看,再过两天如果没人回复就结贴给你分
千树之影 2013-03-21
  • 打赏
  • 举报
回复
只要读一下一帧压缩数据靠近开头某个字节就能判断。具体自己去看吧,我也早忘了。
扯淡砖家 2013-03-21
  • 打赏
  • 举报
回复
引用 13 楼 baipv008 的回复:
你打开一个视频文件,调用API读取一帧图像,这帧图像是压缩的,你需要调用xvid的解码函数才能变成一副图像,但你不需要调用解码函数就能从压缩数据里把图像类型信息(I帧还是P帧)读取出来
哦,那压缩数据怎么判断类型,我现在判断类型是解出来之后才判断的
千树之影 2013-03-21
  • 打赏
  • 举报
回复
你打开一个视频文件,调用API读取一帧图像,这帧图像是压缩的,你需要调用xvid的解码函数才能变成一副图像,但你不需要调用解码函数就能从压缩数据里把图像类型信息(I帧还是P帧)读取出来
扯淡砖家 2013-03-20
  • 打赏
  • 举报
回复
引用 7 楼 baipv008 的回复:
引用 6 楼 wow818wow 的回复: 引用 5 楼 baipv008 的回复: 一帧数据读进来不同解码就可以判断是不是I 帧。你把第500帧读进来,判断是不是I帧,如果不是就继续往后面找501,502,503....,一般最多几十帧内就能找到下一个I帧,然后从这个I帧开始解码就行。 但是每一帧的长度不一定,我如何能够快速的定位到这一帧呢?这个才是我现在遇到的最大问题 先每一帧顺序……
如果这个视频有2G多呢?一样很快么?
千树之影 2013-03-20
  • 打赏
  • 举报
回复
引用 6 楼 wow818wow 的回复:
引用 5 楼 baipv008 的回复: 一帧数据读进来不同解码就可以判断是不是I 帧。你把第500帧读进来,判断是不是I帧,如果不是就继续往后面找501,502,503....,一般最多几十帧内就能找到下一个I帧,然后从这个I帧开始解码就行。 但是每一帧的长度不一定,我如何能够快速的定位到这一帧呢?这个才是我现在遇到的最大问题
先每一帧顺序读一遍,不用解码就能知道每一帧的长度,很快的。
扯淡砖家 2013-03-20
  • 打赏
  • 举报
回复
引用 5 楼 baipv008 的回复:
一帧数据读进来不同解码就可以判断是不是I 帧。你把第500帧读进来,判断是不是I帧,如果不是就继续往后面找501,502,503....,一般最多几十帧内就能找到下一个I帧,然后从这个I帧开始解码就行。
但是每一帧的长度不一定,我如何能够快速的定位到这一帧呢?这个才是我现在遇到的最大问题
千树之影 2013-03-20
  • 打赏
  • 举报
回复
定位开始播放的帧不需要解码。开始解码后就和普通播放时一样了。
扯淡砖家 2013-03-20
  • 打赏
  • 举报
回复
引用 9 楼 baipv008 的回复:
引用 8 楼 wow818wow 的回复: 引用 7 楼 baipv008 的回复: 引用 6 楼 wow818wow 的回复: 引用 5 楼 baipv008 的回复: 一帧数据读进来不同解码就可以判断是不是I 帧。你把第500帧读进来,判断是不是I帧,如果不是就继续往后面找501,502,503....,一般最多几十帧内就能找到下一个I帧,然后从这个I帧开始解码就行。 但是每一帧的长……
但是我今天下午试过了,解码的时间也很长,不知道是不是因为我的步骤有问题
千树之影 2013-03-20
  • 打赏
  • 举报
回复
引用 8 楼 wow818wow 的回复:
引用 7 楼 baipv008 的回复: 引用 6 楼 wow818wow 的回复: 引用 5 楼 baipv008 的回复: 一帧数据读进来不同解码就可以判断是不是I 帧。你把第500帧读进来,判断是不是I帧,如果不是就继续往后面找501,502,503....,一般最多几十帧内就能找到下一个I帧,然后从这个I帧开始解码就行。 但是每一帧的长度不一定,我如何能够快速的定位到这一帧呢?这个……
一样很快。其实就和读一个2G文件到内存的时间差不了多少。
千树之影 2013-03-19
  • 打赏
  • 举报
回复
一帧数据读进来不同解码就可以判断是不是I 帧。你把第500帧读进来,判断是不是I帧,如果不是就继续往后面找501,502,503....,一般最多几十帧内就能找到下一个I帧,然后从这个I帧开始解码就行。
扯淡砖家 2013-03-19
  • 打赏
  • 举报
回复
引用 3 楼 baipv008 的回复:
找最近的I帧开始解码。 例如1000帧的,你拉到500帧开始播放,但500帧不是I帧,就去附近找最近的I帧开始解码,播放。
但是怎么找I帧?我希望的是可以跳过前面的解码部分,而从我需要的地方开始解码起。这可以实现吗?还是只有把所有帧都解了,然后再找?
千树之影 2013-03-19
  • 打赏
  • 举报
回复
找最近的I帧开始解码。 例如1000帧的,你拉到500帧开始播放,但500帧不是I帧,就去附近找最近的I帧开始解码,播放。
扯淡砖家 2013-03-19
  • 打赏
  • 举报
回复
引用 1 楼 sha_jinhao 的回复:
http://download.csdn.net/download/wacctt/2881750
版主大哥,我不是要解码器,解码我已经实现了,视频图像也有,我是想要实现进度条拖动来播放指定位置的图像,比如我一个小时的视频,我点进度条中间的位置,我可以看到30分时的图像
jimette 2013-03-19
  • 打赏
  • 举报
回复
http://download.csdn.net/download/wacctt/2881750

64,681

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧