【问题标题】:Playing video from NSData in objective c在目标 c 中播放来自 NSData 的视频
【发布时间】:2017-05-21 06:50:01
【问题描述】:

我有视频的 NSData 并存储在我的缓存中。我想在 AVPlayer(或其他播放器,如果 iOS 有)上播放它,但无法理解我应该以哪种格式转换 NSData 以便它可以在 AVplayer 上播放。我不想将其保存在本地,然后将文件路径提供给 AVplayer 以播放视频。 请建议是否有任何其他方式可以播放来自 NSData 的视频。我已经花了 3 天时间,但无法得出任何结论。请提出您的建议。任何帮助或建议将不胜感激。提前致谢!

【问题讨论】:

    标签: objective-c caching avplayer


    【解决方案1】:

    我给你的解决方案是从缓存中获取 NSData 并播放视频。

    第 1 步:在 Target->BuilPhases->Link Binary With Libraries 中添加 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
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-09-07
      • 1970-01-01
      • 2020-06-27
      • 2013-05-19
      • 1970-01-01
      • 1970-01-01
      • 2019-12-05
      相关资源
      最近更新 更多