跳转到 d.1 查看我正在使用的解决方法命令。
我为什么要这么做?
有时最好只执行 -f ba[ext=m4a] 然后将扩展名更改为 .mp4,我担心它有时会失败(或者可以更简洁地完成)!
其他时候:我需要最低质量的文件,必须是视频,但仍然可以大致了解视觉上发生的事情(通常为 144p 或 360p)。如果可能的话,我不想牺牲音频质量。我总是必须压缩和重新格式化东西:有时需要一个小时——我真的想减少步骤。
我的目标是:
- 了解yt-dlp和ffmpeg如何更好地工作。
- 下载最高音频质量和一个特定视频质量。
- 使用尽可能少的命令处理所有潜在输入。
- 获取 mp4 输出(不是 webm,不是原始音频),始终如一;理想情况下,如果可能的话,不要使用 ffmpeg;或者,使用在一行中包含 yt-dlp 字符串和 ffmpeg 字符串的单个命令(例如
yt-dlp -flags && ffmpeg -flags
)。
已知问题:
最佳猜测 不工作:
A。
yt-dlp https://url.com/uri -f wv+ba* -o "./my/location/filename.mp4"
其中 wv 表示最差音频,ba 表示最佳音频,应该*
意味着“以某种方式使最佳音频成为优先!”遗憾的是,我得到的结果好坏参半:通常是没有音频的最差视频文件。yt-dlp https://url.com/uri -f wv+ba -o "./my/location/filename.mp4"
. 给出错误的扩展名。
b.
yt-dlp https://url.com/uri -f ba[ext=m4a] -o "./my/location/filename.m4a"
这给了我一个 m4a 文件,然后我需要执行重命名命令,[ext=mp4]
这不是一个选项。这也没有提供视频,这是并不理想。
C。
yt-dlp https://url.com/uri -f 134+ba -o "./my/location/filename.mp4" --merge-output-format mp4
,其中id 134
是 360p 视频。这给出ERROR: Postprocessing: Stream #1:0 -> #0:1 (copy)
,并且没有合并的输出文件(只有两个仅包含音频和仅包含视频的 tmp 文件)。yt-dlp https://url.com/uri -f 134+ba -o "./my/location/filename.mp4" --merge-output-format mkv && rename filename.mkv filename mp4
,其中id 134
是 360p 视频。这给出一个 mp4 文件,但系统将其视为 mkv 文件(无法用于所需用途)。
d.
yt-dlp https://url.com/uri -f 134 -o "./my/location/filename.webm && yt-dlp https://url.com/uri -f ba -o "./my/location/filename.m4a" && ffmpeg -i .\relativePath\inputFilename.f251.webm -i .\relativePath\inputFilename.f248.webm -c:v mpeg4 -q:v 0 -q:a 0 -c:v copy .\relativePath\outputFilename.mp4"
. 注意:音频/视频可以按任意顺序输入,但-i 标志应该放在第一位。
关于解决方法d.1:
如果我使用-q:a 100
,输出文件将比输入文件大 10 倍;所以,我认为我没有获得无损音频......
注意:音频/视频可以按任意顺序输入,但-i 标志应该放在第一位。
另外,重要的是不要使用星号,bv*+ba
因为这将优先考虑组合音频的最佳视频质量,并且您需要单独的文件:您可以通过排除星号来保证单独的文件。