首页 > 其他分享 >FreeSWITCH添加h264编码及pcap视频提取

FreeSWITCH添加h264编码及pcap视频提取

时间:2023-10-06 15:22:56浏览次数:50  
标签:视频 h264 openh264 文末 获取 FreeSWITCH pcap mod

操作系统 :CentOS 7.6_x64、Windows 10_x64 FreeSWITCH版本 :1.10.9 Python版本:3.9.2

一、启用h264相关模块

这里以 mod_openh264 为例进行演示。

1、安装open_h264库

获取 open_h264 源码:

git clone https://github.com/cisco/openh264.git

若下载过慢,可从如下渠道获取:
关注微信公众号(聊聊博文,文末可扫码)后回复 20231006 获取。

安装编译工具:

yum install nasm 

编译及安装:

make ENABLE64BIT=Yes
make install

2、安装mod_openh264模块

codecs/mod_openh264目录已存在,启用该模块即可。

文件: freeswitch-1.10.9.-release/modules.conf

1)注释掉 codecs/mod_h26x 选项;
2)添加 codecs/mod_openh264 选项;

echo "codecs/mod_openh264" >> modules.conf

 3)编译及安装

./rebootstrap.sh
CFLAGS="-O3 -fPIC" ./configure
make -j
make install

查看模块是否安装成功:

ls /usr/local/freeswitch/mod/mod_openh264.* -lh

 

3、启用mod_openh264模块

文件:conf/autoload_configs/modules.conf.xml

不启用 mod_h26x 、mod_av 模块,启用 mod_openh264 模块;

 show codecs 可以看到已启用h264编码。

二、开启视频呼叫

1、配置编码

1 ) 添加编解码支持
文件: conf/vars.xml
修改内容:

<X-PRE-PROCESS cmd="set" data="global_codec_prefs=OPUS,G722,PCMU,PCMA,H264,VP8,G729"/>
<X-PRE-PROCESS cmd="set" data="outbound_codec_prefs=OPUS,G722,PCMU,PCMA,H264,VP8,G729"/>

2 ) 配置profile

文件:

sip_profiles/internal.xml
sip_profiles/external.xml
修改或添加内容:

<param name="inbound-proxy-media" value="false"/>
<param name="inbound-late-negotiation" value="false"/>
<param name="disable-transcoding" value="false"/>

此外,proxy-media 不能开启,否则会转码失败。

2、测试视频呼叫

普通呼叫:

originate user/1000 &echo

会议室呼叫:

originate user/1000 &conference(test@default)

选择视频应答即可:

 演示视频可从如下渠道获取:

关注微信公众号(聊聊博文,文末可扫码)后回复 2023100601 获取。

3、转码测试

这里以sipp作为h264视频终端,软电话作为vp8视频终端进行转码测试。
1)sipp配置

这里先播放音频再播放视频。

  <!-- Play a pre-recorded PCAP file (RTP stream)                       -->
  <nop>
    <action>
      <exec play_pcap_audio="g711a.pcap"/>
    </action>
  </nop>
  <pause milliseconds="10000"/>

  <nop>
    <action>
      <exec play_pcap_video="h264.pcap"/>
    </action>
  </nop>

INVITE请求如下:

 完整配置可从文章末尾提供的渠道获取(audioVideoTest1.tar.gz)。

2)软电话配置

配置软电话只支持vp8视频编码。

 3)编写拨号方案:
文件: dialplan/public.xml
添加内容:

<extension name="test1112">
    <condition field="destination_number" expression="^(7654321)$">
            <action application="bridge" data="user/1000"/>
    </condition>
</extension>

4)转码测试

重启freeswitch,然后用sipp进行呼叫测试。

 演示视频可从如下渠道获取:

关注微信公众号(聊聊博文,文末可扫码)后回复 2023100602 获取。

三、从pcap中提取h264视频文件

1、使用wireshark提取h264视频

wireshark版本: 3.6.12
需要安装lua插件。

1)获取lua插件:
github地址: https://github.com/volvet/h264extractor
将 rtp_h264_extractor.lua 复制到wireshark安装目录。

若下载过慢,可从如下渠道获取:
关注微信公众号(聊聊博文,文末可扫码)后回复 20231006 获取。

2)添加lua插件

文件:init.lua

 在文件末尾添加如下内容:

dofile(DATA_DIR.."rtp_h264_extractor.lua")

3)启动wireshark进行视频提取

工具 -> Extract h264 stream from RTP

 提取窗口会显示视频文件路径:

 播放视频:

ffplay  C:\Users\Mike\Documents\video_20231006-102002.264

2、使用python脚本提取h264视频

