服务器通过udp发送视频流,基本格式为16字节包头+1316字节ts流数据共1332字节。在某些情况下可能需要将流提取出来定位问题,本文档描述基于gstreamer工具gst-launch-1.0及相关插件提取ts流的方法。
apt install -y gstreamer1.0-tools gstreamer1.0-plugins-base gstreamer1.0-plugins-good
安装完成后可见gst-launch-1.0和gst-inspect-1.0命令,前者用于运行多媒体管道pipeline,后者用于查看各种插件信息。
使用tcpdump抓取流信息,确认ts流发送的组播地址,如231.10.5.84:7080。
运行命令:gst-launch-1.0 udpsrc skip-first-bytes=16 uri=udp://231.10.5.84:7080 ! filesink location=./out.ts
命令中: udpsrc为udp接收插件,skip-first-bytes表示从头部略过的字节数,idste流格式定义了前16字节为头数据,所以skip-first-bytes=16; uri是接收地址,根据需要填写,本例为231.10.5.84:7080; 命令中filesink为文件保存插件,location定义了保存的文件名称和路径。
运行命令:gst-launch-1.0 udpsrc skip-first-bytes=16 uri=udp://231.10.5.84:7080 ! udpsink host=192.168.1.111 port=554
命令中:host指定电脑IP,port指定接收端口。
使用vlc播放ts流:打开网络串流-网络-udp://0.0.0.0:554
注意:需要关注电脑防火墙是否拦截ts流
使用sz等工具将out.ts文件保存在本地,使用vlc检查文件播放情况、日志、编码等有用信息;使用wireshare分析ts数据包。