Mojave/macOS 10.14.0:[AVPlayerItem 持续时间] 始终不确定

2024-04-21

我正在尝试使用以下代码读取本地存储的音频文件的持续时间:

#import <Foundation/Foundation.h>
#import <CoreMedia/CoreMedia.h>
#import <AVFoundation/AVFoundation.h>

AVPlayer *player = [AVPlayer playerWithURL: urlForLocalAudioFile];
// busy wait - I know, not elegant, please ignore
int timeout = 0;
while (([player status] == AVPlayerStatusUnknown
        || [[player currentItem] status] == AVPlayerItemStatusUnknown)
        && timeout < 100) {
    [NSThread sleepForTimeInterval: 0.1];
    timeout++;
}
// make sure we have the right status
if ([[player currentItem] status] == AVPlayerItemStatusReadyToPlay) {
    CMTime cmTime = [[player currentItem] duration];
    if (CMTIME_IS_INDEFINITE(cmTime)) {
        NSLog(@"Duration is kCMTimeIndefinite");
    } else {
        NSLog(@"Time: %d", CMTimeGetSeconds(cmTime));
    }
} else {
    NSLog(@"Item not ready to play");
}

代码是not在主 AppKit 线程中执行,它曾经在 macOS 10.13.x 及更早版本下工作。现在有10.14.0了always报告"Duration is kCMTimeIndefinite"。即使在我开始播放该文件之后。

有人可以吗:

  1. 确认/否认这是 macOS 10.14.0 中的错误
  2. 建议一个解决方法

Thanks.


这是一个错误吗?

是的。看雷达://45039043 https://openradar.appspot.com/radar?id=4968600712511488.

解决方法

Use

CMTime cmTime = [[[player currentItem] asset] duration];

代替

CMTime cmTime = [[player currentItem] duration];
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Mojave/macOS 10.14.0:[AVPlayerItem 持续时间] 始终不确定 的相关文章