需要注意,这里除了解析rtp头,还需要解析h264头。
python解析rtp可参考这篇文章:
https://www.cnblogs.com/MikeZhang/p/pythonUseLibpcap20221029.html

解析h264头请查阅相关rfc文档:
https://www.rfc-editor.org/rfc/rfc3984

 示例代码如下:

 完整代码可从文末提供的渠道获取。

wireshark和python提取h264的运行效果视频可从如下渠道获取:

关注微信公众号(聊聊博文,文末可扫码)后回复 2023100603 获取。

四、资源下载

本文涉及资源及示例代码可从如下渠道获取:

关注微信公众号(聊聊博文,文末可扫码)后回复 20231006 获取。

标签:视频,h264,openh264,文末,获取,FreeSWITCH,pcap,mod
From: https://www.cnblogs.com/MikeZhang/p/fsH264Relate20231006.html

相关文章

  • 速腾128线激光雷达播放pcap包,录制bag包,转PCD文件
    一下内容来自官方手册;速腾官网:https://www.robosense.cn/resources其中128线激光雷达对应文档为:《RS-Ruby产品用户手册中文》,翻到最下面就是。 一、安装官方最新驱动我的环境:Ubuntu18.04-ROSmelodicdesktop-full先安装pcapsudoapt-getinstall-ylibpcap-dev......
  • 解析pcap格式点云数据包
    1、多BB一句,不想写代码,就去速腾的驱动中复制粘贴。2、问别人的时候,应该问有没有128线速腾雷达数据帧格式资料(每个字段的意义),工具对应读取数据那一块源码能否给出来。 激光雷达每一帧的数据长度固定为1248字节,前42字节的前数据包标识、12组数据包、4字节时间戳和最后两字节雷达......
  • FreeSWITCH容器化问题之rtp端口占用
    操作系统:CentOS7.6_x64、debian11(bullseye,docker)FreeSWITCH版本:1.10.9Docker版本:23.0.6FreeSWITCH容器化带来部署便利的同时,也会遇到一些问题,比如今天要讨论的RTP端口占用问题(FreeSWITCH申请宿主机已占用的端口)。我将从以下三个方面进行展开:1)从源码层面分析FreeSWITCH......
  • freeswitch 新模块开发2
    1、随便找个地方,创建个目录mod_book2、在里面创建个mod_book.c文件,写入#include<switch.h>SWITCH_MODULE_LOAD_FUNCTION(mod_book_load);SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_book_shutdown);SWITCH_MODULE_DEFINITION(mod_book,mod_book_load,mod_book_shutdown,N......
  • freeswitch 新模块开发
    1、在Debian系统上成功编译并通过源码安装freeswitch2、在src/mod/application/目录下新建mod_helloworld目录。2、在src/mod/application/mod_helloworld/目录下创建mod_helloworld.c文件3、在文件中写入如下内容:#include<switch.h>SWITCH_MODULE_LOAD_FUNCTION......
  • SharpPcap的使用
    上面的枚举类型DeviceModes是SharpPcap库中定义的一个枚举,用于表示不同的设备模式。这个枚举被标记为[Flags],这意味着它可以包含多个成员的组合,每个成员都对应于一个位掩码,可以使用按位或操作符来组合成多个模式。下面是DeviceModes枚举中定义的各个成员的介绍:None(无):......
  • Wireshark RTP包中提取H264和H265视频数据
    wireshark提取视频数据之RTP包中提取H264和H265https://blog.csdn.net/jingjiankai5228/article/details/130477949Linux里截取网络包并解析成H.264https://blog.csdn.net/qq_38750519/article/details/121969721 H264extractorhttps://github.com/volvet/h264extractor ......
  • freeswitch 编译安装问题汇总
    要编译,却没有configure文件,这是需要生成configure文件。按以下顺序执行命令即可生成configure文件。1.aclocal2.autoconf3.autoheader4.automake--add-missing5../configure6.make7.makeinstall项目https://github.com/kamalmostafa/minimodem就是这样的一个......
  • 通过pyshark解析pcap报文
    代码:importpysharkdefextract_dns_info(packet):dns=packet.dnsquery_name=dns.qry_nameifhasattr(dns,'qry_name')elseNonequery_type=dns.qry_typeifhasattr(dns,'qry_type')elseNone#解析响应的IP地址或其他响应内容r......
  • freeswitch 在visualstudio 2017 中编译运行
    1、visualstudio使用2017版本的2、下载 https://github.com/PerkinsZhu/freeswitch/tree/v1.8 源码   错误处理:一、 下载地址:https://wixtoolset.gallerycdn.vsassets.io/extensions/wixtoolset/wixtoolsetvisualstudio2017extension/1.0.0.22/1668223938167/......