了解 AVPlayer 对象何时准备好播放

2023-11-24

我正在尝试玩一个MP3传递给的文件UIView从以前的UIView(存储在NSURL *fileURL多变的)。

我正在初始化一个AVPlayer with:

player = [AVPlayer playerWithURL:fileURL];

NSLog(@"Player created:%d",player.status);

The NSLog prints Player created:0,我认为这意味着它还没有准备好玩。

当我点击播放时UIButton,我运行的代码是:

-(IBAction)playButtonClicked
{
    NSLog(@"Clicked Play. MP3:%@",[fileURL absoluteString]);

    if(([player status] == AVPlayerStatusReadyToPlay) && !isPlaying)
//  if(!isPlaying)
    {
        [player play];
        NSLog(@"Playing:%@ with %d",[fileURL absoluteString], player.status);
        isPlaying = YES;
    }
    else if(isPlaying)
    {

        [player pause];
        NSLog(@"Pausing:%@",[fileURL absoluteString]);
        isPlaying = NO;
    }
    else {
        NSLog(@"Error in player??");
    }

}

当我运行这个时,我总是得到Error in player??在控制台中。 但是如果我更换if检查是否的条件AVPlayer准备好开始玩了,只需简单的操作if(!isPlaying)...,然后音乐第二次播放,我点击播放UIButton.

控制台日志是:

Clicked Play. MP3:http://www.nimh.nih.gov/audio/neurogenesis.mp3
Playing:http://www.nimh.nih.gov/audio/neurogenesis.mp3 **with 0**

Clicked Play. MP3:http://www.nimh.nih.gov/audio/neurogenesis.mp3
Pausing:http://www.nimh.nih.gov/audio/neurogenesis.mp3

Clicked Play. MP3:http://www.nimh.nih.gov/audio/neurogenesis.mp3
2011-03-23 11:06:43.674 Podcasts[2050:207] Playing:http://www.nimh.nih.gov/audio/neurogenesis.mp3 **with 1**

我第二次看到player.status似乎保持 1,我猜是AVPlayerReadyToPlay.

我该怎么做才能让我第一次点击播放时播放正常UIButton? (即,我如何确保AVPlayer不仅是创建出来的,而且还可以玩吗?)


您正在播放远程文件。可能需要一些时间AVPlayer缓冲足够的数据并准备好播放文件(请参阅AV 基础编程指南)

但你似乎没有等到玩家准备好才点击播放按钮。我想要的是禁用此按钮并仅在播放器准备好时才启用它。

使用 KVO,可以收到玩家状态变化的通知:

playButton.enabled = NO;
player = [AVPlayer playerWithURL:fileURL];
[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 == AVPlayerStatusReadyToPlay) {
            playButton.enabled = YES;
        } else if (player.status == AVPlayerStatusFailed) {
            // something went wrong. player.error should contain some information
        }
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

