快捷导航
本帖最后由 su33er 于 2019-12-3 19:56 编辑

在分析某款直播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:54

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

精彩推荐

  • 网络爬虫采集html片段时无法生成结果文件怎
  • 网络爬虫占满了c盘怎么清理
  • 为什么采集速卖通用户评论翻页不了
  • 多级规则执行连续动作而输入动作不在第一级
  • 特征工程入门介绍

热门用户

GMT+8, 2019-12-11 00:40