12

使用Wireshark分析SRT直播流

 3 years ago
source link: https://wangwei1237.gitee.io/2020/04/09/analysize-SRT-protocol-live-stream-with-wireshark/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

使用Wireshark分析SRT直播流

2020-04-09

字数统计: 735

  |   阅读时长≈ 2 分钟

SRT(Secure Reliable Transport)是一种基于UDT(UDP-based Data Transfer)的、安全的、可靠的、开源的数据传输协议&技术。SRT在UDP基础之上实现了:智能数据重传机制和AES256加密技术,这使得其成为一种安全、可靠、低延迟的传输技术。利用SRT,可以实现在不可预测的网络环境下(例如互联网)高效、安全的传输数据。SRT还做了特殊优化以适合视频实时流数据的传输。根据SRT Alliance在2019-04-04的介绍,目前如下的应用已经集成并支持SRT:OBS StudioVideoLAN’s VLCFFMpegWireshark

1.png

本文只介绍:如何利用FFMpeg生成SRT数据流并利用Wireshark对该SRT数据进行抓包分析。关于SRT的详细内容,可以参考SRT Protocol Technical Overview Draft

  1. 按照说明安装SRT

  2. 利用./configure --enable-libsrt重新编译FFMpeg,让ffmpeg工具集支持SRT协议。重新configure的过程如果遇到ERROR: srt >= 1.3.0 not found using pkg-config的错误,可以查看ffbuild/config.log的相关信息,一般需要把srt和srt所依赖的openssl的pkgconfig路径增加到PKG_CONFIG_PATH环境变量中即可。

  3. 升级Wireshark到3.0之后的版本,并且设置Wireshark取消Wireshark对UDT协议的支持,具体做法为:点击菜单栏中的Analyze->Enabled Protocols,然后从弹出的支持协议中找到UDT,并取消UDT前面的选择标记。

    2.jpg
  4. 安装VLC播放器,用于播放SRT协议的视频流。

生成SRT直播流

可以利用ffmpegsrt-live-transmit(该工具在安装srt的时候会默认安装)来生成SRT直播流。主要思路是首先利用ffmpeg生成UDP的直播流,然后利用srt-live-transmit把UDP的直播流转换成SRT的直播流,更详细的方式可以参考srt-live-transmit的使用说明

1
2
3
4
5
6
7
8
9
10
11
12
# 生成UDP视频流
$ ffmpeg -f lavfi -re -i smptebars=duration=300:size=1280x720:rate=30 \
-f lavfi -re -i sine=frequency=1000:duration=60:sample_rate=44100 \
-pix_fmt yuv420p -c:v libx264 -b:v 1000k -g 30 -keyint_min 120 \
-profile:v baseline -preset veryfast -f mpegts \
"udp://127.0.0.1:5000?pkt_size=1316"

# 生成SRT视频流
$ srt-live-transmit -s:10 udp://:5000 srt://:5001

# 使用ffplay播放SRT视频流
$ ffplay "srt://127.0.0.1:5001"

具体播放效果如下所示:

3.jpg

使用Wireshark分析SRT

为了可以用Wireshark抓到SRT数据包,需要使用VLC播放器来打开刚才创建的SRT视频流,具体如下所示:

4.jpg

打开Wireshark,选择Lookback(因为要捕获的SRT地址为127.0.0.1),然后在捕获的数据窗口选择srt协议过滤,稍等片刻就可以看到捕获的SRT数据包,具体如下图所示:

5.jpg

接下来就可以利用Wireshark来分析SRT协议的处理流程,例如上图中的Handshake数据包。尤其是在学习的过程中,配合SRT的协议文档以及Wireshark的抓包分析,能够加深对SRT协议的理解,达到事半功倍的效果。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK