小编Alo*_*edi的帖子

播放来自CMSampleBuffer的音频

我已经为iOS中的群组创建了视频聊天应用。我一直在寻找一些方法来分别控制不同参与者的音量。我找到办法静音和取消静音使用isPlaybackEnabledRemoteAudioTrack,但并不能够控制音量。

我还认为我们是否可以在中使用它AVAudioPlayer。我发现了addSink。这是我从这里尝试过的

class Audio: NSObject, AudioSink {
    var a = 1
    func renderSample(_ audioSample: CMSampleBuffer!) {
        print("audio found", a)
        a += 1

        var audioBufferList = AudioBufferList()
        var data = Data()
        var blockBuffer : CMBlockBuffer?

        CMSampleBufferGetAudioBufferListWithRetainedBlockBuffer(audioSample, bufferListSizeNeededOut: nil, bufferListOut: &audioBufferList, bufferListSize: MemoryLayout<AudioBufferList>.size, blockBufferAllocator: nil, blockBufferMemoryAllocator: nil, flags: 0, blockBufferOut: &blockBuffer)
        let buffers = UnsafeBufferPointer<AudioBuffer>(start: &audioBufferList.mBuffers, count: Int(audioBufferList.mNumberBuffers))

        for audioBuffer in buffers {
            let frame = audioBuffer.mData?.assumingMemoryBound(to: UInt8.self)
            data.append(frame!, count: …
Run Code Online (Sandbox Code Playgroud)

avaudioplayer twilio ios cmsamplebuffer swift

8
推荐指数
2
解决办法
453
查看次数

将ARFrame的捕获图像转换为UIImage方向问题

我想检测球并让AR模型与它互动.我使用opencv进行球检测并发送我可用于hitTest获取坐标的球的中心sceneView.我一直CVPixelBufferUIImage使用以下功能:

static func convertToUIImage(buffer: CVPixelBuffer) -> UIImage?{
    let ciImage = CIImage(cvPixelBuffer: buffer)
    let temporaryContext = CIContext(options: nil)
    if let temporaryImage = temporaryContext.createCGImage(ciImage, from: CGRect(x: 0, y: 0, width: CVPixelBufferGetWidth(buffer), height: CVPixelBufferGetHeight(buffer)))
    {
        let capturedImage = UIImage(cgImage: temporaryImage)
        return capturedImage
    }
    return nil
}
Run Code Online (Sandbox Code Playgroud)

这给了我旋转的图像:

在此输入图像描述

然后我发现使用以下方法改变方向:

let capturedImage = UIImage(cgImage: temporaryImage, scale: 1.0, orientation: .right)
Run Code Online (Sandbox Code Playgroud)

虽然它在设备处于纵向时给出了正确的方向,但是将设备旋转到横向再次给出了旋转图像.

现在我正在考虑使用它来处理它viewWillTransition.但在此之前,我想知道:

  1. 如果还有其他方法来转换正确方向的图像?
  2. 为什么会这样?

uiimage ios swift cvpixelbuffer arkit

4
推荐指数
1
解决办法
3125
查看次数

如何知道在SceneKit中节点是否在屏幕中可见?

我在pointofview中有一个指向节点的箭头.我希望只有在屏幕中看不到节点时才会出现该箭头.

我找到了一个方法:
projectPoint 8的节点边界框​​的角落,并检查是否:
1)任何点位于屏幕内
2)点的任何边缘位于屏幕内
3)任何平面位于屏幕内

但它似乎非常困难和混乱.

那么有没有更简单的方法呢?

ios scenekit

3
推荐指数
1
解决办法
2056
查看次数