Пакетная обработка ffmpeg?

учитывая avi инкапсулированное видео с wma2 аудио и MP4 видео как я могу пройти через видео, конвертировать аудио в MP3; затем повторно инкапсулировать весь файл в AVI?

ffmpeg -i "foo bar.avi" -acodec libmp3lame "Convertedfoo bar.avi"

теперь, как я могу сделать ту же команду для каждого .avi файл в этом каталоге?

(требуется решение с помощью bash или Windows CLI [for?])

5
задан A T
источник

4 ответов

Это не просто работает?

for file in *.avi;do ffmpeg -i "$file" -acodec libmp3lame "Converted\$file";done

Edit:

там, кажется, проблема обратной косой черты...

попробуйте это:

for file in *.avi;do ffmpeg -i "$file" -acodec libmp3lame 'Converted\'"$file";done

или такой:

for file in *.avi;do ffmpeg -i "$file" -acodec libmp3lame 'Converted\'"$file";done
3
отвечен F. Hauri 2012-12-04 11:45:01
источник

In bash следующее сделает чего вы хотите если ваш бег оно в директории, то которая имеет .avi файлы:

#!/bin/bash
for file in *.avi; do
    ffmpeg -i "$file" -c:a libmp3lame "Converted\$file";
done;
1
отвечен imp25 2012-12-04 11:45:08
источник

решение Python

from sh import ffmpeg
from os import listdir
from os.path import split
from sys import argv

[ffmpeg("-i '{0}' -acodec libmp3lame 'Converted\{0}'".format(_file))
 for _file in sum([listdir(split(arg)[0]) for arg in argv], [])]
0
отвечен A T 2012-12-04 11:40:27
источник

после проб и ошибок разговора с командами, участвующих я обнаружил, что это работает в Баш оболочки

for i in *.ts; do ffmpeg -i "$i" -threads 6 -f mpegts -vcodec libx264 -preset slow -bufsize 8000 -async 48000 -acodec ac3 -ab 384k -n subdir/"${i%}"; done

это делает высококачественную сжатую версию ввода .файлы ts с тем же именем, но в подкаталоге. Я предполагаю, что он не напишет subdir, если он не существует, поэтому вам придется указать тот, который заменяет то, что я называю "subdir". Также я использовал-n, чтобы он не перезаписывал файлы, которые я индивидуально визуализировал, прежде чем я обнаружил правильный синтаксис для это пакетная обработка.(У меня 6-ти ядерный процессор, так что "- threads " нужно настроить и под ваше оборудование)

0
отвечен Doug Jotblad 2013-03-21 17:59:04
источник

Другие вопросы bash command-line ffmpeg