如何在下载YouTube视频流时限制youtube-dl的视频长度

时间:2016-08-03 09:00:40

标签: python video ffmpeg video-streaming youtube-dl

我正在尝试编写一个记录来自youtube的实时流的小脚本。 当使用youtube-dl.download功能时,它只是继续下载,直到流结束,但我想在20分钟左右后停止下载。 问题是当我尝试杀死它一段时间后输出被破坏(即时使用mp4格式),我尝试用ffmpeg修复它,但发生了“找不到moov atom”错误。

如何让youtube-dl(或任何其他工具)录制固定长度的直播视频?

以下是代码的一部分:

class recordingThread (threading.Thread):
def __init__(self, threadID, output_location, name, yt_stream, start_time):
    threading.Thread.__init__(self)

    self.threadID = threadID
    self.output = os.path.abspath(output_location)
    self.name = name
    self.start_time = start_time

    self.ydl_opts = {'quiet': True,
                     'format': 'mp4',
                     'outtmpl': name+ '%(ext)s',
                     'sleep_interval': 2
                     }
    self.yt_stream = yt_stream.strip('\'"')

def run(self):
    print "Starting %s Thread Recorder - %s" % (self.name, self.start_time)

    with youtube_dl.YoutubeDL(self.ydl_opts) as ydl:
        self.download_prc = ydl.download([self.yt_stream])

感谢。

1 个答案:

答案 0 :(得分:0)

这是我整理文件> 20分钟的方法:

        dictMeta = ydl.extract_info(
        "https://www.youtube.com/watch?v={sID}".format(sID=sID),
        download=False)

    # Duration > Max duation ?
    iDuration = dictMeta["duration"]
    if iDuration > iMaxDuration:
        print(
            "[Log] Too long to download, %ds > %ds" %
            (iDuration, iMaxDuration))
        return ""