所以我们有:
- 一秒时长的传入视频片段
- 片段是连续视频的一部分
- 每个段都是一个字节数组
- 只有第一段具有解码整个视频所需的元信息
我想在这些视频到达时补充字节缓冲区并立即将接收到的字节解码为帧
服务器端:
await websocket.accept()
buffer = io.BytesIO()
current_position = 0
container = None
try:
while True:
data = await websocket.receive_bytes()
buffer.write(data)
buffer.seek(current_position)
if container is None:
container = av.open(buffer, mode="r")
for packet in container.demux():
if packet.size == 0:
continue
current_position += packet.size
for frame in packet.decode():
print(frame)
except WebSocketDisconnect:
container.close()
buffer.close()
这段代码目前不起作用,我尝试使用 opencv 和 pyav 但对我没有任何帮助
客户端:
const socket = new WebSocket("ws://endpoint");
const mediaRecorder = new MediaRecorder(stream);
mediaRecorder.ondataavailable = ev => ev.data.size > 0 && socket.send(ev.data);
mediaRecorder.start(1000);