使用ffmpeg编辑多个文件的元数据标题

时间:2016-04-22 02:08:28

标签: ffmpeg metadata

我希望能够一次或使用一个命令将视频元数据标题添加/编辑到多个文件中,但我不知道如何告诉ffmpeg这样做。

我读了一个similar post on the Ubuntu Forums,但之前我从未在Linux中使用过字符串操作,所以我在帖子中看到的命令目前还不在我的理解之中,而且很多讨论都在讨论之中我的脑袋。

我的所有视频文件都采用文件名格式,包括节目名称,剧集编号和剧集标题。例如:

  

show_name - episode_number - episode_title.extension

     

Bleach - 001 - 一个Shinigami出生!.avi

是否有一种简单的方法可以从文件名中读取标题和剧集编号并将其放入元数据标签中,而无需手动浏览每个文件?

编辑1:所以我发现我可以遍历目录中的文件,并回显文件名,朋友告诉我尝试使用bash来解析字符串并从中返回值以在ffmpeg命令中使用线。问题是,我完全不知道如何做到这一点。 bash中的字符串操作在第一次看时非常混乱,我似乎无法将它输出到我的变量中。我的测试bash:

 for file in "Bleach - 206 - The Past Chapter Begins! The Truth from 110 Years Ago.mkv"; do   extension=${file##*.} showName=${file%% *} episode=${file:9:3}; echo Extension: $extension Show: $showName Episode: $episode;    done

输出

  

扩展名:mkv显示:Bleach发作:206

我将需要的所有变量,我只是不知道如何移动那些现在在ffmpeg中运行的变量。

编辑2:我相信通过大量的反复试验,我能够找到一个完全符合我想要的bash命令。

for file in *; do   newname=${file:0:-4}_2 ext=${file##*.} filename=${file} showname=${file%% *} episode=${file:9:3} nameext=${file##*- } title=${nameext%.*};     ffmpeg -i "$filename" -metadata title="$title" -metadata track=$episode -metadata album=$showname -c copy "$newname.$ext";    mv -f "$newname.$ext" "$filename";    done

这使我可以解析文件名中的信息,将其复制到某些变量,然后使用这些变量运行ffmpeg。它输出到第二个文件,然后将该文件移动到原始位置,覆盖原始文件。如果您不确定它将如何解析您的文件,可以删除该部分,但我很高兴能够获得适合我的解决方案。

0 个答案:

没有答案