ffmpeg 일괄 변환 .avi를 .mp4로 - 재로

ffmpeg 일괄 변환 .avi를 .mp4로 - 재로

간단히 비디오 및 오디오 스트림을 복사하여 비디오 파일 디렉터리(또는 여러 개)를 .avi에서 .mp4 컨테이너로 일괄 변환하고 싶습니다. 나는 ffmpeg이 작업을 수행하는 명령을 알고 있으며 파일을 개별적으로 처리하는 데 문제가 없습니다.

나는 쉘 스크립트 작성을 어렵게 만드는 파일 처리 및 반복 절차 ash에 익숙하지 않습니다 . bash(전력이 부족한 Synology NAS에서 실행되기 때문에 Ash에서 실행해야 합니다.)

답변1

Bourne 쉘 구문을 고수한다면 괜찮을 것입니다. 애플리케이션에서 가장 중요한 것은 for 루프여야 합니다.

 #/bin/ash

 for filename in *.avi
 do
      ffmeg parameters "$filename"
 done

답변2

이를 위해 변환을 위해 핸드 브레이크를 사용하지만 사용자 ffmpeg로 수정될 수 있는 두 개의 스크립트를 사용했습니다(그러나 ffmpeg는 더 이상 사용되지 않는다는 점을 명심하십시오).

process.sh를 실행하면 각 파일에 대해 encode.sh를 실행하면서 반복됩니다.

process.sh

if [ "$1" != "" ]; then
    dir="$1"
else
    dir="/Data/Movies"
fi

if [ -e /tmp/process.lock ] ; then 
    echo "Process already running"
else
    echo `date` > /tmp/process.lock
    find "$dir" \( -mmin +10 -name "*.avi" -o -name "*.mkv" -o -name "*.mpg" \) -exec echo "{}" \; > /tmp/list
    cat /tmp/list | wc -l
    read -p "Pausing...."
    find "$dir" \( -mmin +10 -name "*.avi" -o -name "*.mkv" -o -name "*.mpg" \) -exec /home/coteyr/encode.sh "{}" \;
    rm /tmp/process.lock
fi

그리고 encode.sh

#!/bin/bash
echo "$1" > /tmp/current_encode.txt
nice -n 19 HandBrakeCLI -T -Z Normal -i "$1" -o "$1.m4v" > /tmp/progress.log
mv "$1" /Data/Temp/
echo "Idle" > /tmp/current_encode.txt
echo "Idle" > /tmp/progress.log

관련 정보