了解 AVPlayer 对象何时准备好播放 的相关文章

  • 在回调函数中调用目标c函数

    如何在回调函数中调用目标c函数 回调函数 static OSStatus inputRenderCallback void inRefCon AudioUnitRenderActionFlags ioActionFlags const Au
  • 用于具有转换的非导航应用程序的视图控制器/NIB 架构?

    我正在修补一个 iPad 应用程序 就像许多 iPad 应用程序一样 它不使用 UINavigation 根视图控制系统 因此我没有每个应用程序 视图 的自然所有权 我基本上有两个基本视图 文档列表视图和文档编辑视图 我正在使用 UIVie
  • 为具有多个目标和不同平台的项目编写 Podfile

    我正在准备一个支持 OS X 和 iOS 的 Pod 我的 pod 有一些自己的依赖项 这些依赖项在 podspec 文件中定义 因此我使用 Podfile 来管理我用来开发 pod 和运行测试的项目的依赖项 我正在使用 CocoaPods
  • MKMapView 拦截/劫持 iPhone 触摸事件

    3 0 SDK 是否存在禁用实时缩放并拦截 MKMapView 放大手势的 bug 我有一些真正简单的代码 因此我可以检测点击事件 但有两个问题 放大手势始终被解释为缩小手势 所有缩放手势都不会实时更新地图视图 在 hitTest 中 如果
  • 在情节提要中将 Segue 拖至自身

    我想将一个 Segue 从我的视图控制器拖到其自身 所以我可以推送该特定视图控制器的 无限 实例 我知道如何在代码中执行此操作 即以编程方式实例化视图控制器 但是 我想尽可能使用 segues 我发现了一些在故事板中进行自我延续的 技巧 但
  • 访问 google reader 的 Endpoints API 时出错

    我正在尝试在iPhone APP中实现google reader 到目前为止我已经成功收到了sid and auth 当我尝试使用以下命令调用 Endpoints API 时 问题就出现了GET 这是代码 ASIHTTPRequest re
  • 使用 ZBarSDK 时 iPhone 相机失去自动对焦功能

    我正在开发一个应用程序 用户可以选择是否要扫描条形码或拍摄某物的照片 为了拍照 我正在使用UIImagePickerController照常 为了扫描条形码 我使用 ZbarSDK 1 2ZBarReaderViewController 拍
  • 从 IOS 应用程序注销的完美方法是什么?

    下面的代码可以工作 但有一个错误 场景是 我首先登录进入应用程序系统 登录成功后 应用程序将设置 UserDefaults UserId 之后 我可以使用存储的 UserId 导航应用程序视图 一旦我进入设置和选项卡注销 这将清除 User
  • 从 NavigationController 中删除 ViewController 后 AVPlayer 继续播放

    因此 我在项目中使用 ARC 当我添加 AVPlayerLayer 时 它工作得很好 但当我从 UINavigationItem 中弹出 UIViewController 时 视频继续在后台播放 有谁知道你会如何处理这个问题 这似乎是一件很
  • 核心数据对多关系。它们是延迟加载吗?

    我在核心数据 适用于 iPhone 中有典型的模型 其中包含部门和员工 部门 gt gt 员工 我不想每次加载时都加载一个部门的所有员工 所以我想将员工创建为获取的属性 我想我可以定义一些像这样的谓词 employee deparmentI
  • Facebook iPhone SDK:上传图像时显示进度条

    我想在我的 iPhone 应用程序将图像上传到 Facebook 时显示进度条 是否可以 我可以对我发出的每个 FBRequest 执行此操作吗 我还使用 FBRequest 来检查扩展权限 有时需要花费很多时间 谢谢 对于进度条 您可以做
  • 如何用图片替换UITableView?

    我有一个 UITableView 默认为空白 直到用户编辑并向其添加数据 我想显示一张带有说明的图像 直到用户编辑它为止 图片的大小非常适合导航栏和标签栏之间 有没有办法以编程方式执行此操作 您可以使用removeFromSuperview
  • 应用程序打开时处理推送通知

    我正在运行推送通知 有用 我收到通知并使用 application didReceiveRemoteNotification 获取传入数据 然后将用户发送到必要的屏幕 问题是 如果您正在使用该应用程序并收到通知 它会跳转到目标屏幕 而不会发
  • XCode 4.5 给我“SenTestingKit/SenTestKit.h”文件未找到,但适用于 4.4.1

    我刚刚安装了 XCode 4 5 它在我现有的项目之一上给了我一个 SenTestingKit SenTestingKit h 文件未找到错误 此错误仅发生在 XCode 4 5 中 但它在 4 4 1 上编译正常 我已经检查过SenTes
  • 如何将相机中的图像保存到 iPhone 图库中的特定文件夹?

    嘿 我是 iPhone 新手 最近我一直在尝试制作一个应用程序 基本上 我想要做的是 如果用户将从相机捕获任何图像 那么它应该保存在设备库中 我知道如何将照片保存在图库中 它对我有用 但我无法将所有捕获的图像保存到设备图库中的特定文件夹 例
  • 使用 json 向 RESTful WCF 发送 Post 请求

    我已经尝试了每种组合来发送请求 以从 jQuery 向 RESTful WCF 发送 POST 请求 有人可以模仿并使其发挥作用吗 代码在这里 http pastebin com Ua97919C http pastebin com Ua9
  • 在 iOS 上使用 Web 服务的最佳方式?

    我想构建一个 iOS 应用程序 让您登录到网络服务 之后 应用程序将 当用户选择时 通过 https 发送登录名 密码以及请求的变量 例如 在请求 新闻更新 后 它将收到 XML 格式的请求信息 类似于
  • 错误域=AVFoundationErrorDomain代码=-11814“无法记录”

    它不断给我错误 错误域 AVFoundationErrorDomain代码 11814 无法记录 我不确定问题是什么 我试图在拍照后计数器达到 1 时录制声音 static int counter counter will always b
  • 进入前台后刷新数据

    更改默认设置后 我想在AppDelegate中进入前台时刷新myViewController的数据 我所做的是 AppDelegate m void applicationDidFinishLaunching UIApplication a
  • 苹果推送通知在生产中不起作用

    我们完全陷入困境 请帮忙 我和我的团队制作了一个 iPhone 应用程序 这是我们第一次在 iOS 上尝试 一切都很好 直到我们提交应用程序并在应用程序商店上可用为止 推送通知服务无法正常工作 我在网上搜索并尝试根据人们的建议仔细检查我们的

