如何判断一个直播系统是否使用的是RTMP

现在的直播技术,主要是HLS、RTMP,当然也些其他的方式,例如一直向一个flv里写数据,客户端一直Range访问这个文件,或者使用WebRTC啥的等等。这篇文章就简单的说下如何判断一个直播使用了rtmp,至于其他的等以后有机会再写写。

如何看?抓下包不就知道了,难道还有其他更方便的方式?

1.抓包可以看到客户端与rtmp server建立连接的过程。唯一的问题是找了半天只能找到rtmp的app,找不到stream,这样就不能拼接成一个完整的rtmp地址。

2.困难是难不倒人的,使用strings配合vim,终于让我在某处发现了stream名。

strings ~/Documents/raw.pcap > /tmp/a.txt
vim /tmp/a.txt

3.于是完整的rtmp地址为。

rtmp://123.125.104.101/live/livestream

4.简单的判断也可以这么做。

sudo tcpdump -s 0 -w-|strings|grep -i rtmp

tcpdump: data link type PKTAP
tcpdump: listening on pktap, link-type PKTAP (Packet Tap), capture size 262144 bytes
rtmp://123.125.104.101/live
3SRS 2.0.0 (github.com/winlinvip/simple-rtmp-server)
/https://github.com/winlinvip/simple-rtmp-server
|RtmpSampleAccess
3SRS 2.0.0 (github.com/winlinvip/simple-rtmp-server)

参考资料:

How to record (capture) with rtmpdump by pstranger:https://sparewotw.wordpress.com/2011/02/15/how-to-record-capture-with-rtmpdump-by-pstranger/

RTMP的URL/Vhost规则:https://github.com/ossrs/srs/wiki/v1_CN_RtmpUrlVhost