将youtube直播流录制到python中的文件 [英] Recording youtube live stream to file in python

查看:47
本文介绍了将youtube直播流录制到python中的文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想录制 youtube 直播并使用 python 将其保存到文件中.

I want to record youtube live stream and save it to file using python.

我尝试使用 pytube 库,但它可能适用于视频,而不适用于直播.

I tried with pytube library but it probably works for videos, not for live streams.

我想录制流并将其保存到视频格式为 avi 或类似格式的文件中.

I want to record stream and save it to file with video format as avi or something like this.

推荐答案

根据@wownis 的回答修改.
(我尝试了那个答案,但是,它不起作用.)

Modification based on @wownis 's answer.
(I tried that answer, however, it doesn't work.)

# 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   
...

这篇关于将youtube直播流录制到python中的文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