随机推荐

  • SQL插入相关表

    在我看来 这似乎是 SQL 数据库开发中经常出现的问题 但我对这一切都是新手 所以请原谅我的无知 我有 2 张桌子 CREATE TABLE dbo Tracks TrackStringId bigint NOT NULL Id bigin
  • 如何从 Node.js 调用 C++ 代码?

    我目前正在开发一个在服务器上运行的模拟器 并应在浏览器中显示数据 对于服务文件 通信和类似的事情 我想使用 Node js 但是 我不确定它在计算部门是否会像我希望的那样执行 所以我想用 C 开发模拟部分 模拟被划分为单独的 世界 它们都以
  • 使用 node-sass 安装 angular-cli 时出错

    我的系统配置 Debian 4 4 nvm 0 33 8 节点 v8 9 4 npm 5 6 0 我想安装 Angular clinpm install g angular cli 但我收到一条错误消息 root contracts hom
  • NugGet Semver - 允许哪些预发行角色?

    我正在尝试对我的 NuGet 包 NET Core 2 之一使用语义版本控制 版本如下 1 0 0 my fancy branch 123 正如您所猜测的 我尝试将分支名称和当前 BuildId 设置为预发布标签 不幸的是 dotnet b
  • MediaCodec.createInputSurface() 在 Android 模拟器中抛出 IllegalStateException(错误 -38)

    I have MediaMuxer MediaMuxer mMediaMuxer new MediaMuxer new File Environment getExternalStorageDirectory video mp4 getPa
  • 在 Shiny 中格式化响应式 data.frames

    我有一个工作闪亮的应用程序 但我正在更改它 以便输入数据是反应性的 当底层数据更新时它会更新 当它刚刚读入数据时 它工作得很好 但现在数据是反应性的 我在其中一个文件上遇到了问题 另外两个文件按预期工作 该文件是从数据库导出的 csv 我想
  • 数据库级别的国际化

    谁能向我指出一些解决数据库级别任务国际化的模式 最简单的方法是为每个文本列的每种语言添加一个文本列 但这在某种程度上有点难闻 我真的希望能够动态添加支持的语言 我要提出的解决方案是保存在模型中的一种主要语言和一个查询翻译并将翻译保存到的字典
  • 为什么unique_ptr::~unique_ptr需要T的定义?

    如果我有一堂 酒吧 课 bar h class Bar public Bar 我转发声明与另一个类 Foo 中的 std unique ptr 一起使用 foo h include
  • Visual Studio 2010 - 如何优化

    我正在使用 2010 版的 Visual Studio 但遇到了许多延迟问题 我的计算机具有良好的 RAM 和处理器配置 特别是在保存文件时 目前 我正在进行一个中型项目 只有一个打开文件 ASP NET 页面 使用第三方 Telerik
  • ActionBarSherlock - 无法解析类型 android.support.v4.app.Fragment。它是从所需的 .class 文件间接引用的

    我使用 ActionBarSherlock 作为一个项目中的库项目 该项目本身就是一个库 一切都工作正常 直到我将项目移至新计算机并更新了 SDK 工具 我有这个错误我不明白 当我创建一个扩展 SherlockFragment 的类时 如下
  • xCode Instruments 检测到的这些内存泄漏对象是什么?

    我有一个 iPhone 应用程序 似乎存在内存泄漏问题 这是一款益智游戏 在玩了几个谜题后 应用程序在设备上崩溃了 我现在尝试使用 xcode Instruments 来检测发生了什么 第一次使用仪器 我注意到 泄漏 图中有一个泄漏栏 就在
  • JTextField 中的下拉列表

    我不知道当我在文本字段中输入一些字母时 应该从我的数据库中选取相关项目并应显示为下拉列表 例如 我在文本字段中输入了 J 在我的数据库中具有诸如 Juby Jaz Jasmine Joggy 之类的名称 这些名称应显示为列表 这样我就可以从
  • MSChart 中系列和数据点的所有可用自定义属性的最终列表

    我正在使用 NET 3 5 MSChart 控件 有时我发现我需要向系列或数据点添加自定义属性 例如 Series series new Series series PieDrawingStyle SoftEdge DataPoint po
  • Graphql 没有为接口/联合定义解析器 - java

    我在使用这种方法添加解析器时遇到问题graphql RestController RequestMapping api dictionary RequiredArgsConstructor onConstructor Autowired p
  • C# 中是否有与 HashSet 等效的 AddRange

    通过列表 您可以执行以下操作 list AddRange otherCollection a 中没有添加范围方法HashSet 添加另一个的最佳方法是什么ICollection to a HashSet For HashSet
  • MySQL中如何获取两个值中的最大值?

    我尝试过但失败了 mysql gt select max 1 0 ERROR 1064 42000 You have an error in your SQL syntax check the manual that corresponds
  • twitter bootstrap 下拉菜单的对齐

    我设计了一个带有下拉菜单的引导导航栏 http jsfiddle net yabasha fex8N 3 http jsfiddle net yabasha fex8N 3
  • Android活动内存消耗

    我有一个 Android 应用程序 有 4 个活动 第一个是基本的启动屏幕 第二个是登录 第三个是主屏幕 第四个是用于绘图的额外屏幕 在真实设备上运行该应用程序 2014 年的 Samsung Galazy 选项卡或 Android 4 4
  • Ncurses 和 Qt 互操作性

    拥有基于 Qt 和 ncurses 的应用程序 在等待用户输入时每秒刷新屏幕的最佳方法是什么 例如显示时钟并获取用户输入 我需要 CPU 使用率和应用程序响应能力之间的最佳折衷 更具体地说 如何获取用户输入并仍然使用QTimer以及信号槽机
  • Mojave/macOS 10.14.0:[AVPlayerItem 持续时间] 始终不确定

    我正在尝试使用以下代码读取本地存储的音频文件的持续时间 import