我想用avformat
函数播放一个直播流(h264 -> 分段 mp4)。
现在基本上我有一个这个伪的工作示例:
avformat_write_header
while (!end) {
av_read_frame
av_write_frame
}
avformat_write_tailer
我有这个作为输出标志:movflags +frag_keyframe+empty_moov+default_base_moof
。
我将输出发送到播放良好流畅的 html5 视频。但是我想广播它,所以每当有新玩家出现时,我都想将相同的数据流式传输给它:
avformat_write_header
while (!end) {
av_read_frame
av_write_frame (to multiple clients)
}
avformat_write_tailer
然而,第一个客户端可以播放流,但其他客户端不能。
这是因为 fmp4 的结构:第一个客户端接收正确的ftyp
和moov
原子,而其余客户端则没有。
现在我可以破解我的代码以向后来的客户提供早期的 ftype 和 moov 原子,但我认为这不明智 - 如果我错了,请纠正我。
我的问题:
- 如何在流期间询问 avformat 以(计算)并包含 ftyp 和 moov 原子?
- 在流中包含 ftyp 和 moov 会破坏第一个客户端吗?(在 fmp4 中 ftype 和 moov 在开始时不是一次有效吗?)
谢谢