41 lines
1.2 KiB
Go
41 lines
1.2 KiB
Go
|
package lametranscoder
|
||
|
|
||
|
import (
|
||
|
"github.com/viert/lame"
|
||
|
|
||
|
"git.icedream.tech/icedream/uplink/internal"
|
||
|
"git.icedream.tech/icedream/uplink/internal/transcoders"
|
||
|
"git.icedream.tech/icedream/uplink/internal/transcoders/options"
|
||
|
)
|
||
|
|
||
|
var transcoderOptions = map[string]options.TranscoderOptionType{
|
||
|
"bitrate": &options.Int64TranscoderOption{DefaultValue: 128, Min: 32, Max: 320},
|
||
|
"quality": &options.Int64TranscoderOption{DefaultValue: 1, Min: 0, Max: 9},
|
||
|
}
|
||
|
|
||
|
type Transcoder struct{}
|
||
|
|
||
|
func (transcoder *Transcoder) Options() map[string]options.TranscoderOptionType {
|
||
|
return transcoderOptions
|
||
|
}
|
||
|
|
||
|
func (transcoder *Transcoder) New(options map[string]interface{}) transcoders.TranscoderInstance {
|
||
|
return &TranscoderInstance{
|
||
|
options: options,
|
||
|
}
|
||
|
}
|
||
|
|
||
|
type TranscoderInstance struct {
|
||
|
options map[string]interface{}
|
||
|
*lame.LameWriter
|
||
|
}
|
||
|
|
||
|
func (instance *TranscoderInstance) Init(out *internal.Stream) {
|
||
|
instance.LameWriter = lame.NewWriter(out)
|
||
|
instance.LameWriter.Encoder.SetBitrate(int(instance.options["bitrate"].(int64)))
|
||
|
instance.LameWriter.Encoder.SetQuality(int(instance.options["quality"].(int64)))
|
||
|
instance.LameWriter.Encoder.SetInSamplerate(samplerate)
|
||
|
instance.LameWriter.Encoder.SetNumChannels(channels)
|
||
|
instance.LameWriter.Encoder.InitParams()
|
||
|
}
|