Ios 使用GPUImage快速发送压缩视频帧
我正在编写一个Swift应用程序,通过网络发送一个iPhone摄像头视频输入(帧),这样我以后可以在macOS应用程序上显示它们 目前,我正在从一个Ios 使用GPUImage快速发送压缩视频帧,ios,swift,cocoa,video-streaming,gpuimage,Ios,Swift,Cocoa,Video Streaming,Gpuimage,我正在编写一个Swift应用程序,通过网络发送一个iPhone摄像头视频输入(帧),这样我以后可以在macOS应用程序上显示它们 目前,我正在从一个AVCaputreSession获取视频帧,并从captureOutput方法获取一个PixelBuffer。 由于每一帧都是巨大的(原始像素),我正在将CVPixelBuffer转换为CGImage,使用VTCreateCGImageFromCVPixelBuffer,然后再转换为使用JPEG压缩的UIImage(50%)。然后我通过网络发送JPE
AVCaputreSession
获取视频帧,并从captureOutput
方法获取一个PixelBuffer
。
由于每一帧都是巨大的(原始像素),我正在将CVPixelBuffer
转换为CGImage
,使用VTCreateCGImageFromCVPixelBuffer
,然后再转换为使用JPEG压缩的UIImage
(50%)。然后我通过网络发送JPEG,并将其显示在Mac OS应用程序上
正如你所见,这远远不够理想,在iPhone11上的运行速度约为25 FPS。经过一番研究,我想出了一个好主意。似乎我可以从相机中获取数据并应用类似的东西(以便在GPU中完成转换):
我应该能够传输UIImage并将其显示在macOS应用程序上。有没有更好的方法来实施整个过程?也许我可以使用iPhone的H264硬件编码,而不是将图像转换为JPEG格式,但这似乎不是那么简单(从我所读到的内容来看,GPUImage似乎做了类似的事情)
感谢您的帮助,提前谢谢 我知道您希望在非internet环境中执行此操作 你的项目限制是什么
对不起,我的英语不好。嗨!谢谢你的回复。关于你的问题:1。至少30 fps 2。至少10803。如果我能用音频传输视频,那就太棒了。或者至少从视频4中单独发送。这是当地的环境,所以不用担心。假设一个非常高的带宽为5。我们可以使用这两个版本的最新版本是的,在H264或H265中压缩内容是理想的,但是通过网络“动态”发送内容而不将其存储到磁盘(可能这是唯一的方法)似乎是一件不平凡的事情。
camera = try Camera(sessionPreset:AVCaptureSessionPreset640x480)
let pictureOutput = PictureOutput()
pictureOutput.encodedImageFormat = .JPEG
pictureOutput.imageAvailableCallback = {image in
// Send the picture through the network here
}
camera --> pictureOutput