Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 下载带有ffmpeg的m3u8段,无需将.ts文件写入磁盘_Python 3.x_Opencv_Ffmpeg_Video Streaming_Http Live Streaming - Fatal编程技术网

Python 3.x 下载带有ffmpeg的m3u8段,无需将.ts文件写入磁盘

Python 3.x 下载带有ffmpeg的m3u8段,无需将.ts文件写入磁盘,python-3.x,opencv,ffmpeg,video-streaming,http-live-streaming,Python 3.x,Opencv,Ffmpeg,Video Streaming,Http Live Streaming,我正在尝试使用ffmpeg从HLS实时流下载m3u8片段,而不将.ts文件写入磁盘。我打算在图像数据上实时运行opencv。这是我尝试过的,但我一次只能得到一个片段,不知道如何将它保存在内存中而不写入磁盘。在Twitch站点上使用开发人员工具检查网络请求时,我看到m3u8实时到达,尽管这些在脚本中不起作用。我必须刷新页面并获取到达的第一个请求的URL,这是一个不以.m3u8结尾的URL(我在脚本中使用的那个) 我对片段和URL问题一无所知,但您可以尝试解码视频帧,而不必像我发布的那样写入磁盘。

我正在尝试使用ffmpeg从HLS实时流下载m3u8片段,而不将.ts文件写入磁盘。我打算在图像数据上实时运行opencv。这是我尝试过的,但我一次只能得到一个片段,不知道如何将它保存在内存中而不写入磁盘。在Twitch站点上使用开发人员工具检查网络请求时,我看到m3u8实时到达,尽管这些在脚本中不起作用。我必须刷新页面并获取到达的第一个请求的URL,这是一个不以.m3u8结尾的URL(我在脚本中使用的那个)


我对片段和URL问题一无所知,但您可以尝试解码视频帧,而不必像我发布的那样写入磁盘。
import requests
import m3u8

url = 'https://usher.ttvnw.net/api/channel/hls/gernaderjake.m3u8?allow_source=true&fast_bread=true&p=4466372&play_session_id=d66db58de3bf6be70a5f5824bbb72763&player_backend=mediaplayer&playlist_include_framerate=true&reassignments_supported=true&sig=2b97079328898fdae56b041616be6fc7b01bd13c&supported_codecs=avc1&token=%7B%22adblock%22%3Afalse%2C%22authorization%22%3A%7B%22forbidden%22%3Afalse%2C%22reason%22%3A%22%22%7D%2C%22blackout_enabled%22%3Afalse%2C%22channel%22%3A%22gernaderjake%22%2C%22channel_id%22%3A1423946%2C%22chansub%22%3A%7B%22restricted_bitrates%22%3A%5B%5D%2C%22view_until%22%3A1924905600%7D%2C%22ci_gb%22%3Afalse%2C%22geoblock_reason%22%3A%22%22%2C%22device_id%22%3A%22ec6cb1f95615ed0b%22%2C%22expires%22%3A1618772589%2C%22extended_history_allowed%22%3Afalse%2C%22game%22%3A%22%22%2C%22hide_ads%22%3Afalse%2C%22https_required%22%3Atrue%2C%22mature%22%3Afalse%2C%22partner%22%3Afalse%2C%22platform%22%3A%22web%22%2C%22player_type%22%3A%22site%22%2C%22private%22%3A%7B%22allowed_to_view%22%3Atrue%7D%2C%22privileged%22%3Afalse%2C%22role%22%3A%22%22%2C%22server_ads%22%3Afalse%2C%22show_ads%22%3Atrue%2C%22subscriber%22%3Afalse%2C%22turbo%22%3Afalse%2C%22user_id%22%3Anull%2C%22user_ip%22%3A%22173.22.40.125%22%2C%22version%22%3A2%7D&cdm=wv&player_version=1.3.0'

r = requests.get(url)

m3u8_master = m3u8.loads(r.text)

playlist_url = m3u8_master.data['playlists'][0]['uri']

r = requests.get(playlist_url)

playlist = m3u8.loads(r.text)

playlist.data['segments'][0]['uri']

r = requests.get(playlist.data['segments'][0]['uri'])

with open('video.ts', 'wb') as f:
    for segment in playlist.data['segments']:
        url = segment['uri']
        r = requests.get(url)
        f.write(r.content)