На вход подается аудио и видео дорожка в виде стрима (запись в вэб камеры и микрофона пользователя) запись может осуществятся например так
ffmpeg -f dshow
-i video="Integrated Webcam":audio="Microphone (Realtek Audio)"
-profile:v high -pix_fmt yuvj420p -level:v 4.1 -preset ultrafast -tune zerolatency
-vcodec libx264 -r 30 -s 1920x1080
-acodec aac -ac 1 -ar 16000
-f mpegts -flush_packets 0 udp://192.168.1.1:5000?pkt_size=1316
Далее мы от стрима должны отделить аудио дорожку и ждать срабатывания события например так
process = subprocess.Popen(['ffmpeg', '-loglevel', 'quiet', '-i',
data_audio,'-ar', str(sample_rate) , '-ac', '1', '-f', 's16le', '-'],
stdout=subprocess.PIPE)
while True:
data = process.stdout.read(16000)
if len(data) == 0:
break
if rec.AcceptWaveform(data):
тут происходит события (срабатывания события подразумевает возврат метрик времени из аудиодорожки, по которым в дальнейшем осуществляется фильтрация).
Нужна помощь в том, как организовать буфер для обработки видео. То есть мы берем видеоряд неопределенной длины, делаем преобразование аудиодорожки и лепим нашу дорожку в видео). Понятно все кроме буфера в котором это можно сделать.
Можно не делать работу а просто объяснить как организовать буфер для данной работы более менее правильно.
Опубликован 23.08.2020 в 12:25