gpt4 book ai didi

javascript - 有没有办法使用 h.264 编解码器恢复实时 h264 播放(客户端重新加入)?

转载 作者:行者123 更新时间:2023-12-04 22:57:50 26 4
gpt4 key购买 nike

目前,我在使用 MediaSource API 恢复实时 h264 播放时遇到了一些问题。
我的服务器端代码将保留来自 FFmpeg 的第一个数据包,然后将其分派(dispatch)给客户端。但是,这很好用,但会引发一个问题。
当我重新启动流并将其分派(dispatch)给客户端时,它会按预期进行,这是我期望客户端断开连接然后必须重新连接到流时的结果,是前面提到的 result
但是,如果我要重新加入流,我会得到 result
此外,上图中的 FFMpeg 数据正在发送到客户端,只是由于某种原因没有渲染它。
这是我播放从服务器获得的音频/视频帧的功能。

private _playFrame(type: 0 | 1) {
const src = type === 0 ? this.audioSource : this.videoSource;
if (!src || src.updating) return;
const queue = type === 0 ? this.audioFrameQueue : this.videoFrameQueue;
src.appendBuffer(queue.shift());
if (this.video.src && this.video.paused) this.video.play().then(() => null);
}

最佳答案

分段的 .mp4 数据流(用于实时播放的类型)在压缩媒体本身之前有一个描述其媒体的序言。
包含媒体元数据的序言是一个数据 block ——在 mp4 的行话中是一个“原子”——命名为 'moov'。 .它的一个亚原子,'avcC' ,包含用于 H.264 视频流的所谓编解码器专用数据。如果您要求解码器处理 H.264 而不向其提供编解码器专用数据,则它无法解释 H.264 并因此跳过它。任何解码器都是如此,包括嵌入在浏览器或桌面媒体播放器包中的解码器。'moov'序言可能在 ffmpeg 的第一个数据包中(尽管您需要使用 tool like mp4dump 来检查该数据以确保)。
因此,要加入直播流,观众必须先接收序幕数据,然后再接收直播数据。

关于javascript - 有没有办法使用 h.264 编解码器恢复实时 h264 播放(客户端重新加入)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66310050/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com