如何在 ffmpeg 中创建随机密码名称?

How to create random pass names in ffmpeg?

通常情况下,当使用 ffmpeg 时,您会为“通过”信息定义一个名称,以便在使用 2(或更多)通道编码视频时将其存储在文件中,例如:

ffmpeg -i "INPUT_FILE" -pass 1 -passlogfile videopass.log /dev/null -y && ffmpeg -i "INPUT_FILE" -pass 2 -passlogfile videopass.log -y "OUTPUT_FILE"

我希望能够以最简单的方式在 bash 中自动创建一个随机通行证名称,最好是使用系统默认工具的“单线”(Linux) ...类似:

$(tr -dc A-Za-z0-9 </dev/urandom | head -c 8).log | ffmpeg -i "INPUT_FILE" -pass 1 -passlogfile > /dev/null -y && ffmpeg -i "INPUT_FILE" -pass 2 -passlogfile > -y "OUTPUT_FILE"

我太笨了,想不出一种方法来做类似但实际上有意义的事情。

非常感谢您!

假设要求为密码创建一个随机名称 file:

$ pwdlog=$(mktemp XXXXXXXX.log)      # have mktemp create a file with 8 random characters + ".log"

$ typeset -p pwdlog
declare -- pwdlog="Em6GeMdc.log"

$ ls -l "${pwdlog}"
-rw-------+ 1 username None 0 Apr 26 15:13 Em6GeMdc.log

然后可以在 ffmpeg 调用中引用此文件,如下所示:

ffmpeg -i "INPUT_FILE" -pass 1 -passlogfile "${pwdlog}" ...

经过无数次尝试和谷歌搜索,我找到了一种方法来完成我正在寻找的事情...one-liner,没有太复杂或太花哨,使用我系统的默认工具:

printf $RANDOM | xargs -i sh -c 'ffmpeg -i "INPUT_VIDEO" -pass 1 -passlogfile {} -an -f mp4 /dev/null -y && ffmpeg -i "INPUT_VIDEO" -pass 2 -passlogfile {} -y "OUTPUT_VIDEO"'

这将创建一个非常简单的5位随机数,它将用作ffmpeg中pass文件的初始名称,ffmpeg会自动添加文件扩展名。当然,您可以(并且可能应该)将 video/audio 参数添加到您的 ffmpeg 命令中。重要的元素是开头的“printf $RANDOM | xargs -i sh -c”和“-passlogfile”命令后的“{}”大括号。

可能还有更简单或更优雅的方法,但这完全符合我的要求,所以我很高兴。