![디렉토리에 대해 ffmpeg cron 작업을 설정할 수 있습니까?](https://linux55.com/image/143725/%EB%94%94%EB%A0%89%ED%86%A0%EB%A6%AC%EC%97%90%20%EB%8C%80%ED%95%B4%20ffmpeg%20cron%20%EC%9E%91%EC%97%85%EC%9D%84%20%EC%84%A4%EC%A0%95%ED%95%A0%20%EC%88%98%20%EC%9E%88%EC%8A%B5%EB%8B%88%EA%B9%8C%3F.png)
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
그런 다음 cron
5분마다 스크립트를 실행합니다.
답변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