Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
View Source
var ErrHLS = errors.New("lal.hls: fxxk")
Functions ¶
func CalcM3U8Duration ¶
@param content 传入m3u8文件内容
@return durationSec m3u8中所有ts的时间总和。注意,使用的是m3u8文件中描述的ts时间,而不是读取ts文件中实际音视频数据的时间。
func SplitFragment2TSPackets ¶
Types ¶
type Muxer ¶
type Muxer struct { UniqueKey string // contains filtered or unexported fields }
func NewMuxer ¶
func NewMuxer(streamName string, config *MuxerConfig, observer MuxerObserver, eventObserver MuxerEventObserver) *Muxer
@param observer 可以为nil,如果不为nil,TS流将回调给上层 @param eventObserver 可以为nil,主要用于触发新增 frag 和关闭 frag 事件给外部
func (*Muxer) FeedRTMPMessage ¶
@param msg 函数调用结束后,内部不持有msg中的内存块
type MuxerConfig ¶
type MuxerEventObserver ¶ added in v0.19.3
type MuxerEventObserver interface { // @param ts 新建立fragment时的时间戳,毫秒 * 90 // @param id fragment的自增序号 // @param discont 不连续标志,会在m3u8文件的fragment前增加`#EXT-X-DISCONTINUITY` // @pram fileName fragment 文件名 OnOpenFragment(ts uint64, id int, discont bool, fileName string) // @param id fragment的自增序号 // @param duration 当前fragment中数据的时长,单位秒 OnCloseFragment(id int, duration float64) }
type MuxerObserver ¶
type Streamer ¶
type Streamer struct { UniqueKey string // contains filtered or unexported fields }
func NewStreamer ¶
func NewStreamer(observer StreamerObserver) *Streamer
func (*Streamer) AudioCacheEmpty ¶
func (*Streamer) AudioSeqHeaderCached ¶
func (*Streamer) FeedRTMPMessage ¶
@param msg msg.Payload 调用结束后,函数内部不会持有这块内存
TODO chef: 可以考虑数据有问题时,返回给上层,直接主动关闭输入流的连接
func (*Streamer) FlushAudio ¶
func (s *Streamer) FlushAudio()
吐出音频数据的三种情况: 1. 收到音频或视频时,音频缓存队列已达到一定长度 2. 打开一个新的TS文件切片时 3. 输入流关闭时
func (*Streamer) VideoSeqHeaderCached ¶
type StreamerObserver ¶
type StreamerObserver interface { // @param streamer: 供上层获取streamer内部的一些状态,比如spspps是否已缓存,音频缓存队列是否有数据等 // // @param frame: 各字段含义见mpegts.Frame结构体定义 // frame.CC 注意,回调结束后,Streamer会保存frame.CC,上层在TS打包完成后,可通过frame.CC将cc值传递给Streamer // frame.Raw 回调结束后,这块内存可能会被内部重复使用 // OnFrame(streamer *Streamer, frame *mpegts.Frame) }
Source Files ¶
Click to show internal directories.
Click to hide internal directories.