Documentation
¶
Index ¶
- Constants
- Variables
- func CreateMediaEngine(codec string) (*webrtc.MediaEngine, error)
- func CreatePeerConnection(mediaEngine *webrtc.MediaEngine, eventChan chan<- ConnectionEvent, ...) (*webrtc.PeerConnection, error)
- func CreateVP8VP9MediaEngine() (*webrtc.MediaEngine, error)
- func DebugLog(format string, v ...interface{})
- func ExchangeSDPWithWHEP(peerConnection *webrtc.PeerConnection, url string) error
- func ExchangeSDPWithWHIP(peerConnection *webrtc.PeerConnection, url string) error
- func MimeTypeToCodec(mimeType string) string
- func ParseArgs() error
- func ParseWhipArgs() error
- func SetupUsage()
- func SetupWhipUsage()
- type ConnectionEvent
- type ConnectionState
- type DefaultRTPProcessor
- type Frame
- type FrameType
- type FrameValidator
- type MKVReader
- type OpusPacketizer
- type RTPProcessor
- type RawVideoMKVWriter
- func (w *RawVideoMKVWriter) Close() error
- func (w *RawVideoMKVWriter) GetValidationStats() ValidationStats
- func (w *RawVideoMKVWriter) Run() error
- func (w *RawVideoMKVWriter) WriteAudioFrame(data []byte, timestamp uint32) error
- func (w *RawVideoMKVWriter) WriteVideoFrame(data []byte, timestamp uint32, keyframe bool) error
- type StreamManager
- type StreamMuxer
- type StreamWriter
- type VP8Encoder
- type VP8Packetizer
- type ValidationResult
- type ValidationStats
- type ValidationThresholds
Constants ¶
const ( VP8PayloadType = 97 OpusPayloadType = 111 VP8ClockRate = 90000 OpusClockRate = 48000 MaxRTPPayload = 1200 )
Variables ¶
var ( WhepURL string WhipURL string DebugMode bool NoFrameValidation bool )
Functions ¶
func CreateMediaEngine ¶
func CreateMediaEngine(codec string) (*webrtc.MediaEngine, error)
func CreatePeerConnection ¶
func CreatePeerConnection(mediaEngine *webrtc.MediaEngine, eventChan chan<- ConnectionEvent, streamManager *StreamManager) (*webrtc.PeerConnection, error)
func CreateVP8VP9MediaEngine ¶
func CreateVP8VP9MediaEngine() (*webrtc.MediaEngine, error)
func DebugLog ¶
func DebugLog(format string, v ...interface{})
debugLog prints debug messages only when debug mode is enabled
func ExchangeSDPWithWHEP ¶
func ExchangeSDPWithWHEP(peerConnection *webrtc.PeerConnection, url string) error
func ExchangeSDPWithWHIP ¶ added in v0.2.0
func ExchangeSDPWithWHIP(peerConnection *webrtc.PeerConnection, url string) error
func MimeTypeToCodec ¶
func ParseWhipArgs ¶ added in v0.2.0
func ParseWhipArgs() error
func SetupUsage ¶
func SetupUsage()
func SetupWhipUsage ¶ added in v0.2.0
func SetupWhipUsage()
Types ¶
type ConnectionEvent ¶ added in v0.4.0
type ConnectionEvent struct {
State ConnectionState
Error error
}
ConnectionEvent は接続イベントを通知する構造体
type ConnectionState ¶ added in v0.4.0
type ConnectionState int
ConnectionState は接続状態を表す
const ( StateConnecting ConnectionState = iota StateConnected StateDisconnected StateFailed )
type DefaultRTPProcessor ¶
type DefaultRTPProcessor struct {
// contains filtered or unexported fields
}
DefaultRTPProcessor は標準的なRTPパケット処理を実装
func (*DefaultRTPProcessor) ProcessRTPPacket ¶
func (p *DefaultRTPProcessor) ProcessRTPPacket(packet *rtp.Packet, codecType string) ([][]byte, error)
ProcessRTPPacket はRTPパケットを処理してメディアデータを抽出
type FrameValidator ¶ added in v0.4.0
type FrameValidator struct {
// contains filtered or unexported fields
}
FrameValidator はデコード済みRGBAフレームの品質を検証する パケットロスによるノイズ・アーティファクトを検出し、 破損フレームの出力を防止する
func NewFrameValidator ¶ added in v0.4.0
func NewFrameValidator(width, height int) *FrameValidator
NewFrameValidator は新しいFrameValidatorを作成
func NewFrameValidatorWithThresholds ¶ added in v0.4.0
func NewFrameValidatorWithThresholds(width, height int, thresholds ValidationThresholds) *FrameValidator
NewFrameValidatorWithThresholds はカスタム閾値でFrameValidatorを作成
func (*FrameValidator) ResetOnKeyframe ¶ added in v0.4.0
func (v *FrameValidator) ResetOnKeyframe()
ResetOnKeyframe はキーフレーム受信時に状態をリセット
func (*FrameValidator) ShouldWaitForKeyframe ¶ added in v0.4.0
func (v *FrameValidator) ShouldWaitForKeyframe() bool
ShouldWaitForKeyframe は連続無効フレームが多すぎる場合trueを返す
func (*FrameValidator) UpdateResolution ¶ added in v0.4.0
func (v *FrameValidator) UpdateResolution(width, height int)
UpdateResolution は解像度変更時に呼び出す
func (*FrameValidator) ValidateFrame ¶ added in v0.4.0
func (v *FrameValidator) ValidateFrame(rgba []byte, keyframe bool) ValidationResult
ValidateFrame はRGBAフレームを検証し、ノイズ/アーティファクトを検出 keyframe=trueの場合、前フレームとの比較をスキップ(キーフレームは基準点)
type MKVReader ¶ added in v0.2.0
type MKVReader struct {
// contains filtered or unexported fields
}
func NewMKVReader ¶ added in v0.2.0
func (*MKVReader) VideoHeight ¶ added in v0.2.0
func (*MKVReader) VideoWidth ¶ added in v0.2.0
type OpusPacketizer ¶ added in v0.2.0
type OpusPacketizer struct {
// contains filtered or unexported fields
}
func NewOpusPacketizer ¶ added in v0.2.0
func NewOpusPacketizer(ssrc uint32) *OpusPacketizer
type RTPProcessor ¶
type RTPProcessor interface {
// ProcessRTPPacket はRTPパケットを処理する
// 返り値は処理されたデータ(複数のNALユニットやフレームを含む可能性がある)
ProcessRTPPacket(packet *rtp.Packet, codecType string) ([][]byte, error)
}
RTPProcessor はRTPパケットを処理するインターフェース
func NewDefaultRTPProcessor ¶
func NewDefaultRTPProcessor() RTPProcessor
NewDefaultRTPProcessor は新しいRTPプロセッサを作成
type RawVideoMKVWriter ¶
type RawVideoMKVWriter struct {
// contains filtered or unexported fields
}
RawVideoMKVWriter はVP8/VP9をデコードしてrawvideoとしてMKVに出力するライター
func NewRawVideoMKVWriter ¶
func NewRawVideoMKVWriter(w io.Writer, codecType string) *RawVideoMKVWriter
NewRawVideoMKVWriter は新しいRawVideoMKVWriterを作成
func (*RawVideoMKVWriter) GetValidationStats ¶ added in v0.4.0
func (w *RawVideoMKVWriter) GetValidationStats() ValidationStats
GetValidationStats は検証統計を返す
func (*RawVideoMKVWriter) WriteAudioFrame ¶
func (w *RawVideoMKVWriter) WriteAudioFrame(data []byte, timestamp uint32) error
WriteAudioFrame はオーディオフレームを書き込む
func (*RawVideoMKVWriter) WriteVideoFrame ¶
func (w *RawVideoMKVWriter) WriteVideoFrame(data []byte, timestamp uint32, keyframe bool) error
WriteVideoFrame はビデオフレームをデコードして書き込む
type StreamManager ¶
type StreamManager struct {
// contains filtered or unexported fields
}
StreamManager はストリーム処理を管理する統合クラス
func NewStreamManager ¶
func NewStreamManager(writer StreamWriter, processor RTPProcessor, maxTimeout time.Duration, mediaReceivedCh chan<- struct{}) *StreamManager
NewStreamManager は新しいストリームマネージャーを作成 maxTimeout: 最大タイムアウト値(タイムアウトは2秒から開始し、1秒ずつ増加してこの値に達する)
func (*StreamManager) AddAudioTrack ¶
func (sm *StreamManager) AddAudioTrack(track *webrtc.TrackRemote)
AddAudioTrack はオーディオトラックを追加
func (*StreamManager) AddVideoTrack ¶
func (sm *StreamManager) AddVideoTrack(track *webrtc.TrackRemote, codecType string)
AddVideoTrack はビデオトラックを追加
type StreamMuxer ¶
type StreamMuxer interface {
// AddVideoTrack はビデオトラックを追加
AddVideoTrack(track *webrtc.TrackRemote, codecType string) error
// AddAudioTrack はオーディオトラックを追加
AddAudioTrack(track *webrtc.TrackRemote) error
// Run はストリーム処理を開始
Run() error
// Stop は処理を停止
Stop() error
}
StreamMuxer は複数のトラックを処理する統合インターフェース
type StreamWriter ¶
type StreamWriter interface {
// WriteVideoFrame はビデオフレームを書き込む
WriteVideoFrame(data []byte, timestamp uint32, keyframe bool) error
// WriteAudioFrame はオーディオフレームを書き込む
WriteAudioFrame(data []byte, timestamp uint32) error
// Run はメインループを実行する(必要に応じて)
Run() error
// Close はリソースをクリーンアップする
Close() error
}
StreamWriter は処理されたメディアデータを書き込むインターフェース
type VP8Encoder ¶ added in v0.2.0
type VP8Encoder struct {
// contains filtered or unexported fields
}
func NewVP8Encoder ¶ added in v0.2.0
func NewVP8Encoder(width, height int) (*VP8Encoder, error)
func (*VP8Encoder) Close ¶ added in v0.2.0
func (e *VP8Encoder) Close()
type VP8Packetizer ¶ added in v0.2.0
type VP8Packetizer struct {
// contains filtered or unexported fields
}
func NewVP8Packetizer ¶ added in v0.2.0
func NewVP8Packetizer(ssrc uint32) *VP8Packetizer
type ValidationResult ¶ added in v0.4.0
type ValidationResult struct {
IsValid bool
Reason string
ChangedPixelRatio float64
GreenDominantRatio float64
HistogramDiff float64
BlockingScore float64
}
ValidationResult は検証結果を保持
type ValidationStats ¶ added in v0.4.0
type ValidationStats struct {
TotalFrames int
ValidFrames int
InvalidFrames int
RepeatedFrames int // lastValidFrameを再利用した回数
DecodeErrors int
LastInvalidReason string
}
ValidationStats は検証統計を保持
type ValidationThresholds ¶ added in v0.4.0
type ValidationThresholds struct {
// フレーム間差分: この割合以上のピクセルが大きく変化したら異常
MaxChangedPixelRatio float64
// ピクセル変化の閾値(RGBA各チャンネルの差分合計)
PixelChangeThreshold int
// マクロブロッキング: ブロック境界での急激な変化検出閾値
BlockEdgeThreshold int
// 緑色フレーム検出: 緑色優位ピクセルの割合閾値
GreenDominantRatio float64
// ヒストグラム急変: 前フレームとのヒストグラム差分閾値
HistogramDiffThreshold float64
// 連続無効フレーム許容数(これを超えたらキーフレーム待ち)
MaxConsecutiveInvalid int
}
ValidationThresholds は検証閾値を保持
func DefaultThresholds ¶ added in v0.4.0
func DefaultThresholds() ValidationThresholds
DefaultThresholds はデフォルトの検証閾値を返す
Source Files
¶
Directories
¶
| Path | Synopsis |
|---|---|
|
Package libwebrtc provides Go bindings for libwebrtc via CGO
|
Package libwebrtc provides Go bindings for libwebrtc via CGO |
|
Package mkvwriter provides MKV output for decoded video/audio frames
|
Package mkvwriter provides MKV output for decoded video/audio frames |