从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; 
}