我正在做屏幕上的广播应用。我想在WebRTC服务器上发送我的屏幕录像。
override func processSampleBuffer(_ sampleBuffer: CMSampleBuffer, with sampleBufferType: RPSampleBufferType) {
//if source!.isSocketConnected {
switch sampleBufferType {
case RPSampleBufferType.video:
// Handle video sample buffer
source?.processVideoSampleBuffer(sampleBuffer)
break
case RPSampleBufferType.audioApp:
// Handle audio sample buffer for app audio
source?.processInAppAudioSampleBuffer(sampleBuffer)
break
case RPSampleBufferType.audioMic:
// Handle audio sample buffer for mic audio
source?.processAudioSampleBuffer(sampleBuffer)
break
@unknown default:
break
}
}
// VideoBuffer Sending Method
func startCaptureLocalVideo(sampleBuffer: CMSampleBuffer) {
let _pixelBuffer = CMSampleBufferGetImageBuffer(sampleBuffer)
if let pixelBuffer = _pixelBuffer {
let rtcPixelBuffer = RTCCVPixelBuffer(pixelBuffer: pixelBuffer)
let timeStampNs = CMTimeGetSeconds(CMSampleBufferGetPresentationTimeStamp(sampleBuffer)) * 1000000000
let rtcVideoFrame = RTCVideoFrame(buffer: rtcPixelBuffer, rotation: RTCVideoRotation._90, timeStampNs: Int64(timeStampNs))
localVideoSource!.capturer(videoCapturer!, didCapture: rtcVideoFrame)
}
}我成功地在WebRTC上发送视频样本缓冲区,但我被卡在音频部分。
我没有找到任何方法来发送音频缓冲区到WebRTC。
非常感谢你的回答。
发布于 2021-03-22 10:56:47
我找到了解决这个问题的方法,只需转到这个链接,并遵循以下指导原则:https://github.com/pixiv/webrtc/blob/branch-heads/pixiv-m78/README.pixiv.md
WebRTC团队不再支持原生框架,所以我们需要修改WebRTC源代码并重新构建它,以便在另一个应用程序中使用。
幸运的是,我找到了从WebRTC项目派生源代码的人,他更新了将CMSampleBuffer从广播扩展传递到RTCPeerConnection的函数。
https://stackoverflow.com/questions/58030446
复制相似问题