自动将输出文件与输入文件匹配(Applescript x FFMPEG)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了自动将输出文件与输入文件匹配(Applescript x FFMPEG)相关的知识,希望对你有一定的参考价值。

我使用以下AppleScript作为Automator服务来右键单击finder中的视频文件,并使用ffmpeg终端命令刻录匹配的字幕文件(.ass)。在这种情况下,ffmpeg编码一个新的Prores 422(HQ)文件。

on run {input, parameters}
tell application "Terminal"
    activate
    set filesString to ""
    repeat with file_ in input
        set filesString to filesString & " " & quoted form of (POSIX path of file_)
    end repeat
    do script "for f in" & filesString & "; do  
base=$f  
ffmpeg -y -i "$base" -c:v prores -profile:v 3 -pix_fmt yuv422p10le -vf "ass=${base%.*}.ass" -c:a copy "${base%.*}_sub.mov";
done"
    end tell
    return input
end run 

是否可以将输出文件及其编解码器自动匹配到输入文件? 由于混合的windows / mac环境(Prores(mov),dnxhr(mxf / mov)),我们使用了许多不同的输入格式,我希望在工作站的finder服务菜单中没有8-12个编码选项: )。

提前致谢!!

答案

如果不作为参数给出,ffmpeg将从文件结尾中选择编解码器本身。在大多数情况下这很好。只需将相同的扩展名从输入文件设置为输出文件即可。

如果您需要更多粒度,可以使用ffprobe。它是来自ffmpeg的工具,可以读取视频文件的所有属性。

可以在这里找到一个很好的解释:https://trac.ffmpeg.org/wiki/FFprobeTips

例如,第一个流的编解码器(这是大多数视频文件中的视频流)可以通过以下方式读取:

ffprobe -v error -select_streams v:0 -show_entries stream=codec_name -of default=noprint_wrappers=1:nokey=1 input.mp4

您可以将值保存在变量中,并在ffmpeg命令中进行设置。

以上是关于自动将输出文件与输入文件匹配(Applescript x FFMPEG)的主要内容,如果未能解决你的问题,请参考以下文章

查找与模式匹配的文件,替换字符串,然后将输出与原始文件进行比较,命令失败

Awk多模式匹配,并将输入文件的输出格式化为列。

Linux标准输入输出与重定向详解果断收藏

将一个输入文件与给定数量的文件匹配的算法

fflush和标准输入与输出

fflush和标准输入与输出