我有视频的NSdata存储在我的缓存中。我想在AVPlayer(或其他一些播放器,如果ios)上播放这个但是无法理解以哪种格式转换NSData以便它可以在AVplayer上播放。我不想在本地保存,然后将文件路径提供给avplayer播放视频。 请建议有没有其他方式来播放NSData的视频。我已经花了3天时间,但是coudn没有得出任何结论。请给出你的建议。任何帮助或建议将不胜感激。谢谢提前!< / p>
答案 0 :(得分:1)
我为您提供了从缓存中获取NSData并播放视频的解决方案。
步骤1:在Target-&gt; BuilPhases-&gt;链接二进制文件库中添加AVKit框架
第2步:然后在ViewController中导入。现在看起来如下所示。
ViewController.h
#import <AVKit/AVKit.h>
步骤3:在ViewController.h中将AVPlayerViewController声明为Strong
#import <UIKit/UIKit.h>
#import <AVKit/AVKit.h>
@interface ViewController : UIViewController
@property (strong, nonatomic) AVPlayerViewController *playerViewController;
- (IBAction)actionPlayVideo:(id)sender;
@end
第4步:从缓存中获取路径并转换为URL。然后终于播放视频
ViewController.m
#import "ViewController.h"
@interface ViewController (){
NSURL *vedioURL;
}
@end
@implementation ViewController
@synthesize playerViewController;
- (IBAction)actionPlayVideo:(id)sender{
NSString *strNSDataPath = [[self getNSDataFromCache] stringByAppendingPathComponent:@"YourSavedNSDataName"];
vedioURL =[NSURL fileURLWithPath:strNSDataPath];
AVPlayerItem* playerItem = [AVPlayerItem playerItemWithURL:vedioURL];
AVPlayer* playVideo = [[AVPlayer alloc] initWithPlayerItem:playerItem];
playerViewController = [[AVPlayerViewController alloc] init];
playerViewController.player = playVideo;
playerViewController.player.volume = 0;
playerViewController.view.frame = self.view.bounds;
[self.view addSubview:playerViewController.view];
[playVideo play];
}
-(NSString *)getNSDataFromCache{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
NSString *cachesDirectory = [paths objectAtIndex:0];
return cachesDirectory;
}