Cha*_*win 5 powershell ffmpeg youtube-dl powershell-core
我已经仔细阅读了 youtube-dl 文档。我发现我认为正是我想要的……但我遇到了一个障碍,我很想知道 youtube-dl 的任何更高级的选项是否可以帮助解决我的问题。对于一些更高级的选项,没有太多的文档,而且我还在学习 Python……所以浏览源代码是一项努力。哈哈。
目标:
我当前的命令:
youtube-dl -f "bestvideo+bestaudio[ext=m4a]/best" --embed-thumbnail --add-metadata [url]
Run Code Online (Sandbox Code Playgroud)
问题:
如果“最佳视频”是 webm 文件...它会检测到 WEBM + M4A 不兼容,并将合并为 MKV 文件而不是 MP4(就像通常那样)。由于此步骤是在通过 AtomicParsley 嵌入缩略图之前执行的...引发错误,因为缩略图嵌入不支持 MKV。
更新:我后来想起上面的说法是不准确的。实际发生的是 WEBM 视频工作正常,但导致问题的是 WEBM 音频。YouTube 对 WEBM 音频使用 Opus 编码,当 youtube-dl 尝试合并这两个文件时,它最终将不得不使用 MKV 容器而不是 MP4,因为 ffmpeg 不允许在 MP4 容器中安全地使用 WEBM/Opus。为了强制进行这种转换,您必须向 ffmpeg 添加“--strict 2”(可以通过 youtube-dl 参数传入)。我的解决方案是使用“bestaudio[ext=m4a]”排除 WEBM 音频格式。完成此操作后,我只需将“--merge-output-format mp4”添加到我的 youtube-dl 命令中(如标记答案所推荐)。
但是...如果仅视频的 webm 文件首先转换为 MP4,那么这一切都不是问题。
所以......有谁知道,如果有办法告诉 youtube-dl 在下载视频文件时,在做其他任何事情之前立即将其转换为给定类型(MP4)?
又名:
如果没有......那么我想我可能会走在powershell中自己写这一切的路线。就像我可以让 youtube-dl 将音频、视频、元数据和缩略图下载到文件中,然后编写一个 powershell 脚本来完成我需要做的所有事情。也许让 youtube-dl 在每次迭代后调用 powershell 脚本。
小智 6
将选项添加--merge-output-format mp4到您的命令中:
youtube-dl --merge-output-format mp4 -f "bestvideo+bestaudio[ext=m4a]/best" --embed-thumbnail --add-metadata [url]
Run Code Online (Sandbox Code Playgroud)
从手册中:
--merge-output-formatFORMAT如果需要合并(例如bestvideo+bestaudio),则输出到给定的容器格式。mkv、mp4、ogg、webm、flv 之一。如果不需要合并则忽略
要使其适用于webm音频格式:
youtube-dl --merge-output-format mp4 --postprocessor-args "-strict experimental" -f "bestvideo+bestaudio/best" --embed-thumbnail --add-metadata [url]
Run Code Online (Sandbox Code Playgroud)
opus容器mp4格式是“实验性的”,因此某些播放器可能会在播放此类文件时遇到问题| 归档时间: |
|
| 查看次数: |
13552 次 |
| 最近记录: |