如何在两个iOS设备之间有效传输实时视频(如facetime、skype、fring、tango)
我知道如何从 iOS sdk 获取框架。 [如何使用 AV Foundation 从摄像头捕获视频帧作为图像(http://developer.apple.com/library/ios/#qa/qa1702/_index.html)] 它是像素,我可以将其转换为 JPEG。
我想要传输视频的方式是这样的:
一台iOS设备A:
- 从调用函数获取像素或JPEG
-(void)captureOutput:(AVCaptureOutput *)captureOutput didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection *)connection
使用现有技术编码为h.264 - ffmpeg
用 TS 流封装视频
运行 http 服务器,等待请求
另一台 iOS 设备 B:
- http 请求到A(简单地使用http而不是rtp/rtsp)
所以我的问题是,我是否需要使用ffmpeg来获取h.264流或者我可以从iOS API获取? 如果我使用 ffmpeg 编码为 h.264(libx264),该怎么做,有任何示例代码或指南吗?
我读过这篇文章 将 iPhone 摄像头直播到媒体服务器的最佳方式是什么? 这是一个很好的讨论,但我想知道细节。
I know how to get frame from iOS sdk.
[How to capture video frames from the camera as images using AV Foundation(http://developer.apple.com/library/ios/#qa/qa1702/_index.html)]
It's pixel, and i can transfer it to JPEG.
What the way I want to transfer the video is like this:
One iOS device A:
- Get the pixel or JPEG from call function
-(void)captureOutput:(AVCaptureOutput *)captureOutput didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection *)connection
Using existed technology encoding to h.264 - ffmpeg
encapsulate video with TS stream
Run http server, and wait for request
The other iOS device B:
- http request to A(using http simply instead of rtp/rtsp)
So my question is, do I need to use ffmpeg to get h.264 stream or i can get from iOS API?
If I use ffmpeg to encode to h.264(libx264), how to do that, is there any sample code or guideline?
I've read the post What's the best way of live streaming iphone camera to a media server?
It's a pretty good discussion, but i want to know the detail.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
ffmpeg 的许可证与通过 App Store 分发的 iOS 应用程序不兼容。
如果您想传输实时视频并具有任何类型的可用帧速率,您不会想使用 http 或 TCP。
The license for ffmpeg is incompatible with iOS applications distributed through the App Store.
If you want to transfer realtime video and have any kind of a usable frame rate, you won't want to use http nor TCP.
虽然这并不能直接回答您关于使用哪种视频格式的问题,但我建议您研究一些第三方框架,例如 ToxBox 或 QuickBlox。这里有一个使用 Parse 和 OpenTok 的精彩教程:
Although this doesn't directly answer your question about which video format to use, I would suggest looking into some 3rd party frameworks like ToxBox or QuickBlox. There is a fantastic tutorial using Parse and OpenTok here:
http://www.iphonegamezone.net/ios-tutorial-create-iphone-video-chat-app-using-parse-and-opentok-tokbox/