Python извлекает wav из видеофайлаPython

Программы на Python
Ответить
Anonymous
 Python извлекает wav из видеофайла

Сообщение Anonymous »

Связано:

Как извлечь аудио из видеофайла с помощью Python?

Извлечь аудио из видео в формате wav

Как выдрать аудио из видео?

Мой вопрос: как извлечь аудио в формате wav? дорожка из видеофайла, скажем, video.avi?
Я читал много статей, и везде люди предлагают использовать (из Python) ffmpeg в качестве подпроцесса (потому что не существует надежных привязок Python к ffmpeg - единственной надеждой был PyFFmpeg, но я нашел его сейчас не поддерживается). Я не знаю, является ли это правильным решением, и я ищу хорошее.

Я посмотрел на gstreamer и нашел его хорошим, но неспособным удовлетворить мои потребности — единственный способ, который я нашел для достижения этой цели из командной строки выглядит так:

gst-launch-0.10 playbin2 uri=file://`pwd`/ex.mp4 audio-sink='identity single-segment=true ! audioconvert ! audio/x-raw-int, endianness=(int)1234, signed=(boolean)true, width=(int)16, depth=(int)16, rate=(int)16000, channels=(int)1 ! wavenc ! filesink location=foo.wav’


Но это неэффективно, потому что мне приходится ждать целую вечность при воспроизведении видео и одновременной записи в WAV-файл.

ffmpeg намного лучше:

avconv -i foo.mp4 -ab 160k -ac 1 -ar 16000 -vn ffaudio.wav


Но я не могу запустить его из Python (не как подпроцесс командной строки). Не могли бы вы указать мне на плюсы и минусы запуска ffmpeg из Python в качестве утилиты командной строки? (Я имею в виду использование модуля многопроцессорной обработки Python или чего-то подобного).

И второй вопрос.

Как просто разрезать длинный WAV-файл на части, чтобы не испортить слова? я имею в виду фрагменты длиной 10-20 секунд с началом и концом во время паузы в предложениях/словах?

я знаю, как разбить их на произвольные кусочки:

import wave

win= wave.open('ffaudio.wav', 'rb')
wout= wave.open('ffsegment.wav', 'wb')

t0, t1= 2418, 2421 # cut audio between 2413, 2422 seconds
s0, s1= int(t0*win.getframerate()), int(t1*win.getframerate())
win.readframes(s0) # discard
frames= win.readframes(s1-s0)

wout.setparams(win.getparams())
wout.writeframes(frames)

win.close()
wout.close()


Подробнее здесь: https://stackoverflow.com/questions/267 ... video-file
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»