我正在开发一个应用程序,它使用 ffmpeg 为我提供编码的 h.264 帧:
avcodec_encode_video2(c, &packet, frame, &got_output)
Run Code Online (Sandbox Code Playgroud)
如果我将所有内容保存packet.data到文件out.h264 中,它会使用.h264显示所需的输出ffplay。
现在,我的目标是在收到每个数据包时发送它并在网页上显示它(实时流)。为此,我正在使用Broadway.js
我可以确认我从应用程序发送的数据在浏览器中被正确接收。但是,我无法使用 Broadway ( Player.js, Decoder.js, YUVCanvas.js)在 webGL 画布上显示相同的内容:
if (data != null) player.decode(new Uint8Array(data));
Run Code Online (Sandbox Code Playgroud)
我得到的输出是一张空白的白色画布。data是ArrayBuffer包含来自从 接收的数据包的 h.264 比特流的avcodec_encode_video2。难道我做错了什么?数据是否应该采用特定格式?
旁注:
我的视频文件out.h264使用此处提供的示例正确播放: BroadwayStream
它似乎使用命令行 ffmpeg 接口并处理收到的每个数据包。我的程序使用 ffmpeg 库来获取我需要渲染的相同数据包。有人可以帮忙吗?