天亮就干

天亮就干

0个粉丝

20

问答

3

专栏

23

资料

天亮就干  发布于  2020-10-06 12:09:23
采纳率 5%
20个问答
4267

Linux下,如何将H.264的帧文件,保存为视频文件,可供播放?

     

我目前是在嵌入式Linux下,将H.264编码后的视频帧,通过网络传输至另外一端。请部,作为接收端,应该通过哪种方式或工具,将视频帧保存为视频文件,可供电脑播放?
发送端大约每秒发送25帧,通过无线传输,有可能中间有丢失帧。而保存的文件,需要将丢失帧也考虑进保存的文件中,谢谢了!!

我来回答
回答2个
时间排序
认可量排序

青椒Rose

0个粉丝

18

问答

1

专栏

24

资料

青椒Rose 2020-10-06 12:11:11
认可0

客户端将采集以后的H.264数据采用RTP机制发送到服务器,我在服务器这边首先将收到的RTP包进行解析,获取到真正的H.264数据包。由于H.264数据包只有I帧与P帧。P帧需要2~4个socket包才能发送完成。I帧而需要10~30个socket包才能发送完毕。
在接收端,我对包进行解析并对包头判断:遇到十六进制00 00 00 67开头的包时,我开始保存(十六进制00 00 00 67开头的包后紧跟着十六进制00 00 00 68开头的包,再后面为多个十六进制00 00 00 65开头的包。三者分别代表SPS、PPS、I帧)。即我的思路为从I帧开始保存。另外,时戳则是按照帧来计算。目前发送端视频为25帧,所以在接收端按照40毫秒累加来对每一帧接收图像的时戳进行赋值。

保存以后的视频文件有花屏。我采用软件分析了一下,目前是第一个I帧和第二个I帧之间保存出错。第二个I帧以后的保存正确。请各位大侠给出宝贵意见。

厉害了我的哥

0个粉丝

17

问答

1

专栏

9

资料

厉害了我的哥 2020-10-06 12:12:12
认可0

楼上思路对的,是应该从SPS,PPS,IDR或者SPS,PPS,I开始保存,IDR帧或者I帧关联的SPS,PPS都必须保存下来,少一个都有可能导致解码不正确。如果PPS与I帧之间有SEI,那么也需要保存下来。

或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
+ 添加网盘链接/附件

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

易百纳技术社区