使用Python subprocess调用yt-dlp命令时遇无效参数错误如何解决?
问题:Python调用yt-dlp时--downloader-args参数报错
原命令与Python代码
原yt-dlp命令:
yt-dlp -f bestvideo[ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]/best --downloader ffmpeg --downloader-args "ffmpeg_i:-ss 00:19:10.00 -to 00:19:40.00" --no-check-certificate https://youtu.be/YXfnjrbmKiQ
编写的Python调用代码:
import subprocess result = subprocess.call(['yt-dlp','-f','bestvideo[ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]/best','--downloader','ffmpeg','--downloader-args','"ffmpeg_i:-ss 00:00:10.00 -to 00:00:40.00"','--no-check-certificate','https://youtu.be/YXfnjrbmKiQ']) print(result)
报错信息
ffmpeg_i:-ss 00:00:10.00 -to 00:00:40.00: Invalid argument
解决方法
错误原因是使用subprocess列表传参时,给--downloader-args的参数额外添加了双引号。在shell中双引号用于避免空格分割参数,但列表传参已经明确每个元素为独立参数,额外的双引号会被当成参数内容的一部分,导致yt-dlp解析失败。
修正后的代码:
import subprocess result = subprocess.call([ 'yt-dlp', '-f', 'bestvideo[ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]/best', '--downloader', 'ffmpeg', '--downloader-args', 'ffmpeg_i:-ss 00:00:10.00 -to 00:00:40.00', '--no-check-certificate', 'https://youtu.be/YXfnjrbmKiQ' ]) print(result)
内容的提问来源于stack exchange,提问作者Mehdi Souregi
相关产品推荐
相关产品推荐

