Код должен найти все файлы MP4 в подкаталоге для сжатия с помощью ffmpeg - PullRequest
0 голосов
/ 22 июня 2019

У меня есть накопитель с множеством файлов MP4, которые сложно пройти по папке и сжать.

Я пытаюсь создать скрипт, который запускается в терминале, который откроет назначенную папку, найдет все файлы .mp4 в подпапке и сожмет файлы, используя спецификации, которые я назначу для ffmpeg. Очевидно, что выходные файлы должны быть намного меньше по размеру, если все сделано правильно. Я пишу код, о котором у меня есть идея ниже, но я не слишком хорош в BASH и / или PERL.

for f in $(find ../ -iname '*.avi'); do 
  n=$(echo $f|sed -e 's/.avi/_cbr.mp4/i'); 
  echo "ffmpeg [options] -i $f $n"; 
done

выход:

ffmpeg [options] -i ../1hourjob/videncode/sound10s.avi ../1hourjob/videncode/sound10s_cbr.mp4
ffmpeg [options] -i ../1hourjob/videncode/t003.avi ../1hourjob/videncode/t003_cbr.mp4
ffmpeg [options] -i ../ffmpeg/Masha.avi ../ffmpeg/Masha_cbr.mp4
ffmpeg [options] -i ../ffmpeg/window.avi ../ffmpeg/window_cbr.mp4

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

1 Ответ

0 голосов
/ 23 июня 2019

Вы можете рекурсивно перемещаться по каталогам в bash следующим образом:

avi_to_mp4() {
    cd "$1"
    for f in *; do
        if [[ -d "$f" ]]; then
            avi_to_mp4 "$f"
        elif [[ "$f" == *.avi ]]; then
            newf="${f:0: -4}.mp4"

            echo "$f" to "$newf"     # run your command here

        fi
    done
    cd ..
}

avi_to_mp4 "$1"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...