MPMediaPlayer 播放本地文件问题

Posted

技术标签:

【中文标题】MPMediaPlayer 播放本地文件问题【英文标题】:MPMediaPlayer playing local file issue 【发布时间】:2014-04-28 08:06:38 【问题描述】:

我的应用程序有一个视频录制功能,它成功录制并保存在设备的 Documents 目录中(插入设备时我可以从 iTunes 访问)。我的问题是,我使用无法访问或播放的 APP 制作了用于播放视频的 View UI。

这是我的视频网址 = /var/mobile/Applications/C13AB577-FFB2-4814-BD39-A9835A2DAE28/Documents/WO-00604-140428101904.349.mp4

我的实现代码是:

mediaUrl = [mediaUrl URLByAppendingPathComponent:mediaName];

mediaPlayer.movieSourceType = MPMovieSourceTypeStreaming;

mediaPlayer = [[MPMoviePlayerController alloc] init];

mediaPlayer.controlStyle=MPMovieControlStyleDefault;

mediaPlayer.contentURL = mediaUrl;

mediaPlayer.shouldAutoplay = YES;

mediaPlayer.controlStyle=MPMediaTypeAnyVideo;

[mediaPlayer prepareToPlay];

[mediaPlayer.view setFrame: CGRectMake(0, 0, 360.0, 480.0)];

[self.view addSubview:mediaPlayer.view];

[mediaPlayer play];

debug 中的 mediaURL 具有该值:http://prntscr.com/3e6ohi

【问题讨论】:

确保你的 url 初始化为:NSURL *url = [NSURL fileURLWithPath:filePath] ; @KudoCC 如果你查看我给链接的截图,你可以看到 NSURL 带有完整路径。 不行,url应该是file:///var...格式。 @KudoCC,我怎么忘了这么简单的事情!现在它就像一个魅力:) 【参考方案1】:

我使用当前代码成功运行,我认为您应该检查您的 mediaURL:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *basePath = ([paths count] > 0) ? [paths objectAtIndex:0] : nil;
basePath = [basePath stringByAppendingString:@"/MyVideo.mp4"];
NSURL *url = [NSURL fileURLWithPath:basePath];
mediaPlayer.contentURL = url;

【讨论】:

以上是关于MPMediaPlayer 播放本地文件问题的主要内容,如果未能解决你的问题,请参考以下文章

我的网络应用程序用户如何单击按钮来播放本地存储的 mp3 文件?

MPMediaPlayer indexOfNowPlayingItem 给出当前索引 9223372036854775807

当我在 ios 8 中旋转 MPMediaPlayer 时它变小了

如何从本地文件播放音频?

如何在 iOS 本地播放 .ts(传输流)文件

React Native 视频不会播放本地文件