python - 将 youtube 直播流录制到 python 中的文件
问题描述
我想录制 youtube 直播并使用 python 将其保存到文件中。
我尝试使用 pytube 库,但它可能适用于视频,而不适用于直播。
我想录制流并将其保存到视频格式为 avi 或类似的文件中。
解决方案
根据@wownis 的回答进行修改。
(我试过这个答案,但是,它不起作用。)
# pip install urllib
# pip install m3u8
# pip install streamlink
import urllib
import m3u8
import streamlink
def get_stream(url):
"""
Get upload chunk url
"""
streams = streamlink.streams(url)
stream_url = streams["best"]
m3u8_obj = m3u8.load(stream_url.args['url'])
return m3u8_obj.segments[0]
def dl_stream(url, filename, chunks):
"""
Download each chunks
"""
pre_time_stamp = 0
for i in range(chunks+1):
stream_segment = get_stream(url)
cur_time_stamp = \
stream_segment.program_date_time.strftime("%Y%m%d-%H%M%S")
if pre_time_stamp == cur_time_stamp:
pass
else:
print(cur_time_stamp)
file = open(filename + '_' + str(cur_time_stamp) + '.ts', 'ab+')
with urllib.request.urlopen(stream_segment.uri) as response:
html = response.read()
file.write(html)
pre_time_stamp = cur_time_stamp
url = "https://www.youtube.com/watch?v=2U3JnFbD-es"
dl_stream(url, "live", 15)
输出如下:
./
live_20200713-103739.ts
live_20200713-103744.ts
...
推荐阅读
- java - String replaceAll() method replace except string
- javascript - How to limit the number of selected check-boxes in React JS?
- ios - Way to dequeue multiple cells in UIcollectionview
- ios - Subclass of UIButton cant call the buttonType initializer
- c - C preprocessor adds trailing "1" after expanding a macro defined in a command line
- php - 将 Postman 请求转换为 guzzle 或其他 PHP HTTP 客户端
- docker - 如何使 docker 请求服务名称而不是 IP 地址
- sql-server - EncryptByPassPhrase 舍入大于 6 位的数字
- mysqli - getting the 1st row in a database
- c# - Is there is a way that program is not asking for Admin password?