gpt4 book ai didi

ios - 流式传输视频的更好方式

转载 作者:行者123 更新时间:2023-11-28 22:10:01 33 4
gpt4 key购买 nike

目前我正在使用 AVFoundation 从 iPhone 摄像头抓取帧,然后将它们转换为 UIImage 然后通过我发送的 NSOutputStream 传输它它到我的其他设备。

不幸的是,当内存一度达到 300mb 时,我很可能会因为内存过多而崩溃。

我的问题: 是否有更好的方法或其他方法可以避免崩溃或减少发送图像和打开图像之间的延迟另一个设备?或者我能否将其制作成生活流,几乎就像接收设备上的视频一样?

    - (void)captureOutput:(AVCaptureOutput *)captureOutput
didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer
fromConnection:(AVCaptureConnection *)connection
{

@autoreleasepool {


UIImage *image = [self imageFromSampleBuffer:sampleBuffer];

[_room broadcastChatMessage:image fromUser:@"self"];

dispatch_async(dispatch_get_main_queue(), ^(void){
[_imgView setImage:image];
});

}
// < Add your code here that uses the image >
}

最佳答案

从 iOS 设备流式传输视频的最佳选择之一是录制 H264 视频并从磁盘上的电影文件中提取 NAL 单元(它们代表帧的切片)(使用 AVFoundation ) 并使用您选择的协议(protocol)通过网络发送它们。您可以在 https://github.com/jamesghurley/VideoCore/blob/master/transforms/iOS/H264Encode.mm 看到一个实际的例子。 .使用这种技术的延迟非常低。

然而,在另一台 iOS 设备上播放该内容是……复杂的。您可以使用 FFMpeg 实时播放它,或者如果您可以接受一些延迟(3-4 秒),您可以设置 HTTP 代理并通过 HLS 为 NAL 单元提供服务。这也是一个复杂的过程,但可能有一个库可以做到这一点。

编辑:稍微更新一下这个答案。 iOS 8 中现在有一个名为 AVSampleBufferDisplayLayer 的类,它可以直接将 H.264 NAL 单元作为输入。

关于ios - 流式传输视频的更好方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23143189/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com