社区
多媒体/流媒体开发
帖子详情
如何把H264文件的数据一帧一帧的读出来?(先不用考虑解码)
HHunter
2009-07-31 07:07:46
如何把H264文件的数据一帧一帧的读出来?(先不用考虑解码)
谢谢!
...全文
13956
32
打赏
收藏
如何把H264文件的数据一帧一帧的读出来?(先不用考虑解码)
如何把H264文件的数据一帧一帧的读出来?(先不用考虑解码) 谢谢!
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
32 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
yujie_v
2012-08-23
打赏
举报
回复
学习下,H264划分帧确实很麻烦
zxm006
2012-06-14
打赏
举报
回复
都是大仙级别啊,我目前也碰到要从mp4文件读出h264的需求
te_esperare
2012-06-09
打赏
举报
回复
67 ...... 68 ..... 65 ........ 61....... 61 ........ 61 .......
像上边这个码流,找到了65或者61,说明是完整的一帧,(67 ...... 68 ..... 65 ......)就是一帧,是I帧;找到61(也可能是41什么的),也是完整的一帧,(61 .......)是完整的P帧。
zhutoutou008
2012-06-04
打赏
举报
回复
各位流媒体神人,新手给你们跪下了.你们太强大了.
Mical007
2011-11-04
打赏
举报
回复
这个还在,,,
divineguo
2011-09-16
打赏
举报
回复
看了大家的讨论,我对20楼的观点比较赞同:"一帧可能有几个SLICE的!你要把所有的SLICE定位出来,然后再找到每个SLICE的起始宏块的地址,地址为0的话就是一帧开始了!"
的确,除去sps和pps,单纯从0x0000000101和0x0000000105来看,直接是看不出帧的边界的,只是一个个的slice的边界罢了,但是一个slice的起始宏块的地址是0,则代表该slice是一帧的第一个slice,故也就是一帧的开始了。
当时求帧边界时,用了个取巧的办法:就是当遇到0x0000000101和0x0000000105时,求出对应的dts,而如果帧率为25,则每帧的播放时间是0.04秒,则求出下一个0x0000000101和0x0000000105时,求出其dts,如果和前面的基准dts的差是0.04秒,则认为就是一帧了。
----------------ES流中没有dts呀
moonvan
2011-09-11
打赏
举报
回复
学习了
czgwdm
2011-05-31
打赏
举报
回复
看了大家的讨论,我对20楼的观点比较赞同:"一帧可能有几个SLICE的!你要把所有的SLICE定位出来,然后再找到每个SLICE的起始宏块的地址,地址为0的话就是一帧开始了!"
的确,除去sps和pps,单纯从0x0000000101和0x0000000105来看,直接是看不出帧的边界的,只是一个个的slice的边界罢了,但是一个slice的起始宏块的地址是0,则代表该slice是一帧的第一个slice,故也就是一帧的开始了。
当时求帧边界时,用了个取巧的办法:就是当遇到0x0000000101和0x0000000105时,求出对应的dts,而如果帧率为25,则每帧的播放时间是0.04秒,则求出下一个0x0000000101和0x0000000105时,求出其dts,如果和前面的基准dts的差是0.04秒,则认为就是一帧了。
CyberLogix
2011-04-20
打赏
举报
回复
解析NAL或者BYTECODE得到PPS,SPS,SLICE等数据
xchl1127
2011-01-19
打赏
举报
回复
太深奥了,正在学习中
china_clear
2010-09-28
打赏
举报
回复
一帧可能有几个SLICE的!你要把所有的SLICE定位出来,然后再找到每个SLICE的起始宏块的地址,地址为0的话就是一帧开始了!
rienzi
2010-08-27
打赏
举报
回复
流媒体同行,学习,留爪印
lzmilypforev
2010-04-25
打赏
举报
回复
话说这东西可真是难啊...
wfcancer
2010-01-29
打赏
举报
回复
都是高手,领教了
znj_326
2009-10-30
打赏
举报
回复
我日哦,登录还是看不到呢
HHunter
2009-08-18
打赏
举报
回复
非常感谢各位,我跟踪看看...
lius1984
2009-08-11
打赏
举报
回复
你下载这个h.264解码器的工程源码 跟踪一边就清楚了。 http://www.winbile.net/bbs/forums/threads/1012589.aspx
mubai007
2009-08-11
打赏
举报
回复
[Quote=引用 7 楼 firedsky 的回复:]
引用 6 楼 mubai007 的回复:
看你如何采集的,我这边有一个21字节的文件头00 00 00 01 67 42 00 1E AB 40 B0 4B 20 00 00 00 01 68 CE 38 80,然后以00 00 00 01为一帧的开始。有时会在每一帧开始时加入每一帧的大小4字节。
你这是一个序列参数集,不是建议NAL序列中的第一个NAL,在单元分隔符NAL之后。不过它可以算是新的一帧的开始,如果没有单元分隔符NAL的话,用这个区分一帧数据是可以的,只是不太方便。
[/Quote]
像我这种情况怎么区分一帧数据比较好?
该怎么组织数据?
Ryan裤子
2009-08-04
打赏
举报
回复
[Quote=引用 9 楼 SmallBigCat 的回复:]
to ttxk:
视频怎么会没有帧的概念呢?
[/Quote]
H264的字节流确实没有帧的概念.具体原因请仔细研读协议.
这里我并没有说视频.
firedsky
2009-08-04
打赏
举报
回复
这个要看你怎么理解了。和MPEG2、MPEG4相比,H.264字节流中帧的形式发生了变化。以视频帧为例,MPEG2和MPEG4字节流在传输的时候提取帧的关键参数,将其封装入传输包首部,比如TS包或RTP包,而包负载中的数据仍然是一个完整的图像帧。也就是说,你即使不使用包首部中所设置的关于包负载的参数信息,也能够根据包负载中的帧数据本身进行正确的解码。
而H.264码流本身对图像数据就做了处理,将一个完整的图像帧进行分解,抽出序列参数集、图像参数集等帧信息,放到各自对应的NAL中,而图像数据本身则封装进编码条带中。这样,在NAL流中,仅仅根据编码条带NAL单元是解析不出图像来的,必须和序列参数集、图像参数集NAL配合才能解出。也就是说,MPEG2、MPEG4编码的一帧数据,被分解成了H.264中的多个NAL单元,H.264编码的抽象化程度更高了。但是H.264码流在组织的时候仍然是以一帧数据为单位的,它并不会将多帧数据交织到一起,只不过表现在形式上,需要用多个NAL单元才能组成一个完整的数据帧。
加载更多回复(10)
B站的基于python的Opencv项目实战-唐宇迪.zip
B站的基于python的Opencv项目实战-唐宇迪.zip
借助 LLaMA 3 等大模型,为全球百余种语言个性化学习提供支持的对话类 AI Agent,适用于全球旅行与生活场景
资源下载链接为: https://pan.quark.cn/s/538a38db2c7e 借助 LLaMA 3 等大模型,为全球百余种语言个性化学习提供支持的对话类 AI Agent,适用于全球旅行与生活场景(最新、最全版本!打开链接下载即可用!)
一个基于 Python 的网易云音乐-音乐合伙人任务脚本,支持本地运行和 GitHub Actions 自动执行。.zi
一个基于 Python 的网易云音乐-音乐合伙人任务脚本,支持本地运行和 GitHub Actions 自动执行。.zip
fuint餐饮系统是一套专为餐饮行业设计的开源会员管理与营销解决方案_基于Java_SpringBoot_MySQL_Redis_Uniapp_Element_UI技术栈_前后端分.zip
fuint餐饮系统是一套专为餐饮行业设计的开源会员管理与营销解决方案_基于Java_SpringBoot_MySQL_Redis_Uniapp_Element_UI技术栈_前后端分.zip
基于Python_PyQT5的产生式动物识别系统.zip
基于Python_PyQT5的产生式动物识别系统.zip
多媒体/流媒体开发
2,554
社区成员
20,277
社区内容
发帖
与我相关
我的任务
多媒体/流媒体开发
专题开发/技术/项目 多媒体/流媒体开发
复制链接
扫一扫
分享
社区描述
专题开发/技术/项目 多媒体/流媒体开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章