【发布时间】:2021-07-18 04:53:57
【问题描述】:
我正在尝试在浏览器 (canvas.captureStream) 上捕获画布,添加音频(使用 getUserMedia 捕获并使用 canvasStream.addTracks 添加到流中)并将其发送到服务器。服务器使用 ffmpeg 将流(使用 H264 编码后)发送到 facebook live。然而,流并不稳定,并在几分钟内断开连接。 如果直接(没有 canvas.captureStream)发送视频和音轨(使用 getMediaUser),它工作正常。我怀疑它与音轨不正确有关,因此 facebook 拒绝它(ffmpeg 没有特别错误,它只是因 IO 错误而退出)。需要帮助找出将画布流与音频一起发送的正确方法。
当前的ffmpeg命令如下
ffmpeg -i - -c:v libx264 -crf 23 -preset ultrafast \
-tune zerolatency -max_muxing_queue_size 1000 \
-vsync cfr -async 1 -bufsize 2M -r 30 -g 60 -keyint_min 30 \
-x264opts keyint=30 -pix_fmt yuv420p -level 3 \
-c:a aac -b:a 96k -ar 96000 \
-f tee -map 0:v -map 0:a [f=flv] <rtmp url 1> | [f=flv] <rtmp url 2>
注意:上述命令中的
我在浏览器上捕获画布和音频的设置如下
canvasStream = canvas.captureStream(30);
audioTrack = stream.getTracks().filter( (track) => {
return track.kind === 'audio';
})[0];
canvasStream.addTrack(audioTrack);
注意:getUserMedia 中给出的音频约束如下
audio: {
sampleRate: 44100,
echoCancellation: true
}
ffmpeg 退出时报错如下
FFMPEG:[flv @ 0x5626ecf0f7c0] Failed to update header with correct duration.
[flv @ 0x5626ecf0f7c0] Failed to update header with correct filesize.
FFMPEG:[tee @ 0x5626ec8550c0] Slave muxer #1 failed, aborting.
av_interleaved_write_frame(): Broken pipe
FFMPEG:[flv @ 0x5626ecbe8840] Failed to update header with correct duration.
FFMPEG:[flv @ 0x5626ecbe8840] Failed to update header with correct filesize.
FFMPEG:frame= 2378 fps= 22 q=22.0 Lsize=N/A time=00:01:21.17 bitrate=N/A dup=2202 drop=5 speed=0.745x
video:18916kB audio:959kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown
FFMPEG:[libx264 @ 0x5626ec855b80] frame I:80 Avg QP:13.97 size:115968
[libx264 @ 0x5626ec855b80] frame P:2298 Avg QP:16.77 size: 4392
[libx264 @ 0x5626ec855b80] mb I I16..4: 100.0% 0.0% 0.0%
FFMPEG:[libx264 @ 0x5626ec855b80] mb P I16..4: 3.8% 0.0% 0.0% P16..4: 9.5% 0.0% 0.0% 0.0% 0.0% skip:86.7%
[libx264 @ 0x5626ec855b80] coded y,uvDC,uvAC intra: 26.3% 42.2% 13.6% inter: 2.9% 6.1% 0.1%
[libx264 @ 0x5626ec855b80] i16 v,h,dc,p: 34% 26% 23% 17%
[libx264 @ 0x5626ec855b80] i8c dc,h,v,p: 46% 27% 20% 7%
[libx264 @ 0x5626ec855b80] kb/s:1954.96
[aac @ 0x5626ec84d200] Qavg: 122.161
Conversion failed!
感谢任何帮助。
【问题讨论】:
标签: facebook audio ffmpeg streaming live-streaming