在分析某款直播app时,发现可以通过wireshark(tshark)等抓取rtmp分析出
rtmp://pili-live-rtmp.xxxx.xxxx.com/xxx/qn1575343585371A 的直播流的真实地址,通过rtmpdump录制为flv格式的视频(或者可用vlc media player观看和下载后),尝试用python爬取多个直播的视频,下载到本地时候,出现很多挫折,网上相关资料实在少的可怜,与之相关更是没有。
经过一天的摸坑,找到了pyshark库阅读文档之后,可以抓获rtmp协议并批量获取rtmp的地址,librtmp库的资料也是少的可怜,在阅读官方api,了解这个可以读取rtmp协议的视频流,但是屡次报错raise RTMPError("Failed to start RTMP playback,

import pyshark
import librtmp

cap = pyshark.FileCapture('xxxx.pcap',only_summaries=True)
cap = pyshark.FileCapture('xxxx.pcap')
capture = pyshark.LiveCapture(interface = 'rvi0',bpf_filter='rtmpt')
capture.sniff(timeout = 10)
for pkt in cap:
    print(pkt)
# 获取视频流真实地址
def rtmp_path(cap):
    streams_list1= []
    for pkt in cap:
        info = pkt.info
        if 'play(' in info:
            streams_list1.append('rtmp://pili-live-rtmp.qiniu.xxxx.xxxx/xxxxx/'+pkt.info[6:22])
    streams_list2 = list(set(streams_list1))
    print(streams_list2)
    return(streams_list2,)
#视频流解析
def analye(stream_path):
    conn = librtmp.RTMP(stream_path,live = True)
    conn.connect()
    stream = conn.create_stream(writeable = True)
    packet = conn.read_packet()
    print(packet.body)
    data = stream.read(1024*100)
if __name__ == '__main__':
    stream = rtmp_path(cap)
      # analye(stream)

举报 使用道具
| 回复

共 0 个关于本帖的回复 最后回复于 2019-12-3 19:58

您需要登录后才可以回帖 登录 | 立即注册

精彩推荐

  • 运行Apple无法验证的程序的方法
  • 文本聚类分析软件的安装和使用方法
  • 利用AI阅读和分析文本:扣子COZE记录用户反
  • 在网页片段内直观标注——以B站评论采集为
  • 利用AI阅读和分析文本:使用COZE建设游记文

热门用户

GMT+8, 2024-12-24 10:32