iphone – AVPlayer和本地文件

iphone – AVPlayer和本地文件,第1张

概述我正在构建一个iOS播放器,播放网络上托管的音频文件。我想提供离线播放文件的功能,所以我有使用ASIHTTP下载的文件,但我似乎找不到在应用程序文件目录中用mp3初始化AVPlayer的信息。以前有人做过吗?甚至有可能吗 *我在下面发布了一个答案,显示如何使用iOS AvPlayer本地和http文件。希望这可以帮助! 我决定回答我自己的问题,因为我觉得有很少的文档说明如何使用Apple为本地和流 我正在构建一个iOS播放器,播放网络上托管的音频文件。我想提供离线播放文件的功能,所以我有使用ASIhttp下载的文件,但我似乎找不到在应用程序文件目录中用mp3初始化AVPlayer的信息。以前有人做过吗?甚至有可能吗

*我在下面发布了一个答案,显示如何使用iOS AvPlayer本地和http文件。希望这可以帮助!

解决方法 我决定回答我自己的问题,因为我觉得有很少的文档说明如何使用Apple为本地和流(通过http)文件提供的AVPlayer。为了帮助理解这个解决方案,我把一个 sample project on GitHub in Objective-C和 Swift的代码放在了Objective-C上,但是你可以下载Swift的例子来看看。这是非常相似的!

我发现,设置文件的两种方式几乎完全相同,除了您如何为资产>实例化您的NSURL PlayerItem> AVPlayer链。

以下是核心方法的概要

.h文件(部分代码)

-(IBAction) BtnGoClick:(ID)sender;-(IBAction) BtnGolocalClick:(ID)sender;-(IBAction) BtnPlay:(ID)sender;-(IBAction) BtnPause:(ID)sender;-(voID) setupAVPlayerForURL: (NSURL*) url;

.m文件(部分代码)

-(IBAction) BtnGoClick:(ID)sender {    NSURL *url = [[NSURL alloc] initWithString:@""];    [self setupAVPlayerForURL:url];}-(IBAction) BtnGolocalClick:(ID)sender {    // - - - Pull media from documents folder    //Nsstring* savefilename = @"MyAudio.mp3";    //NSArray *paths = NSSearchPathForDirectorIEsInDomains(NSdocumentDirectory,NSUserDomainMask,YES);    //Nsstring *documentsDirectory = [paths objectAtIndex:0];    //Nsstring *path = [documentsDirectory stringByAppendingPathComponent:savefilename];    // - - -    // - - - Pull media from resources folder    Nsstring *path = [[NSBundle mainBundle] pathForResource:@"MyAudio" ofType:@"mp3"];    // - - -    NSURL *url = [[NSURL alloc] initfileURLWithPath: path];    [self setupAVPlayerForURL:url];}-(voID) setupAVPlayerForURL: (NSURL*) url {    AVAsset *asset = [AVURLAsset URLAssetWithURL:url options:nil];    AVPlayerItem *anItem = [AVPlayerItem playerItemWithAsset:asset];    player = [AVPlayer playerWithPlayerItem:anItem];    [player addobserver:self forKeyPath:@"status" options:0 context:nil];}- (voID)observeValueForKeyPath:(Nsstring *)keyPath ofObject:(ID)object change:(NSDictionary *)change context:(voID *)context {    if (object == player && [keyPath isEqualToString:@"status"]) {        if (player.status == AVPlayerStatusFailed) {            NSLog(@"AVPlayer Failed");        } else if (player.status == AVPlayerStatusReadytoplay) {            NSLog(@"AVPlayer Ready to Play");        } else if (player.status == AVPlayerItemStatusUnkNown) {            NSLog(@"AVPlayer UnkNown");        }    }}-(IBAction) BtnPlay:(ID)sender {    [player play];}-(IBAction) BtnPause:(ID)sender {    [player pause];}

查看Objective-C source code的一个工作示例。
希望这可以帮助!

-Update 12/7/2015我现在有一个Swift的源代码示例可以view here。

总结

以上是内存溢出为你收集整理的iphone – AVPlayer和本地文件全部内容,希望文章能够帮你解决iphone – AVPlayer和本地文件所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/web/1086493.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存