install go2rtc on bob
This commit is contained in:
@@ -0,0 +1,149 @@
|
||||
package camera
|
||||
|
||||
import (
|
||||
"github.com/AlexxIT/go2rtc/pkg/hap"
|
||||
"github.com/AlexxIT/go2rtc/pkg/hap/tlv8"
|
||||
)
|
||||
|
||||
func NewAccessory(manuf, model, name, serial, firmware string) *hap.Accessory {
|
||||
acc := &hap.Accessory{
|
||||
AID: hap.DeviceAID,
|
||||
Services: []*hap.Service{
|
||||
hap.ServiceAccessoryInformation(manuf, model, name, serial, firmware),
|
||||
ServiceCameraRTPStreamManagement(),
|
||||
//hap.ServiceHAPProtocolInformation(),
|
||||
ServiceMicrophone(),
|
||||
},
|
||||
}
|
||||
acc.InitIID()
|
||||
return acc
|
||||
}
|
||||
|
||||
func ServiceMicrophone() *hap.Service {
|
||||
return &hap.Service{
|
||||
Type: "112", // 'Microphone'
|
||||
Characters: []*hap.Character{
|
||||
{
|
||||
Type: "11A",
|
||||
Format: hap.FormatBool,
|
||||
Value: 0,
|
||||
Perms: hap.EVPRPW,
|
||||
//Descr: "Mute",
|
||||
},
|
||||
//{
|
||||
// Type: "119",
|
||||
// Format: hap.FormatUInt8,
|
||||
// Value: 100,
|
||||
// Perms: hap.EVPRPW,
|
||||
// //Descr: "Volume",
|
||||
// //Unit: hap.UnitPercentage,
|
||||
// //MinValue: 0,
|
||||
// //MaxValue: 100,
|
||||
// //MinStep: 1,
|
||||
//},
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
func ServiceCameraRTPStreamManagement() *hap.Service {
|
||||
val120, _ := tlv8.MarshalBase64(StreamingStatus{
|
||||
Status: StreamingStatusAvailable,
|
||||
})
|
||||
val114, _ := tlv8.MarshalBase64(SupportedVideoStreamConfiguration{
|
||||
Codecs: []VideoCodecConfiguration{
|
||||
{
|
||||
CodecType: VideoCodecTypeH264,
|
||||
CodecParams: []VideoCodecParameters{
|
||||
{
|
||||
ProfileID: []byte{VideoCodecProfileMain},
|
||||
Level: []byte{VideoCodecLevel31, VideoCodecLevel40},
|
||||
},
|
||||
},
|
||||
VideoAttrs: []VideoCodecAttributes{
|
||||
{Width: 1920, Height: 1080, Framerate: 30},
|
||||
{Width: 1280, Height: 720, Framerate: 30}, // important for iPhones
|
||||
{Width: 320, Height: 240, Framerate: 15}, // apple watch
|
||||
},
|
||||
},
|
||||
},
|
||||
})
|
||||
val115, _ := tlv8.MarshalBase64(SupportedAudioStreamConfiguration{
|
||||
Codecs: []AudioCodecConfiguration{
|
||||
{
|
||||
CodecType: AudioCodecTypeOpus,
|
||||
CodecParams: []AudioCodecParameters{
|
||||
{
|
||||
Channels: 1,
|
||||
BitrateMode: AudioCodecBitrateVariable,
|
||||
SampleRate: []byte{AudioCodecSampleRate16Khz},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
ComfortNoiseSupport: 0,
|
||||
})
|
||||
val116, _ := tlv8.MarshalBase64(SupportedRTPConfiguration{
|
||||
SRTPCryptoType: []byte{CryptoAES_CM_128_HMAC_SHA1_80},
|
||||
})
|
||||
|
||||
service := &hap.Service{
|
||||
Type: "110", // 'CameraRTPStreamManagement'
|
||||
Characters: []*hap.Character{
|
||||
{
|
||||
Type: TypeStreamingStatus,
|
||||
Format: hap.FormatTLV8,
|
||||
Value: val120,
|
||||
Perms: hap.EVPR,
|
||||
//Descr: "Streaming Status",
|
||||
},
|
||||
{
|
||||
Type: TypeSupportedVideoStreamConfiguration,
|
||||
Format: hap.FormatTLV8,
|
||||
Value: val114,
|
||||
Perms: hap.PR,
|
||||
//Descr: "Supported Video Stream Configuration",
|
||||
},
|
||||
{
|
||||
Type: TypeSupportedAudioStreamConfiguration,
|
||||
Format: hap.FormatTLV8,
|
||||
Value: val115,
|
||||
Perms: hap.PR,
|
||||
//Descr: "Supported Audio Stream Configuration",
|
||||
},
|
||||
{
|
||||
Type: TypeSupportedRTPConfiguration,
|
||||
Format: hap.FormatTLV8,
|
||||
Value: val116,
|
||||
Perms: hap.PR,
|
||||
//Descr: "Supported RTP Configuration",
|
||||
},
|
||||
{
|
||||
Type: "B0",
|
||||
Format: hap.FormatUInt8,
|
||||
Value: 1,
|
||||
Perms: hap.EVPRPW,
|
||||
//Descr: "Active",
|
||||
//MinValue: 0,
|
||||
//MaxValue: 1,
|
||||
//MinStep: 1,
|
||||
//ValidVal: []any{0, 1},
|
||||
},
|
||||
{
|
||||
Type: TypeSelectedStreamConfiguration,
|
||||
Format: hap.FormatTLV8,
|
||||
Value: "", // important empty
|
||||
Perms: hap.PRPW,
|
||||
//Descr: "Selected RTP Stream Configuration",
|
||||
},
|
||||
{
|
||||
Type: TypeSetupEndpoints,
|
||||
Format: hap.FormatTLV8,
|
||||
Value: "", // important empty
|
||||
Perms: hap.PRPW,
|
||||
//Descr: "Setup Endpoints",
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
return service
|
||||
}
|
||||
Reference in New Issue
Block a user