Pull to refresh

AviSynth + VirtualDub: Извлекаем аудио в командной строке

Reading time2 min
Views3.2K
Мне как-то потребовалось извлечь аудио из *.FLV файлов. Графические видеоредакторы мне показались для этой цели слижком уж неподходящими, поэтому я решил написать свою собственную утилиту, делающую извлечение звука из любых медиафайлов, в командной строке.
Я пользовался только опенсорсными продуктами.

Итак, что нам потребуется:
  • набор кодеков, такой как K-Lite Codec Pack
  • видеоредактор Virtual Dub
  • AVISynth


Шаг 1. Устанавливаем K-Lite Codec Pack, Virtual Dub и AVISynth.

Шаг 2. Пишем вот такой скрипт на BAT-языке командного процессора cmd.exe:

@echo off
@rem (C) danx
set VD=VirtualDub.audio.
echo VirtualDub.Open(VirtualDub.params[0],"",0); > 1.jobs
echo %VD%SetSource(1); >> 1.jobs
echo %VD%SetMode(1); >> 1.jobs
echo %VD%SetInterleave(1,500,1,0,0); >> 1.jobs
echo %VD%SetClipMode(1,1); >> 1.jobs
echo %VD%SetConversion(44100,0,1,0,1); >> 1.jobs
echo %VD%SetVolume(); >> 1.jobs
echo %VD%SetCompression(); >> 1.jobs
echo %VD%EnableFilterGraph(0); >> 1.jobs
echo %VD%filters.Clear(); >> 1.jobs
echo VirtualDub.SaveWAV(VirtualDub.params[1]); >> 1.jobs
echo VirtualDub.Close(); >> 1.jobs
FOR %%i IN (*.*) do (
  if not exist %%~ni.wav (
    echo.
    echo Re-compressing %%i
    echo c = DirectShowSource^("%%i"^) > 3.avs
    echo AudioDub^(BlankClip^(length=c.FrameCount^), c^) >> 3.avs
    "C:\Program Files\VirtulDub\vdub.exe" /i 1.jobs 3.avs %%~ni.wav >nul
  )
)
del /q /s 3.avs >nul 2>&1
del /q /s 1.jobs >nul 2>&1



Шаг 3. Сохраняем этот скрипт как «extractaudio.bat» в одном из каталогов, прописанных в переменной окружения %PATH%.

Всё!

При запуске этого скрипта в каталоге, в котором лежат аудио- или видеофайлы, скрипт извлечет из каждого такого файла аудио в формате WAV 44кГц моно, имя файла будет совпадать с именем исходного медиафайла, а расширение будет WAV.

Этот код, к примеру, может выковыривать звук из видеороликов в формате 3GP и из флеш-видео FLV.

Успехов.
Tags:
Hubs:
Total votes 13: ↑8 and ↓5+3
Comments11

Articles