因此,我运行了一个inotifywait脚本来监视文件夹中的新文件,如果它们是mxf并包含视频流,则对它们进行代码转换。但是出于某种奇怪的原因,如果脚本确实通过inotify调用ffmpeg,则下一个fileevent会给我一个错误的路径,似乎是在任意位置随机剪切文件路径。
到目前为止,我尝试将调用移至外部脚本,重置无论如何都不重要的文件变量,并为脚本增加了睡眠时间。我也尝试使用没有空格或-的普通文件路径,这没关系,但这也无济于事。
inotifywait -m -r -e close_write -e moved_to --format "%w%f" "$dir" | while read f
do
if ffprobe "$file" 2>&1 | egrep 'Stream #0:0: Video' && ffprobe "$file" 2>&1 | egrep 'MXF' ; then
mkdir -vp "$movepath" && mkdir -vp "$trans$path3" && mkdir -vp "$trans2$path3" && mv -fu "$f" "$trans2$path" && \
ffmpeg -y -i "$file" -map_metadata 0 -c:v h264_nvenc -b:v 2m -bufsize 2m -profile:v baseline -level:v 3.0 -pix_fmt yuv420p -vf yadif,scale="iw/4:ih/4" -an "$transpath" 2>> copy_ffmpeg_log.txt
done
预期:
/media/raid/TMO_Media/INGEST-HP.1/WacinS1_19V01.5C935C93A3B4V.mxf
转码后结果的示例:
cinS1_19A06.5C935C93A088A.mxf
在正常的mv命令工作并且inotify停止对文件进行代码转换时按预期的方式工作时,inotify给出的下一个路径变得混乱
链接到整个脚本:https://pastebin.com/aRNG4rqz