디렉토리에 대해 ffmpeg cron 작업을 설정할 수 있습니까?

디렉토리에 대해 ffmpeg cron 작업을 설정할 수 있습니까?

gif 파일을 mp4로 자동 변환하는 방법이 필요합니다. 그리고 디렉터리를 설정하고 5분마다 새 파일을 확인하세요. 나중에 ffmpeg를 사용하여 gif를 숨기고 삭제하고 싶습니다.

ffmpeg -f gif -i cat.gif cat.mp4

이게 어려운 일인가요?

답변1

작업을 수행하는 쉘 스크립트를 작성하는 것은 간단해야 합니다(예 ffmpegcron.sh: ).

#!/bin/sh
for i in /path/to/gifs/*.gif
do
    [ -f "$i" ] || continue
    ffmpeg -f gif -i "$i" "${i%.gif}.mp4" &&
        rm -f "$i"
done

그런 다음 다음을 사용하여 스크립트를 실행 가능하게 만들고 chmod +rx ffmpegcron.sh다음 crontab -e과 같은 cron 작업을 만듭니다.

*/5 * * * * /path/to/ffmpegcron.sh

그런 다음 cron5분마다 스크립트를 실행합니다.

답변2

나는 여기서 시간 기반 솔루션을 사용하지 않을 것이며 이 질문에 대한 phg의 의견에서 접근 방식을 강력히 옹호합니다.

확률은 높지 않을 수 있지만 출처에 관계없이 GIF가 완전히 작성되기 전에 cron을 사용하여 변환을 시작하는 것이 가능합니다.

#! /bin/bash
inotifywait -m -e close_write /path/to/dir | while read line
do
    if [[ "${line,,}" =~ ".gif" ]] ; then
      file=$(echo "$line"|awk 'BEGIN{FS=" CLOSE_WRITE,CLOSE "}{printf "%s%s",$1, $NF}')
      ffmpeg -f gif -i "$file" "${file%.*}.mp4" &&
          rm -f "$file"
    fi;
done

관련 정보