mpeg文件中如何知道音视频流的类型

dreameasy 2004-04-13 12:00:36
限制:
(1)不用Graphedt,这个没用
(2)从mpeg系统层次去看. (从PSM可以读到视频流信息,但是PSM好象不是每个mpeg文件都有,为什么?
PSM = Program Stream map (0x 00 00 01 BC ...)

还有什么办法吗?在不去解PES包里的压缩音视频数据的前提下,如何知道音视频类型?

望高手指点一二.
...全文
123 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
dreameasy 2004-05-08
  • 打赏
  • 举报
回复
受益匪浅.
wusoa 2004-05-07
  • 打赏
  • 举报
回复
顶一下,我也获益了不少...
luckyzlcat 2004-05-07
  • 打赏
  • 举报
回复
受教了。
GoogleGeek 2004-05-06
  • 打赏
  • 举报
回复
区分mpeg1audio和mpeg2audio?
实际上很简单!
if (startcode >= 0x1e0 && startcode <= 0x1ef) {
type = CODEC_TYPE_VIDEO;
codec_id = CODEC_ID_MPEG2VIDEO;
} else if (startcode >= 0x1c0 && startcode <= 0x1df) {
type = CODEC_TYPE_AUDIO;
codec_id = CODEC_ID_MP2;
} else if (startcode >= 0x80 && startcode <= 0x9f) {
type = CODEC_TYPE_AUDIO;
codec_id = CODEC_ID_AC3;
} else if (startcode >= 0xa0 && startcode <= 0xbf) {
type = CODEC_TYPE_AUDIO;
codec_id = CODEC_ID_PCM_S16BE;
}
wl3c 2004-05-05
  • 打赏
  • 举报
回复
怎么获得音视频数据流啊?
wl3c 2004-05-05
  • 打赏
  • 举报
回复
学习,顶一下!
NoneSoVile 2004-04-20
  • 打赏
  • 举报
回复
extension_start_code就是0x000001b5,属于ES的层次,在Sequence_header()GOP_header()Picture_header()之后均有定义。
在系统层次识别mpeg1和2的方法如下:
依据在开始码0x000001ba之后的一个字节值,如果是0x2* 表示mpeg1_ps;如果是0xp* p>=4 表示mpeg2_ps。通常情况下这两个值分别为0x21 和 0x44
dreameasy 2004-04-20
  • 打赏
  • 举报
回复
自己再顶一下,以便高手回答.
fantasychina 2004-04-20
  • 打赏
  • 举报
回复
请问MCI支持的媒体类型有哪些?rm,rmvb格式用哪种媒体类型。
dreameasy 2004-04-20
  • 打赏
  • 举报
回复
还有一个问题,如何区分mpeg1audio和mpeg2audio?
dreameasy 2004-04-20
  • 打赏
  • 举报
回复
高人呐!

这是我发自内心的呼唤...
NoneSoVile 2004-04-19
  • 打赏
  • 举报
回复
很多MPEG文件是没有PSM的,况且解开一个PES包是很EASY的事情啊,区别MPEG1video和MPEG2video可以通过ES中有没有extension_start_code来决定,为什么非要去找PSM。而且楼主有没有发现PSM经常位于一个流文件的中部。。。
dreameasy 2004-04-19
  • 打赏
  • 举报
回复
extension_start_code在哪里啊?

我的操作是不动pes包的,仅仅在system层做事情.
dreameasy 2004-04-16
  • 打赏
  • 举报
回复
类型是很容易知道,没错!但是这还远远不够,我要知道视频是什么格式,MPEG1_VIDEO,MPEG2_VIDEO,还是MPEG4_VIDEO?音频是MPEG1_AUDIO,MPEG2_AUDIO?

我现在是这么处理的,如果有PSM表,则找这个表。如果没有,则默认为MPEG1的Video或者Audio.
NoneSoVile 2004-04-16
  • 打赏
  • 举报
回复
我接触到的解码器,包括MPEG发表的源代码中的那个,都是以一个PES包为一个单位开始解码,
也就是先获取一个PES包,再逐层解开这个包从Picture-->slice-->maroblock-->block这样的循环读取数据。PES包的类型由包开始码决定,0x000001e0视频,0x000001c0音频.因此你不需要解开一个PES包就可以知道PES包里面是什么类型的码流(ES)。
happydeer 2004-04-16
  • 打赏
  • 举报
回复
兄弟,高处不胜寒哪!

MPEG标准里面应该有吧?!
dreameasy 2004-04-16
  • 打赏
  • 举报
回复
没有人回答,我怎么结帖啊?
dreameasy 2004-04-16
  • 打赏
  • 举报
回复
自己顶一下

2,543

社区成员

发帖
与我相关
我的任务
社区描述
专题开发/技术/项目 多媒体/流媒体开发
社区管理员
  • 多媒体/流媒体开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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