hls

package
v0.13.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 18, 2020 License: MIT Imports: 14 Imported by: 1

Documentation

Index

Constants

View Source
const (
	PidPAT uint16 = 0

	// ------------------------------------------
	// <iso13818-1.pdf> <Table 2-5> <page 38/174>
	// ------------------------------------------
	AdaptationFieldControlReserved uint8 = 0 // Reserved for future use by ISO/IEC
	AdaptationFieldControlNo       uint8 = 1 // No adaptation_field, payload only
	AdaptationFieldControlOnly     uint8 = 2 // Adaptation_field only, no payload
	AdaptationFieldControlFollowed uint8 = 3 // Adaptation_field followed by payload
)

TS Packet Header

View Source
const (

	// ------------------------------
	// <iso13818-1.pdf> <page 53/174>
	// ------------------------------
	PTSDTSFlags0 uint8 = 0 // no PTS no DTS
	PTSDTSFlags1 uint8 = 1 // forbidden
	PTSDTSFlags2 uint8 = 2 // only PTS
	PTSDTSFlags3 uint8 = 3 // both PTS and DTS
)

PES

View Source
const (
	PidVideo uint16 = 0x100
	PidAudio uint16 = 0x101
)

Variables

View Source
var FixedFragmentHeader = []byte{}/* 376 elements not displayed */

每个TS文件都以固定的PAT,PMT开始

Functions

func SplitFragment2TSPackets

func SplitFragment2TSPackets(content []byte) (ret [][]byte)

Types

type FragmentOP

type FragmentOP struct {
	// contains filtered or unexported fields
}

func (*FragmentOP) CloseFile

func (f *FragmentOP) CloseFile()

func (*FragmentOP) OpenFile

func (f *FragmentOP) OpenFile(filename string) (err error)

func (*FragmentOP) WriteFrame

func (f *FragmentOP) WriteFrame(frame *mpegTSFrame, b []byte)

type Muxer

type Muxer struct {
	UniqueKey string
	// contains filtered or unexported fields
}

func NewMuxer

func NewMuxer(streamName string, config *MuxerConfig) *Muxer

func (*Muxer) Dispose added in v0.11.0

func (m *Muxer) Dispose()

func (*Muxer) FeedRTMPMessage

func (m *Muxer) FeedRTMPMessage(msg rtmp.AVMsg)

函数调用结束后,内部不持有msg中的内存块

func (*Muxer) Start

func (m *Muxer) Start()

type MuxerConfig

type MuxerConfig struct {
	OutPath            string `json:"out_path"`
	FragmentDurationMS int    `json:"fragment_duration_ms"`
	FragmentNum        int    `json:"fragment_num"`
}

type PAT

type PAT struct {
	// contains filtered or unexported fields
}

--------------------------------------------------------------------------------------------------- Program association section <iso13818-1.pdf> <2.4.4.3> <page 61/174> table_id [8b] * section_syntax_indicator [1b] '0' [1b] reserved [2b] section_length [12b] ** transport_stream_id [16b] ** reserved [2b] version_number [5b] current_next_indicator [1b] * section_number [8b] * last_section_number [8b] * -----loop----- program_number [16b] ** reserved [3b] program_map_PID [13b] ** if program_number == 0 then network_PID else then program_map_PID -------------- CRC_32 [32b] **** ---------------------------------------------------------------------------------------------------

func ParsePAT

func ParsePAT(b []byte) (pat PAT)

func (*PAT) SearchPID

func (pat *PAT) SearchPID(pid uint16) bool

type PATProgramElement

type PATProgramElement struct {
	// contains filtered or unexported fields
}

type PES

type PES struct {
	// contains filtered or unexported fields
}

----------------------------------------------------------- <iso13818-1.pdf> <2.4.3.6 PES packet> <page 49/174> <Table E.1 - PES packet header example> <page 142/174> <F.0.2 PES packet> <page 144/174> packet_start_code_prefix [24b] *** always 0x00, 0x00, 0x01 stream_id [8b] * PES_packet_length [16b] ** '10' [2b] PES_scrambling_control [2b] PES_priority [1b] data_alignment_indicator [1b] copyright [1b] original_or_copy [1b] * PTS_DTS_flags [2b] ESCR_flag [1b] ES_rate_flag [1b] DSM_trick_mode_flag [1b] additional_copy_info_flag [1b] PES_CRC_flag [1b] PES_extension_flag [1b] * PES_header_data_length [8b] * -----------------------------------------------------------

func ParsePES

func ParsePES(b []byte) (pes PES, length int)

type PMT

type PMT struct {
	ProgramElements []PMTProgramElement
	// contains filtered or unexported fields
}

---------------------------------------- Program Map Table <iso13818-1.pdf> <2.4.4.8> <page 64/174> table_id [8b] * section_syntax_indicator [1b] 0 [1b] reserved [2b] section_length [12b] ** program_number [16b] ** reserved [2b] version_number [5b] current_next_indicator [1b] * section_number [8b] * last_section_number [8b] * reserved [3b] PCR_PID [13b] ** reserved [4b] program_info_length [12b] ** -----loop----- stream_type [8b] * reserved [3b] elementary_PID [13b] ** reserved [4b] ES_info_length_length [12b] ** -------------- CRC32 [32b] **** ----------------------------------------

func ParsePMT

func ParsePMT(b []byte) (pmt PMT)

func (*PMT) SearchPID

func (pmt *PMT) SearchPID(pid uint16) *PMTProgramElement

type PMTProgramElement

type PMTProgramElement struct {
	StreamType uint8
	Pid        uint16
	Length     uint16
}

type Server

type Server struct {
	// contains filtered or unexported fields
}

func NewServer

func NewServer(addr string, outPath string) *Server

func (*Server) Dispose added in v0.10.0

func (s *Server) Dispose()

func (*Server) Listen added in v0.10.0

func (s *Server) Listen() (err error)

func (*Server) RunLoop

func (s *Server) RunLoop() error

func (*Server) ServeHTTP

func (s *Server) ServeHTTP(resp http.ResponseWriter, req *http.Request)

type TSPacketAdaptation

type TSPacketAdaptation struct {
	Length uint8
}

---------------------------------------------------------- <iso13818-1.pdf> <Table 2-6> <page 40/174> adaptation_field_length [8b] * 不包括自己这1字节 discontinuity_indicator [1b] random_access_indicator [1b] elementary_stream_priority_indicator [1b] PCR_flag [1b] OPCR_flag [1b] splicing_point_flag [1b] transport_private_data_flag [1b] adaptation_field_extension_flag [1b] * -----if PCR_flag == 1----- program_clock_reference_base [33b] reserved [6b] program_clock_reference_extension [9b] ****** ----------------------------------------------------------

func ParseTSPacketAdaptation

func ParseTSPacketAdaptation(b []byte) (f TSPacketAdaptation)

TODO chef

type TSPacketHeader

type TSPacketHeader struct {
	Sync             uint8
	Err              uint8
	PayloadUnitStart uint8
	Prio             uint8
	Pid              uint16
	Scra             uint8
	Adaptation       uint8
	CC               uint8
}

------------------------------------------------ <iso13818-1.pdf> <2.4.3.2> <page 36/174> sync_byte [8b] * always 0x47 transport_error_indicator [1b] payload_unit_start_indicator [1b] transport_priority [1b] PID [13b] ** transport_scrambling_control [2b] adaptation_field_control [2b] continuity_counter [4b] * ------------------------------------------------

func ParseTSPacketHeader

func ParseTSPacketHeader(b []byte) (h TSPacketHeader)

解析4字节TS Packet header

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL