Ffmpeg 采用AV4格式的分段mp4广播

Ffmpeg 采用AV4格式的分段mp4广播,ffmpeg,mp4,libavformat,fmp4,Ffmpeg,Mp4,Libavformat,Fmp4,我想用avformat功能播放一个实时流(h264->fragmented mp4) 现在基本上我有一个关于这个伪函数的工作示例: avformat_write_header while (!end) { av_read_frame av_write_frame } avformat_write_tailer 我把它作为输出标志:movflags+frag\u关键帧+empty\u moov+default\u base\u moof 我正在将输出发送到一个html5视频,该视频播放精

我想用
avformat
功能播放一个实时流(h264->fragmented mp4)

现在基本上我有一个关于这个伪函数的工作示例:

avformat_write_header
while (!end) {
  av_read_frame
  av_write_frame
}
avformat_write_tailer
我把它作为输出标志:
movflags+frag\u关键帧+empty\u moov+default\u base\u 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在开始时不只是一次有效吗?)

  • 谢谢

    ftyp和moov一起被称为
    初始化片段
    ,客户端应该首先下载并处理它,无论它打算接下来播放哪个片段。这不是黑客攻击,这正是fmp4的工作原理