Files
HaishinKit.swift/RTMPHaishinKit/Sources/Codec/OpusHeaderPacket.swift
2025-07-13 12:43:53 +09:00

31 lines
796 B
Swift

import CoreMedia
import Foundation
struct OpusHeaderPacket {
static let signature = "OpusHead"
let channels: Int
let sampleRate: Double
var payload: Data {
var data = Data()
data.append(contentsOf: Self.signature.utf8)
data.append(0x01)
data.append(UInt8(channels))
data.append(UInt16(0).data)
data.append(UInt32(sampleRate).data)
data.append(UInt16(0).data)
data.append(0x00)
return data
}
init?(formatDescription: CMFormatDescription?) {
guard
let streamDescription = formatDescription?.audioStreamBasicDescription else {
return nil
}
channels = Int(streamDescription.mChannelsPerFrame)
sampleRate = streamDescription.mSampleRate
}
}