2014-11-18 4 views
0

Я пишу скрипт bash для автоматического извлечения аудиодорожки из видеофайла с помощью avconv. Этот скрипт должен обрабатывать любой видеоформат и извлекать звуковую дорожку без сохранения исходного кодека. Например:автоматически извлекает звуковую дорожку и файл имени из видео с помощью avconv

extract_audio name.flv 

где звуковая дорожка файла FLV является mp3, должен производить файл с именем name.mp3, но если она содержит и ААС трек он должен производить aumatically name.aac

Пока мой сценарий выглядит следующим образом это:

#!/bin/bash 
dryname=${1%.*} #get remove video extention 
avconv -i "$1" -vn -acodec copy "${dryname}.${audio_extension}" 

Единственная часть, которая мне не хватает, как получить кодек, используемый в звуковой дорожки видеофайла. Я уверен, что это можно сделать с помощью команды avconv, но я не могу понять это на странице справки.

ответ

2
audio_extension=$(avconv -i "$1" 2>&1 | grep -io "audio:...."|cut -d ' ' -f2) 
+0

Может 'avprobe' будет лучше, чем' avconv -i'. – v010dya

+0

Оба «avconv -i» и «avprobe» дают идентичный результат о видео и аудио данных. Таким образом, не имеет значения, какой из них вы используете. – ajaaskel

+0

Точно, но «avconv -i» выполняет больше операций, поэтому, если вам нужен только вывод, вы должны использовать правильный инструмент для задания. – v010dya

1

Вы можете выполнить команду ниже, прежде всего, для проверки информации о кодеке, а затем извлечь ее с помощью соответствующего суффикса.

$ avconv -i test.mp4 2>&1 |grep Audio 
    Stream #0.0(eng): Audio: aac, 44100 Hz, stereo, fltp, 62 kb/s (default) 

 Смежные вопросы

  • Нет связанных вопросов^_^