bom*_*mpf 4 streaming objective-c avfoundation nsurlrequest ios
我一直在研究这个话题一段时间,我无法弄清楚我是如何实现这一目标的.假设我们有来自HTTP Stream的视频,我希望能够在我的应用中播放该视频,同时视频也会保留在磁盘上.我知道我可以使用AVFoundation或MediaPlayer框架播放视频,我可以通过加载文件/流 NSURLRequest.
然而,这是两个不同的过程,需要加载视频两次.我无法弄清楚是否以及如何将这两者结合起来.这可能/可行吗?
这是可能的.但是,如果您愿意,为了您的YouTube视频,我不想推荐.因为跟随Youtbe TOS.
原因如下:
22.4
我们发现您的应用包含的信息可能允许其用户下载不符合YouTube服务条款的YouTube内容.
"......除非您在本服务上看到YouTube上显示的"下载"或类似链接,否则您不得下载任何内容.您不得复制,复制,分发,传输,广播,展示,出售,许可或未经YouTube或内容的相应许可人事先书面同意,否则不得将任何内容用于任何其他目的.YouTube及其许可方保留未在服务和内容中明确授予的所有权利.
还请参考以下网站问题.这非常重要.你肯定需要阅读.
http://www.iphonedevsdk.com/forum/business-legal-app-store/88260-youtube-downloader.html
无论如何,现在我将告诉你如何实现它们.
一个.流媒体服务并不难实现.根据Apple的示例代码可以轻松实现.请注意以下事项.这使用AVPlayer.在3G,我测试了Wifi.很好.怎么测试?上传到您的服务器视频或获取视频链接.并复制并粘贴源代码xib textField.
湾 视频下载可同时使用.我会推荐AFNetworking.ARC支持它.因此,如果应用状态为后台,请继续下载.
如何下载?
NSURLRequest *request = [NSURLRequest requestWithURL:"your_http_video_url" cachePolicy:NSURLRequestReturnCacheDataElseLoad timeoutInterval:20];
AFURLConnection *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];
NSArray *docPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *docPath = [[docPaths objectAtIndex:0] stringByAppendingPathComponent:"your_save_video_name.mp4"];
operation.outputStream = [NSOutputStream outputStreamToFileAtPath:path append:NO];
[operation setDownloadProgressBlock:^(NSInteger bytesRead, long long
totalBytesRead, long long totalBytesExpectedToRead)
{
//do stuff. about upadte progressbar...
}];
[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject)
{
NSLog(@"downloadComplete"); // show alertView to user.
}];
[operation start];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8118 次 |
| 最近记录: |