首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >VP8/OPUS帧解析

VP8/OPUS帧解析
EN

Stack Overflow用户
提问于 2015-06-15 17:26:42
回答 1查看 2.5K关注 0票数 3

我正在使用C语言在Linux环境下开发webrtc模拟器。在这里,我需要发送媒体从一个webrtc模拟器到另一个webrtc模拟器。我需要使用VP8和Opus编解码器。现在我从VP8编解码开始。由于我是VP8的新手,请帮助我更好地理解。

  1. 因为它是模拟器,所以我不想实时捕捉/播放媒体。我需要从一个文件中读取音频/视频数据并将其发送到远程。在远程获取提取的媒体数据,将其保存到文件中。
  2. 哪种文件格式包含编码的VP8数据?是webm文件格式还是其他什么的?
  3. 假设webm文件包含VP8和OPUS编解码器数据(我不确定),我如何逐帧解析。例如,如果我读取从AMR-NB文件中提取音频帧,我可以从一个文件中解析amr帧。类似地,有任何帮助页面,在这里我学习VP框架的解析逻辑。
  4. 或者我可以使用任何开放源码来解析webm文件中的VP8 8/OPUS框架。
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-16 14:31:12

Q2:我从问题2开始,VP8对应于WebM格式。

Q3:如果你想逐帧解析,你需要知道VP8和OPUS的结构。我不知道模拟在您的场景中意味着什么,但是在WebRTC环境中,媒体数据是通过RTP传输的。如果您正在进行没有RTP的模拟,请从第二步开始,否则从第一步开始。

  1. 从RTP数据包中删除RTP有效负载。RTP有效载荷包含VP8数据包信息,如序列号、时间戳等。
  2. 请注意,VP8框架可能由多个VP8数据包组成,因此基本上需要提取框架内容并将其连接在一起。有多种方法可以确定框架是否由多个数据包组成,并不是所有的数据包都是完全标准化的,但是现在我建议您使用序列号,因为一个帧的数据包共享相同的SEQ。
  3. 将框架写入文件。如果您想要创建一个有效的WebM文件,请使用来自LibAV的av_write_frame()之类的函数(我亲自使用)。

我可以推荐一段代码,它实际上将原始的RTP VP8数据包转换为VP8框架:https://github.com/meetecho/janus-gateway/blob/master/postprocessing/pp-webm.c。在功能(预处理和处理)中使用分组头读取。

Q4:我使用LibAV来实现这样的目的(或者FFMPEG)。

我很乐意回答任何其他问题。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30851306

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档