【问题标题】:Ffmpeg : Bitstream not supported by this decoderFfmpeg:此解码器不支持比特流
【发布时间】:2022-03-11 13:16:55
【问题描述】:

我正在尝试使用 NodeJS 创建一个直播网络应用程序。我目前拥有的代码使用套接字 IO 从客户端上的网络摄像头发出原始(webm 格式)二进制流,节点服务器接收此原始数据。使用 fluent-ffmpeg,我想将此二进制流编码为 mpegts 并将其实时发送到 RTMP 服务器,而不创建任何中间文件。但是,当尝试在 ffmpeg 中转换 blob 时,出现以下错误:

Error while decoding stream #0:1: Invalid data found when processing input
[NULL @ 000001b15e67bd80] Invalid sync code 61f192.
[libvpx @ 000001b15e6c5000] Failed to decode frame: Bitstream not supported by this decoder

我的相关前端客户端代码:

navigator.mediaDevices.getUserMedia(constraints).then(function(stream) {
    video_show(stream);//only show locally, not remotely

    socket.emit('config_rtmpDestination',url);
    socket.emit('start','start');
    var options = {mimeType: 'video/webm;codecs=h264'};

    mediaRecorder = new MediaRecorder(stream, options);
    mediaRecorder.start(2000);

    mediaRecorder.onstop = function(e) {
        stream.stop();
    }

    mediaRecorder.ondataavailable = function(e) {
        //var arraybuffer = Uint8Array.from(e.data).buffer;
        socket.emit("binarystream", blob);
        //chunks.push(e.data);
    }
}).catch(function(err) {
    console.log('The following error occured: ' + err);
    show_output('Local getUserMedia ERROR:'+err);
});

相关NodeJS服务器代码:

socket.on('binarystream',function(m){
    feedStream(m);
});

socket.on('start',function(m){
    ...
    var ops=[
        '-vcodec', socket._vcodec,'-i','-',
        '-c:v', 'libx264', '-preset', 'veryfast', '-tune', 'zerolatency',
        '-an', '-bufsize', '1000',
        '-f', 'mpegts', socket._rtmpDestination
    ];
    ffmpeg_process=spawn('ffmpeg', ops);
    feedStream=function(data){
        ffmpeg_process.stdin.write(data);
    }
    ...
}

【问题讨论】:

  • 原始二进制流的格式是什么?
  • @szatmary 格式为 webm。我在 mediaRecorder 中使用这些选项: var options = {mimeType: 'video/webm;codecs=h264'};
  • 查看“[libvpx @ 000001b15e6c5000] 无法解码帧”libvpx 不应被调用。我猜 ffmpeg 假设您的接收流是 VP8 或 VP9。

标签: node.js ffmpeg video-streaming webrtc mediarecorder


【解决方案1】:

对于遇到此问题的任何人.. 尝试将 libvpx 替换为 libvpx-vp9 或更高级的 libvpx 版本

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-24
    • 2013-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-07
    相关资源
    最近更新 更多