这个问题会很笼统,因为我是 iOS、视频流和蓝牙的新手(这将是一个有趣的项目)。
基本上,我希望能够通过 WiFi 或蓝牙将低分辨率视频从一个 iOS 设备流式传输到另一个 iOS 设备,具体取决于哪个可用。Bonjour 用于初始服务发现。(我知道通过蓝牙流式传输视频并不理想,但这是项目的要求之一)
所以问题是可以使用什么视频流框架/库来最大化通过 WiFi 流视频和通过蓝牙流视频之间共享的代码量。
这个问题会很笼统,因为我是 iOS、视频流和蓝牙的新手(这将是一个有趣的项目)。
基本上,我希望能够通过 WiFi 或蓝牙将低分辨率视频从一个 iOS 设备流式传输到另一个 iOS 设备,具体取决于哪个可用。Bonjour 用于初始服务发现。(我知道通过蓝牙流式传输视频并不理想,但这是项目的要求之一)
所以问题是可以使用什么视频流框架/库来最大化通过 WiFi 流视频和通过蓝牙流视频之间共享的代码量。
以下是通过 Multipeer Connectivity 测试视频流的说明:
您需要 Cocoapods,如果您还没有安装,请访问http://cocoapods.org/#install
AVCaptureMultipeerVideoDataOutput/Sample
终端中的目录并执行pod install
注意:Multipeer Connectivity 需要 iOS 7 并且两台设备都应该激活 WiFi 或蓝牙,我已经在 WiFi 上成功测试过,蓝牙可能太慢了。
我会建议使用该MultipeerConnectivity
框架。以下是提供的几个委托方法MCSessionDelegate
MCSessionDelegate <NSObject>
// Received a byte stream from remote peer
- (void)session:(MCSession *)session didReceiveStream:(NSInputStream *)stream withName:(NSString *)streamName fromPeer:(MCPeerID *)peerID;
// Start receiving a resource from remote peer
- (void)session:(MCSession *)session didStartReceivingResourceWithName:(NSString *)resourceName fromPeer:(MCPeerID *)peerID withProgress:(NSProgress *)progress;
// Finished receiving a resource from remote peer and saved the content in a temporary location - the app is responsible for moving the file to a permanent location within its sandbox
- (void)session:(MCSession *)session didFinishReceivingResourceWithName:(NSString *)resourceName fromPeer:(MCPeerID *)peerID atURL:(NSURL *)localURL withError:(NSError *)error;`
我编写的代码就是这样做的;这是我用我的应用程序将视频从一台设备流式传输到另一台设备制作的视频:
<iframe width="560" height="315" src="https://www.youtube.com/embed/mWyZ1z55chw?rel=0" frameborder="0" gesture="media" allow="encrypted-media" allowfullscreen></iframe>
屏幕录像机(iOS 11.2)导致接收端偶尔出现卡顿(它在我的应用程序显示视频的同时录制视频)。
无论如何,它使用您在设备之间的任何连接(无线、蓝牙、烟雾信号等),请告诉我,我会帮助您入门。