Inotifywait указывает неверный путь к файлу после запуска ffmpeg - PullRequest
0 голосов
/ 23 марта 2019

Так что я запускаю небольшой скрипт inotifywait, чтобы отслеживать папку для новых файлов и транскодировать их, если они имеют формат mxf и содержат видеопоток. Но по какой-то странной причине, если скрипт вызывает ffmpeg, следующее событие file by inotify дает мне неправильный путь, кажущийся случайным, обрезающий путь к файлу в любой позиции.

До сих пор я пытался переместить вызов на внешний сценарий, сбросить переменную файла, которая в любом случае не должна иметь значения, и добавить режим ожидания в сценарий. Я также попытался использовать обычные пути к файлам без пробелов или - что не должно иметь значения, но это также не помогло.

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

...