Documentation ¶
Overview ¶
Package av defines basic interfaces and data structures of container demux/mux and audio encode/decode.
Index ¶
- Constants
- Variables
- type AudioCodecData
- type AudioDecoder
- type AudioEncoder
- type AudioFrame
- type AudioResampler
- type ChannelLayout
- type CodecData
- type CodecType
- type DemuxCloser
- type Demuxer
- type H264VideoCodecData
- type H265VideoCodecData
- type MPEG4AudioCodecData
- type MuxCloser
- type Muxer
- type Packet
- type PacketReader
- type PacketWriter
- type SampleFormat
- type VideoCodecData
Constants ¶
const ( // U8 data U8 = SampleFormat(iota + 1) // U8 8-bit unsigned integer // S16 data S16 // signed 16-bit integer // S32 data S32 // signed 32-bit integer // FLT data FLT // 32-bit float // DBL data DBL // 64-bit float // U8P data U8P // 8-bit unsigned integer in planar // S16P data S16P // signed 16-bit integer in planar // S32P data S32P // signed 32-bit integer in planar // FLTP data FLTP // 32-bit float in planar // DBLP data DBLP // 64-bit float in planar // U32 data U32 // unsigned 32-bit integer )
const ( ChFrontCenter = ChannelLayout(1 << iota) ChFrontLeft ChFrontRight ChBackCenter ChBackLeft ChBackRight ChSideLeft ChSideRight ChLowFreq ChNr ChMono = ChannelLayout(ChFrontCenter) ChStereo = ChannelLayout(ChFrontLeft | ChFrontRight) Ch21 = ChannelLayout(ChStereo | ChBackCenter) Ch2Point1 = ChannelLayout(ChStereo | ChLowFreq) ChSurround = ChannelLayout(ChStereo | ChFrontCenter) Ch3Point1 = ChannelLayout(ChSurround | ChLowFreq) )
define Audio channel layout
Variables ¶
var ( TEXT = CodecType(0) // define video H264 = MakeVideoCodecType(avCodecTypeMagic + 1) JPEG = MakeVideoCodecType(avCodecTypeMagic + 2) HEVC = MakeVideoCodecType(avCodecTypeMagic + 3) // define audio AAC = MakeAudioCodecType(avCodecTypeMagic + 1) PCMU = MakeAudioCodecType(avCodecTypeMagic + 2) PCMA = MakeAudioCodecType(avCodecTypeMagic + 3) MP3 = MakeAudioCodecType(avCodecTypeMagic + 4) )
Define Codec type
Functions ¶
This section is empty.
Types ¶
type AudioCodecData ¶
type AudioCodecData interface { CodecData SampleFormat() SampleFormat // audio sample format SampleRate() int // audio sample rate ChannelLayout() ChannelLayout // audio channel layout PacketDuration([]byte) (time.Duration, error) // get audio compressed packet duration }
AudioCodecData AudioCodecData
type AudioDecoder ¶
type AudioDecoder interface { Decode([]byte) (bool, AudioFrame, error) // decode one compressed audio packet Close() // close decode, free cgo contexts }
AudioDecoder can decode compressed audio packets into raw audio frame. use ffmpeg.NewAudioDecoderParam to create it.
type AudioEncoder ¶
type AudioEncoder interface { CodecData() (AudioCodecData, error) // encoder's codec data can put into container Encode(AudioFrame) ([][]byte, error) // encode raw audio frame into compressed pakcet(s) Close() // close encoder, free cgo contexts SetSampleRate(int) error // set encoder sample rate SetChannelLayout(ChannelLayout) error // set encoder channel layout SetSampleFormat(SampleFormat) error // set encoder sample format SetBitrate(int) error // set encoder bitrate SetOption(string, interface{}) error // encoder setopt, in ffmpeg is av_opt_set_dict() GetOption(string, interface{}) error // encoder getopt }
AudioEncoder can encode raw audio frame into compressed audio packets. cgo/ffmpeg inplements AudioEncoder, using ffmpeg.NewAudioEncoder to create it.
type AudioFrame ¶
type AudioFrame struct { SampleFormat SampleFormat // audio sample format, e.g: S16,FLTP,... ChannelLayout ChannelLayout // audio channel layout, e.g: ChMono,ChStereo,... SampleCount int // sample count in this frame SampleRate int // sample rate Data [][]byte // data array for planar format len(Data) > 1 }
AudioFrame Raw audio frame.
func (AudioFrame) Concat ¶
func (frame AudioFrame) Concat(in AudioFrame) AudioFrame
Concat two audio frames.
func (AudioFrame) HasSameFormat ¶
func (frame AudioFrame) HasSameFormat(other AudioFrame) bool
HasSameFormat Check this audio frame has same format as other audio frame.
func (AudioFrame) Slice ¶
func (frame AudioFrame) Slice(start int, end int) (out AudioFrame)
Slice Split sample audio sample from this frame.
type AudioResampler ¶
type AudioResampler interface {
Resample(AudioFrame) (AudioFrame, error) // convert raw audio frames
}
AudioResampler can convert raw audio frames in different sample rate/format/channel layout.
type ChannelLayout ¶
type ChannelLayout uint16
ChannelLayout Audio channel layout.
func (ChannelLayout) String ¶
func (layout ChannelLayout) String() string
String channel layout string
type CodecData ¶
type CodecData interface {
Type() CodecType // Video/Audio codec type
}
CodecData is some important bytes for initializing audio/video decoder, can be converted to VideoCodecData or AudioCodecData using:
codecdata.(AudioCodecData) or codecdata.(VideoCodecData)
for H264, CodecData is AVCDecoderConfigure bytes, includes SPS/PPS.
type CodecType ¶
type CodecType uint32
CodecType Video/Audio codec type. can be H264/AAC/SPEEX/...
func MakeAudioCodecType ¶
MakeAudioCodecType Make a new audio codec type.
func MakeVideoCodecType ¶
MakeVideoCodecType Make a new video codec type.
type DemuxCloser ¶
DemuxCloser Demuxer with Close() method
type Demuxer ¶
type Demuxer interface { PacketReader // read compressed audio/video packets Streams() ([]CodecData, error) // reads the file header, contains video/audio meta infomations }
Demuxer can read compressed audio/video packets from container formats like MP4/FLV/MPEG-TS.
type H264VideoCodecData ¶
type H264VideoCodecData interface { VideoCodecData SPS() []byte PPS() []byte }
H264VideoCodecData for h264 info
type H265VideoCodecData ¶
type H265VideoCodecData interface { VideoCodecData VPS() []byte SPS() []byte PPS() []byte }
H265VideoCodecData for h264 info
type MPEG4AudioCodecData ¶
type MPEG4AudioCodecData interface { AudioCodecData MPEG4AudioConfigBytes() []byte }
MPEG4AudioCodecData audio codec data for aac
type Muxer ¶
type Muxer interface { WriteHeader([]CodecData) error // write the file header PacketWriter // write compressed audio/video packets WriteTrailer() error // finish writing file, this func can be called only once }
Muxer describes the steps of writing compressed audio/video packets into container formats like MP4/FLV/MPEG-TS.
Container formats, rtmp.Conn, and transcode.Muxer implements Muxer interface.
type Packet ¶
type Packet struct { IsKeyFrame bool // video packet is key frame Idx int8 // stream index in container format CompositionTime time.Duration // packet presentation time minus decode time for H264 B-Frame Time time.Duration // packet decode time Data []byte // packet data }
Packet stores compressed audio/video data.
type PacketReader ¶
PacketReader PacketReader
type PacketWriter ¶
PacketWriter PacketWriter
type SampleFormat ¶
type SampleFormat uint8
SampleFormat Audio sample format.
func (SampleFormat) BytesPerSample ¶
func (format SampleFormat) BytesPerSample() int
BytesPerSample BytesPerSample
func (SampleFormat) IsPlanar ¶
func (format SampleFormat) IsPlanar() bool
IsPlanar Check if this sample format is in planar.
func (SampleFormat) String ¶
func (format SampleFormat) String() string
type VideoCodecData ¶
VideoCodecData VideoCodecData
Directories ¶
Path | Synopsis |
---|---|
Package pktque provides packet Filter interface and structures used by other components.
|
Package pktque provides packet Filter interface and structures used by other components. |
Package pubsub implements publisher-subscribers model used in multi-channel streaming.
|
Package pubsub implements publisher-subscribers model used in multi-channel streaming. |
Package transcode implements Transcoder based on Muxer/Demuxer and AudioEncoder/AudioDecoder interface.
|
Package transcode implements Transcoder based on Muxer/Demuxer and AudioEncoder/AudioDecoder interface. |