Вчера мне нужно было записать звуковое сопровождение из нескольких avi видеофайлов в формате mp3, чтоб сохранить на диске и потом слушать. (кстати, это был набор Intermediate to Advanced Linux Series от CBTnuggets, 24 видео файла, если кому нужно, могу дать ссылку на Улитке, а если у вас есть другие linux курсы от CBTnuggets, поделитесь, плз, со мной).
Средствами linux это делается довольно просто, тем более, что пакет
transcode с набором самых популярных модулей я уже установил чуть раньше. Кроме того, нам потребуется программа
avinfo, при помощи которой мы получим значение play time для каждого avi файла.
1. Все видеофайлы помещаем в одну директорию, и там же создаем примерно такой скрипт:
Код HTML:
#!/bin/bash -x
for file in *.avi
do
time=$(/sbin/avinfo $file|grep audio|awk -F' ' {'print $3'})
/usr/bin/transcode -x null,avi -i $file -c $time -y null,lame -E 44100 -b 96 -o /path/to/files/$file
done при помощи цепочки из трех команд мы получаем и форматируем значение play time для каждого avi файла.
Код HTML:
/sbin/avinfo file.avi|grep audio|awk -F' ' {'print $3'} это значение мы и присваиваем переменной time, которая используется в нашем скрипте.
Частоту и битрейт конечного файла можно выбрать как угодно, в зависимости от предпочтений и качества исходного материала, в моем случае это 44100Hz и 96kbps
В зависимости от размера, количества файлов и мощности вашего компьютера, времени может потребоваться от нескольких минут до нескольких часов. Но теперь у нас все автоматизировано...
p.s.
transcode по какой-то причине не хочет выходить из цикла, если не указать play time для файла явно, а продолжавет работать дальше, руководствуясь своими представлениями о его значении... Потому и приходится дополнительно использовать
avinfo. Кстати,
avinfo оказалась достаточно интересной и сама по себе, мне кажется я знаю, как использовать ее на благо посетителей Улитки...