ffmpeg пакетное преобразование .avi к .mp4 - в пепле

Думая нестандартно, вы можете вызвать write() с файловым дескриптором, который ничего не делает с записями. Например,

int main()
{
    int d = open("/dev/null", 0);
    write(d, "hello world", 11);
}

Часть результирующего потока вывода в моей системе:

open("/dev/null", O_RDONLY)             = 3
write(3, "hello world", 11)             = -1 EBADF (Bad file descriptor)

Этого достаточно для коротких сообщений (более длинные сообщения могут быть усечены прямым потоком).

0
11.04.2015, 08:56
2 ответа

Я использую два сценария для этого, он использует Handbreak, чтобы выполнить преобразование, но может быть изменено для пользователя 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
0
28.01.2020, 02:36

Вы должны быть в порядке, если вы придерживаетесь синтаксиса оболочки Bourne, самый импорт этого для вашего приложения должен быть петлей для цикла.

 #/bin/ash

 for filename in *.avi
 do
      ffmeg parameters "$filename"
 done
2
28.01.2020, 02:36

Теги

Похожие вопросы