【发布时间】:2016-10-01 03:54:17
【问题描述】:
我正在开发一个使用 ffmpeg 为我提供编码 h.264 帧的应用程序:
avcodec_encode_video2(c, &packet, frame, &got_output)
如果我将所有packet.data 保存到文件out.h264,它会使用ffplay 显示所需的输出。
现在,我的目标是在收到每个数据包时发送它并在网页上显示(实时流)。为此,我使用Broadway.js
我可以确认我从应用程序发送的数据在浏览器中被正确接收。但是,我无法在使用 Broadway 的 webGL 画布上显示相同的内容(Player.js、Decoder.js、YUVCanvas.js):
if (data != null) player.decode(new Uint8Array(data));
我得到的输出是一个空白的白色画布。 data 是一个 ArrayBuffer,它包含来自 avcodec_encode_video2 的数据包中的 h.264 比特流。难道我做错了什么?数据是否应该采用特定格式?
旁注:
我的视频文件out.h264 使用此处提供的示例正常播放:BroadwayStream
它似乎使用命令行 ffmpeg 界面并处理收到的每个数据包。我的程序使用 ffmpeg 库来获取相同的数据包,我需要渲染这些数据包。有人可以帮忙吗?
【问题讨论】:
-
您找到解决方案了吗?我自己目前也面临着类似的问题。就我而言,broadway.js 显示了一些内容,但几乎无法识别为流的内容。
-
虽然这是个老问题,但想为那些正在为 h264 播放问题苦苦挣扎的人添加这个答案。自过去几周以来,我一直在为同样的问题苦苦挣扎,最后制作了一个 mp4 多路复用器。这是回购:github.com/samirkumardas/jmuxer
标签: javascript video browser ffmpeg h.264