首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从pcap捕获获取h.265视频文件

从pcap捕获获取h.265视频文件
EN

Stack Overflow用户
提问于 2018-11-06 10:31:16
回答 1查看 1.7K关注 0票数 1

我正在尝试提取h.265编码的视频文件&未加密的rtsp/rtp pcap。我尝试提取rtp流原始数据,并尝试使用vlc播放它,但没有工作。有没有任何方法可以从中获取h.265视频文件。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-07 18:20:02

实际上,这是一件棘手的事情。http://ucsniff.sourceforge.net/videosnarf.html为h264实现了类似的概念,但是他们不支持h265,所以我采用了这个方法。主要的想法是,您必须添加一些部分是缺少的。

正如在https://www.rfc-editor.org/rfc/rfc7798中提到的,标题如下所示:

代码语言:javascript
复制
+---------------+---------------+
|0|1|2|3|4|5|6|7|0|1|2|3|4|5|6|7|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|F|   Type    |  LayerId  | TID |
+-------------+-----------------+

您必须为每个基本流数据包添加已删除的标头,即4 Bytes (00000001)。

但是我们都知道h265数据包太长了,而且大部分都是零碎的,据我所知,像VLC这样的播放器不支持碎片化。所以你得重新组装它们。此过程仅适用于分段数据包类型(如49)。您有一个额外的标题,如下所示:

代码语言:javascript
复制
+---------------+
|0|1|2|3|4|5|6|7|
+-+-+-+-+-+-+-+-+
|S|E|  FuType   |
+---------------+

位数S和E告诉您如何重新组装数据包。序列中的第一个数据包S,E= 1,0,其他数据包继续S,E= 0,0 (可能是多个数据包),最后一个包S,E= 0,1。所有有效负载字节都连接在一起,然后通过用这里提到的FuType替换主报头中的类型来创建一个新的报头(不要忘记4字节头):

代码语言:javascript
复制
+---------------+---------------+--------------
|0|1|2|3|4|5|6|7|0|1|2|3|4|5|6|7|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+--------------
|F|  FuType   |  LayerId  | TID | all the concatenated payloads
+-------------+-----------------+---------------

请记住,您必须同时保留碎片和非分段的有效负载,因为大多数未分段的数据包都有重要的信息,比如图片大小,这些信息是不可省略的。基本流可以由SMplayer播放,也可以使用VLC。对于VLC,必须将demuxer设置为h265。

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

https://stackoverflow.com/questions/53170075

复制
相关文章

相似问题

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