Я пытаюсь записать пользовательскую камеру и микрофон и использую MediaRecorder для преобразования потока в BLOB-объекты и отправляю их каждые 2 секунды на серверную часть с помощью веб-сокета. Все работает нормально, но когда я проверил окончательное видео в формате mp4 на сервере, в нем нет звука, я пытаюсь указать аудиокодек, но все равно безрезультатно.
Мой код интерфейса: -
const micStream = await navigator.mediaDevices.getUserMedia({ audio: true });
const recorder = new MediaRecorder(stream, {
mimeType: 'video/webm;codecs=H264',
videoBitsPerSecond: 8000000,
audioBitsPerSecond : 8000000
});
recorder.ondataavailable = (e: BlobEvent) => {
websocket.send(e.data)
}
recorder.start(2000);
А вот внутренний код: -
@router.websocket("/streamaudio")
async def websocket_endpoint(websocket: WebSocket):
await manager.connect(websocket)
recordingFile = os.path.join(os.getcwd(), f"recording_.mp4")
command = [
'ffmpeg',
'-y',
'-i',
'-',
'-codec:v',
'copy',
'-c:a', 'aac',
'-y',
'-f', 'mp4',
recordingFile,
# "-"
# f'output{queueNumber}.mp4',
]
try:
while True:
try:
data = await websocket.receive_bytes()
process.stdin.send(data)
except RuntimeError:
break
except WebSocketDisconnect:
print(f"Client disconnected: {websocket.client.host}")
finally:
manager.disconnect(websocket)
await process.stdin.aclose()
await process.wait()
Подробнее здесь: https://stackoverflow.com/questions/790 ... ing-ffmpeg