随机推荐

  • 文字闪烁 jQuery

    在 jQuery 中使文本闪烁的简单方法是什么以及停止它的方法是什么 必须适用于 IE FF 和 Chrome 谢谢 一个让某些文本闪烁的插件对我来说听起来有点矫枉过正 尝试这个 blink each function var elem t
  • 如何从 .h5 文件正确加载带有自定义层的 Keras 模型?

    我构建了一个带有自定义层的 Keras 模型 并将其保存到 h5通过回调文件ModelCheckPoint 当我在训练后尝试加载该模型时 出现以下错误消息 init missing 1 required positional argumen
  • 有什么理由使用 System.Uri 吗?

    我仔细看了一下 似乎它已经从根本上坏了 只有 5 个实例方法未标记为过时 似乎没有任何内置方法 解析查询字符串变量 没有方法可以改变 Uri 例如附加新的查询变量 HttpUtility 适用于字符串 不适用于 URI 那么它有什么好处吗
  • 为什么我的 WPF 应用程序中出现“无法加载 DLL 'sqlite3'”?

    我将我认为必要的 SQLite 和 sqlite net 包添加到我的应用程序中 但是 在运行它时 我遇到了一个异常 System DllNotFoundException 未被用户代码处理 HResult 2146233052 消息 无法
  • 加快 write.table 的性能

    我有一个data frame我想把它写出来 我的尺寸data frame为 256 行 x 65536 列 有什么更快的替代品write csv data table fwrite 由 Otto Seiskari 贡献 提供 1 9 8 版
  • 使用另一个列表的元素名称创建空列表

    假设我们有一个列表my list a b c 我想做的是创建空列表 a b c 这样我就可以根据它们的名称向它们添加一些元素 以编程方式创建变量是一个非常糟糕的主意 使用这些名称作为键创建一个字典 my lists key for key
  • 为什么 OpenJDK 11 Java 垃圾收集器*减少*此示例程序中的可用内存?

    当我使用 OpenJDK 11 Windows 10 上的 Zulu 发行版 编译并运行以下非常简单的 Java 程序时 public class GCTest public static void main String args Sys
  • 使用 VBA 在 Excel 工作表中创建表

    我下面有这段代码 它将自动选择一个范围 有谁知道如何添加代码以在选定范围内创建表格 Thanks Sub DynamicRange Best used when first column has value on last row and
  • Windows 上的 Python 子进程输出?

    我在从子进程标准输出管道获取输出时遇到了一些困难 我正在通过它启动一些第三方代码 以提取日志输出 直到最近更新第三方代码为止 一切都工作正常 更新后 python 开始无限期地阻塞 并且实际上不显示任何输出 我可以手动启动第三方应用程序并查
  • 协方差如何比多态性更酷......并且不冗余?

    NET 4 引入了协方差 我想它是有用的 毕竟 MS 历尽千辛万苦才把它添加到 C 语言中 但是 为什么协方差比传统的多态性更有用呢 我写这个例子是为了理解为什么我应该实现协方差 但我仍然不明白 请赐教 using System using
  • gitcherry-pick多次提交[重复]

    这个问题在这里已经有答案了 可能的重复 如何挑选一系列提交并合并到另一个分支 我想从一个分支中挑选 19 个提交并将它们应用到另一个分支 所有提交都是连续的 提交 1 提交 2 提交 19 并且最后一次提交不是最近的提交 即 在其之后还有其
  • 如何使用 标签提交 POST 表单?

    我如何提交 POST 表单至showMessage jsp仅使用 a href tag a
  • 使用 onbeforeunload 时抑制确认对话框

    我正在使用 onbeforeunload 事件发送 ajax 请求来执行一些清理任务 当我使用 onbeforeunload 时 它会显示关闭选项卡时的确认对话框 我想要的不是显示任何确认对话框 而只是发送清理请求 以下是我正在使用的脚本
  • 参数变量存储在内存中的什么位置?

    我正在用 C 编写一些代码 当遇到一个方法时 我想知道参数变量存储在内存中的位置 我知道以下几点 全局变量 gt 存储在 static 的代码部分 静态变量 gt 局部自动变量 方法内部 gt 存储在堆栈中 局部静态变量 gt 存储在堆栈中
  • iOS 17 更新后 PWA 应用在 Safari 上崩溃

    我的 Angular 应用程序在 iPhone 上作为 PWA 正常工作 但在上次 ios17 更新后 该应用程序崩溃了 即使我在 Safari 上清除现金 它也可能会再次工作几分钟 然后当我关闭时 该网站的 PWA 快捷方式将停止工作苹果
  • CoreBluetooth反复断开连接

    我已经上下查找过这个问题 但似乎没有人遇到这个问题 我有两台 iPad 其中一个充当始终位于前台的蓝牙外设 由于我对中央侧更感兴趣 因此我将中央 iPad 背景设置为支持 BLE central 我的工作流程如下 中央应用程序运行并开始扫描
  • 具有 Parquet 和分区的 Spark DataFrames

    我无法找到有关此主题的太多信息 但假设我们使用数据帧读取 10 个块的 parquet 文件 spark 自然会创建 10 个分区 但是 当数据帧读入文件来处理它时 它不会处理很大的数据与分区比率 因为如果它处理未压缩的文件 块大小会更大
  • 使用 NWConnection 进行长时间运行的 TCP 套接字的正确方法

    我整天都在与 NWConnection 作斗争 以在长时间运行的 TCP 套接字上接收数据 由于缺乏文档 我在给自己造成以下错误后终于让它工作了 数据不完整 由于只调用一次receive 获取 TCP 数据无序 由于从计时器 轮询 接收 导
  • 自定义对话框片段

    我正在尝试创建一个类似于DatePickerDialog The Dialog我正在创建的应该为用户提供一系列图像供他们选择 我相信我已经成功创建了数组并向其中添加了正确的图像 我现在遇到的问题是如何获取Dialog现身 我应该返回什么 我
  • 了解 AVPlayer 对象何时准备好播放

    我正在尝试玩一个MP3传递给的文件UIView从以前的UIView 存储在NSURL fileURL多变的 我正在初始化一个AVPlayer with player AVPlayer playerWithURL fileURL NSLog