从NSData播放视频中的目标c
问题描述:
我有视频的NSdata存储在我的缓存中。我想在AVPlayer上播放(或者其他播放器,如果ios有)但无法理解以何种格式转换NSData以便它可以在AVplayer上播放。我不想在本地保存它,然后将文件路径发送给avplayer播放视频。 请提出是否有任何其他方式播放视频从NSData.I已经花了3天的时间,但coudn't达成任何结论。请给你的建议。任何帮助或建议,将不胜感激。提前感谢!从NSData播放视频中的目标c
答
我给你从缓存中获取NSData并播放视频的解决方案。
STEP 1:添加AVKit框架靶> BuilPhases->链接二进制与图书馆
STEP 2:然后导入ViewController.Now它看起来像下面。
ViewController.h
#import <AVKit/AVKit.h>
步骤3:声明AVPlayerViewController为强力的ViewController.h
#import <UIKit/UIKit.h>
#import <AVKit/AVKit.h>
@interface ViewController : UIViewController
@property (strong, nonatomic) AVPlayerViewController *playerViewController;
- (IBAction)actionPlayVideo:(id)sender;
@end
STEP 4:从缓存路径,并转换为URL。然后最后播放视频
ViewCont roller.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;
}