Python youtubedl是否可以获取合并文件的扩展名?

2024-04-28 17:28:13 发布

您现在位置:Python中文网/ 问答频道 /正文

当我运行它时:

ydl_opts = {
    'outtmpl': files_path + '%(id)s.%(ext)s',
}
        with youtube_dl.YoutubeDL(ydl_opts) as ydl:
            ydl.download([video_url])

我在日志中看到:

[ffmpeg] Merging formats into "/home/tmp/0uBOtQOO70Y.mkv"
[wsgi:error] Deleting original file /home/tmp/0uBOtQOO70Y.f137.mp4 (pass -k to keep)
[wsgi:error] Deleting original file /home/tmp/0uBOtQOO70Y.f251.webm (pass -k to keep)

下载之前或之后如何获取/home/tmp/0uBOtQOO70Y.mkv

如果我成功了:

ydl_opts = {}
with youtube_dl.YoutubeDL(ydl_opts) as ydl:
     info = ydl.extract_info(video_url, download=False)

然后在info中是mp4扩展


Tags: infourlwsgihomeyoutubedownloadasvideo
1条回答
网友
1楼 · 发布于 2024-04-28 17:28:13

我也有同样的问题,我可以告诉youtube dl不返回输出文件的扩展名。如果将格式合并为另一种格式,则来自ydl.extract_info()的扩展无效。您可以检查是否将通过ydl.extract_info()['format_id']合并格式–如果数字之间有“+”符号,则将合并这些格式。但是,我们仍然无法确定输出格式是什么。 我为此创建了一个笨拙的解决方案。因为我们可以控制输出文件的名称(没有扩展名,这很难预测),所以我只检查了扩展名最可能的文件是否存在

url = 'https://linktovideofile.com/'
filename = './example'
ytdl_opts = {'outtmpl': filename+'.%(ext)s'}
with youtube_dl.YoutubeDL(ytdl_opts) as ytdl:
    ytdl.download([url])

if os.path.isfile(filename+'.mkv'):
    extension = '.mkv'
    filename= filename+extension
elif os.path.isfile(filename+'.mp4'):
    extension = '.mp4'
    filename= filename+extension
elif os.path.isfile(filename+'.webm'):
    extension = '.webm'
    filename= filename+extension

我希望这会有所帮助,它适用于我的简单脚本,但对于更高级的脚本可能不够

相关问题 更多 >