【问题标题】:Use title metadata as output filename ffmpeg使用标题元数据作为输出文件名 ffmpeg
【发布时间】:2020-09-09 17:14:29
【问题描述】:

是否可以获取输入文件的标题元数据,并将其用作输出文件的文件名?我正在尝试对一系列视频文件进行编码,并且我想自动将剧集的名称附加到文件名中,但我对使用 ffmpeg 还是很陌生,到目前为止,谷歌搜索被证明是不成功的。

我也在尝试编写一个对整个文件夹进行编码的批处理脚本,目前它看起来像for %%a in ("*.mkv") do ffmpeg -i %%a -filter_complex "[0:v][0:s:1]overlay[subs];[subs]scale=960:720" -map 0:a:1 -acodec copy -sn test.mp4

我应该用什么代替“test.mp4”?

【问题讨论】:

  • 我建议您将test.mp4 替换为"%%~na.mp4"。此外,您也应该将-i %%a 更改为-i "%%a"
  • 获取标题元数据:ffprobe -v error -show_entries format_tags=title -of csv=p=0 input.mp4
  • @llogan,这个问题是关于ffmpeg,OP没有提到有ffprobe,因为那是另一个第三方应用程序,他们需要先下载它。你真的应该把这些事情说清楚。 Piotr Adryan,您需要澄清一下,如果当您说出剧集的名称时,这些名称本质上是分配给 mkv 文件的名称,(如我的评论中所假设的),或文件的内部部分元数据本身,(洛根的评论)
  • @Compo ffprobe 是 FFmpeg 的另一个工具。 “确保你先下载它”对我来说似乎是多余的。您应该给 OP 足够的信任,让他们可以自己确定这些事情(这很明显)。使用ffmpeg 以理智的方式获取标题元数据是不可能的。诸如此类的用途正是 ffprobe 的用途。
  • 我知道ffprobe 是@llogan,它不是问题的一部分,也不是它的标签,是一个单独的下载,OP 没有提到他们有。

标签: batch-file ffmpeg


【解决方案1】:

因此,在 Ilogan 的帮助下,我设法找到了我想要的答案,尽管它实际上还不能正常工作,但我决定在这里写下我到目前为止设法找到的部分对我来说,一部分是为了其他可怜的灵魂。

因此,按照 Ilogan 的提示,我设法发现 ffprobe -v error -select_streams v:0 -show_entries stream_tags=title -of csv=p=0 "%%a" 确实有效,并返回了在视频流中编码的标题元数据。

接下来将其用作批处理文件中的变量,这已被多次回答,但我也会在此处包含它: 您希望将命令包含在具有以下外观的 for 循环中:FOR /F "delims=" %%g IN ('ffprobe -v error -select_streams v:0 -show_entries stream_tags^=title -of csv^=p^=0 "%%a"') do (SET title^=%%g) 重要部分:一些教程显示“tokens = *”而不是“delims =”,这可能会起作用,但我认为 delims 在这里会更好地工作。最重要的部分是命令包含等号,您需要使用插入符号^ 进行转义并让命令行正确解析它们。

剩下的问题是我的脚本目前看起来像这样:

for %%a in ("*.mkv") do (
FOR /F "tokens=*" %%g IN ('ffprobe -v error -select_streams v:0 -show_entries stream_tags^=title -of csv^=p^=0 "%%a"') do (SET title=%%g)
ffmpeg -i "%%a" -filter_complex "[0:v][0:s:1]overlay[subs];[subs]scale=960:720" -map 0:a:1 -acodec copy -sn "%title%.mp4")) 

似乎 windows 正在运行文件中第一次出现的命令,到那时标题变量仍然为空 - 结果我得到了名称为“.mp4”的文件并且仍在弄清楚如何处理那个

编辑:好的,所以我发现您需要做的是将setlocal enabledelayedexpansion 放在开头,并且标题变量需要使用感叹号,而不是百分号,并且有效!我对其进行了测试,它正确地创建了带有标题的文件。

【讨论】:

    猜你喜欢
    • 2015-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-13
    • 1970-01-01
    • 2017-11-23
    • 2020-06-29
    • 1970-01-01
    相关资源
    最近更新 更多