yapingcat / gomedia

golang library for rtmp, mpeg-ts,mpeg-ps,flv,mp4,ogg,rtsp
MIT License
382 stars 65 forks source link

有没有生成支持dash的fmp4例子? #107

Open vipcxj opened 9 months ago

vipcxj commented 9 months ago

如题,我现在的需求是将webrtc收到的流转为dash支持的fmp4存起来,一开始打算用live格式,分成一片片,后来进过研究发现一个巨大的问题~ webrtc流可能很长,分片又很小,又因为关键帧间隔不确定,导致每个分片的时长不固定,也就是说最后的mpd会很大,因为每个segment都得完整定义。后来发现疑似用on-demand格式可以解决这个问题,有没有生成一个flat fmp4并得到dash所需的2个range的例子?

yapingcat commented 9 months ago

是转成fmp4 用于后续点播?

yapingcat commented 9 months ago

on-demand 一般要用 SegmentBase 模式,需要拿到moov box 和 sidx box的 bytes range ,目前这个特性还不支持 需要改下代码

vipcxj commented 9 months ago

是转成fmp4 用于后续点播?

是的,目前主要是点播,未来希望做成可回放的直播(好像难度比较高,所以未来再说)现在的一个问题是webrtc生成的流,关键帧间隔不确定,我现在是每三秒要求客户端生成一个关键帧,但最终拿到的流应该不至于那么精确到3s,关键帧间隔如果不确定,那分片的间隔也没法一致吧,这样好像就没法用live格式了,除非把每个分片都给显式地记录下来。

yapingcat commented 9 months ago

是转成fmp4 用于后续点播?

是的,目前主要是点播,未来希望做成可回放的直播(好像难度比较高,所以未来再说)现在的一个问题是webrtc生成的流,关键帧间隔不确定,我现在是每三秒要求客户端生成一个关键帧,但最终拿到的流应该不至于那么精确到3s,关键帧间隔如果不确定,那分片的间隔也没法一致吧,这样好像就没法用live格式了,除非把每个分片都给显式地记录下来。

让客户端修改一下编码参数,指定gopsize 试试