1

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

ffmpeg -i "foo bar.avi" -acodec libmp3lame "Converted\foo bar.avi"

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

(нужно решение с использованием bash или Windows CLI [ for?])

4 ответа4

3

Разве это не просто работа?

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

или это:

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

В bash следующее будет делать то, что вы хотите, если вы запустите его в каталоге, содержащем файлы .avi :

#!/bin/bash
for file in *.avi; do
    ffmpeg -i "$file" -c:a libmp3lame "Converted\\$file";
done;
0

После разговора проб и ошибок с задействованными командами я обнаружил, что это работает в оболочке bash

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

Решение 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], [])]

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .