我正在尝试使用 ffmpeg 下载 m3u8 文件,它一直运行正常,直到几天前,它开始出现异常。
首先让我写下命令的样子:
ffmpeg -i https://LINK.TO/FILE.m3u8?Policy=eyQ__&Signature=eFI5zA__&Key-Pair-Id=APKAJMWS -c copy -bsf:a aac_adtstoasc output.mp4
pause
可以看到,该链接是m3u8文件的,有三个参数,分别是Policy、Signature和Key-Pair-Id。
预期结果应该是一个名为 output.mp4 的 mp4 文件,但我看到的是一堆错误消息,然后 CMD 窗口关闭,这是错误消息:
'Signature' is not recognized as an internal or external command,
operable program or batch file.
'Key-Pair-Id' is not recognized as an internal or external command,
operable program or batch file.
为什么 Windows 将它们视为命令?
你可以清楚地看到它们只是参数!
答案1
为什么Windows将它们视为命令?您可以清楚地看到,它们只是参数!
但事实并非如此。在 cmd.exe 中&
,特殊字符- A命令分隔符,类似于;
Bash。其目的是具体来说将您的输入拆分为三个单独的命令,一个接一个地运行。
为了避免这种情况,请将参数放在引号中:
ffmpeg -i "https://LINK.TO/FILE.m3u8?Policy=eyQ__&Signature=eFI5zA__&Key-Pair-Id=APKAJMWS" -c copy -bsf:a aac_adtstoasc output.mp4