使用youtube-dl录制直播时应如何配置录制时长参数
youtube-dl直播录制时长配置方案
两种无需外部timeout控制的内部配置实现方式如下:
方案1:使用youtube-dl原生download_ranges参数
该参数通过回调函数指定下载的时间区间(单位为秒),适配所有youtube-dl支持的流场景:
import youtube_dl def record_stream(name, url, duration): # 回调函数固定返回需要录制的时间范围,0为起始点,duration为录制总时长 def range_callback(info): return [(0, duration)] opts={ 'outtmpl': name, 'download_ranges': range_callback } youtube_dl.YoutubeDL(opts).download([url])
方案2:调用ffmpeg作为外部下载器(完全对齐原生ffmpeg命令效果)
该方案和ffmpeg -i {url} -t {duration} -c copy {name}逻辑完全一致,直接拷贝流无编码损耗,更适合直播场景:
import youtube_dl def record_stream(name, url, duration): opts={ 'outtmpl': name, 'external_downloader': 'ffmpeg', # 直接传递ffmpeg的时长、流拷贝参数 'external_downloader_args': ['-t', str(duration), '-c', 'copy'] } youtube_dl.YoutubeDL(opts).download([url])
两种方案均不需要借助外部进程控制,完全在youtube-dl的参数配置内实现时长限制。
内容的提问来源于stack exchange,提问作者Bob
相关产品推荐
相关产品推荐

