问题标签 [mpmediaplayercontroller]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1864 浏览

ios - iOS 6 不推荐使用 MPMusicPlayerController

我刚刚看到 Apple 发布的 iOS 5.1 到 iOS 6.0 API 的差异。他们说一些重要的方法MPMusicPlayerController.h被删除到MPMediaPlayback协议中(播放、暂停、停止......)。

有人知道如何更新我的应用程序,他们使用下面的代码来使用 iOS 6 吗?

0 投票
1 回答
952 浏览

ios - 播放器 contentURL 更改时 MPMoviePlayerViewController 消失

我知道,有几十个类似的问题。我全部阅读了它们,但仍然找不到答案。presentModalViewController我通过方法显示视频视图。当用户滑动时,我希望下一个视频在同一个播放器中开始。但是当我尝试更改contentURL视频播放器时,视图消失了 - 就像dismissModalViewControllerAnimated调用了方法一样(但没有调用)。

0 投票
2 回答
3635 浏览

iphone - 设置 contentURL 时,在 iPhone 4.3 模拟器中再次调用 MPMoviePlayerPlaybackDidFinishNotification

注意:请参阅底部的更新。


我有一个应用程序可以从列表中逐个播放视频。所以,为了测试这个功能,我创建了一个只有一个视图控制器的简单应用程序。在实现这个视图控制器之前,我参考了这个博客。视图控制器被命名TNViewController,其实现如下:

它的实现是:

现在,我的问题是通知MPMoviePlayerPlaybackDidFinishNotification被调用了两次。从上面的代码可以看出,我在viewDidLoad(in initPlayercalled from viewDidLoad)中只注册了一次。这是日志输出:

如您所见,播放完成被调用了两次。这会导致从队列中跳过一个视频。(其实在原项目出现问题时,nextVideo预先从服务器缓存了一段视频,如果缓存中存在,则返回缓存视频的路径,否则返回nil)。在这里,首先sintel_trailer.mp4播放。在它完成播放后,它会播放 而elephants_dream_trailer.mp4不是big_buck_bunny_trailer.mp4。也就是说,它会循环播放在其间跳过的视频。那么,是什么导致MPMoviePlayerPlaybackDidFinishNotification调用两次呢?我正在为此工作两天,仍然没有运气。任何想法?

更新 1:

目前我正在使用moviePlayBackDidFinish:如下回调中的开关并且正在工作:

但我仍然想知道是什么导致回调被调用两次。我觉得当前的 switch 解决方案就像一个 hack,并且喜欢删除它。

更新 2:

直到现在,我一直在用 iPhone 4.3 模拟器尝试这个。但是,当我用 iPhone 5.0 模拟器和 iPhone 5.1 模拟器尝试相同的程序时,它没有任何问题。也就是说,电影播放完毕后只发送一个回调。这使得我的小技巧(更新 1)变得无用(它解决了 4.3 中的问题,但在 5.0 和 5.1 中产生了问题)。我正在使用在 MacOSX Lion - 10.7.4 上运行的 Xcode 4.3.2。您对如何解决此问题有任何想法吗?为什么在 4.3 上有两个回调?

更新 3:

我查明线路导致问题。它在playNextVideo方法中。线路原因问题是_moviePlayer.contentURL = _movieUrl;。在第一个回调中更改它会导致MPMoviePlayerPlaybackDidFinishNotification再次发送。但是,它只发生在 iPhone 4.3 模拟器中。任何想法?

更新 4:

不过,我对这种奇怪的行为一无所知。所以,我现在正在使用类似于 UPDATE 1 中的时间技巧,如下所示moviePlayBackDidFinish:

0 投票
0 回答
215 浏览

ios - iOS 和 Protools

我可以使用时间码同步在 ProTools 和 iOS 中播放的电影吗?有没有人这样做过?我刚开始做这个项目,我需要在 iPad 和 protools 控制台中同时播放一部电影,时间搜索功能仅在控制台中。

0 投票
2 回答
1442 浏览

ios - iOS:在某些设备上多次调用 MPMusicPlayerControllerPlaybackStateDidChangeNotification

我有一个播放音乐的应用程序。

我正在使用以下代码来收听 MPMusicPlayerController 的播放状态更改以更新 UI。更准确地说,我在播放和暂停之间切换播放按钮的外观。

这在iPod Touch (iOS 5)iPhone 3GS (iOS 5)上效果很好。每次播放状态更改时,我都会收到以下回调:

其中 1 表示MPMusicPlaybackStatePlaying

但是,如果我在iPad 1 (iOS 5)iPad 2 (iOS 5)iPad 3 (iOS 6)上运行相同的程序,我会得到以下序列,而不仅仅是一个回调:

其中 2 表示MPMusicPlaybackStatePaused并导致我的应用程序在 UI 中显示错误的状态,因为实际上正在播放歌曲。

有趣的是,有时顺序是

最终以 1 正确结束MPMusicPlaybackStatePlaying,但是回调被调用 5 次并具有交替值仍然没有意义。

关于如何解决这个问题的任何想法或建议我还能测试什么来缩小问题范围?


由于到目前为止我还没有在这里收到答案,因此我还将问题交叉发布到Apple 开发者论坛https ://devforums.apple.com/thread/158426

0 投票
1 回答
478 浏览

iphone - MPMusicPlayerController 缓冲/预加载

在我调用 -play 之前,有没有办法让 MPMusicPlayerController 缓冲内容?还是在您设置队列时默认执行此操作?AVAudioPlayer 有 -prepareToPlay 方法,我听说 AVQueuePlayer 开始自动缓冲下一个项目,但 MPMusicPlayerController 有相同的行为吗?

0 投票
1 回答
361 浏览

iphone - MediaPlayer.framework:如何将 MPMusicRepeatModeDefault “翻译”为实际模式?

正如Apple文档中所述:

然而,MPMusicRepeatModeDefault被描述为用户的首选重复模式。由于我正在编写音乐播放器,因此我每次都需要知道当前的重复模式是什么,以及当返回时,“实际”模式是什么:

  • MPMusicRepeatModeNone
  • MPMusicRepeatModeOne
  • MPMusicRepeatModeAll

应该被选中?还是没有办法得到这样的信息?

0 投票
3 回答
1455 浏览

iphone - 为什么我的电影不能使用 MPMoviePlayerController 播放?

我正在尝试让一部基本电影在 iPhone 应用程序中播放;但是,我似乎无法让它工作。这是我的整个代码:

playMoviePressed我在屏幕上有一个按钮,当它被点击时会调用。我知道这个方法被调用了。我也尝试过使用拖入 xcode 的本地文件.mov.mp4

0 投票
3 回答
4807 浏览

ios - 模拟器在 AQMEIOManager 上崩溃

尝试播放音频时模拟器崩溃。

0 投票
1 回答
476 浏览

iphone - NSInvalidArgumentException [NSURL length] url video record iphone

I save a video via iphone database application,the url where i'm recording the video is:

file://localhost/private/var/mobile/Applications/0DB3ABFC-1630-44FF-8506-4B08E3CB2C85/tmp/capture-T0x2591d0.tmp.00fEdr/capturedvideo.MOV

However, when I try to read the video via MediaPlayer it always crashes...

sample code:

Thank you in advance.