Swift - 检查 url asset 是否有声音

2023-12-14

我的屏幕破裂了,而且我的手机没有声音功能。我用相机录制了视频。当我选择视频网址时didFinishPickingMediaWithInfo我尝试检查视频是否有声音,但是player.currentItem?.asset.tracks说视频确实有声音(设备和录制的视频肯定没有声音)。

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {

   // ...
   guard let url = info[UIImagePickerController.InfoKey.mediaURL] as? URL else { return }

   // ...
   let asset = AVURLAsset(url: url)
   let playerItem = AVPlayerItem(asset: asset)
   let player = AVPlayer(playerItem: playerItem)

   if let tracks = player.currentItem?.asset.tracks {
                
       switch tracks.count {
       case 0:
           print("tracks -0: audio only")
                    
       case 1:
           print("tracks -1: video only ")

       case 2:
           print("tracks -2: audio and video") // this prints when the video does have sound (recorded before the screen cracked)
                    
       default:
           print("tracks -default: audio and video") // *** this always prints when the video doesn't have sound (recorded after the screen cracked) ***       
       }   
   }
}

这是这样做的方法:

let asset = AVURLAsset(url: url)
// if using a mixComposition it's: let asset = mixComposition (an AVMutableComposition itself is an asset)

let audioTrack = asset.tracks(withMediaType: .audio)
if audioTrack.isEmpty {

    print("this video has no sound")

} else {

    print("this video has sound")
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Swift - 检查 url asset 是否有声音 的相关文章

随机推荐

  • Jmeter 中突发模式的负载测试

    我正在运行 1 小时的负载测试 在测试之间我希望场景以 15 分钟的固定间隔运行 1 分钟的持续时间 在jmeter中 目前我可以模拟除突发模式之外的所有其他场景 如何保持延迟15分钟并触发持续1分钟的请求 如何达到突发的TPS 目前我必须
  • 如何将 HH:mm:ss.SSS 转换为毫秒?

    我有一个字符串00 01 30 500这相当于90500毫秒 我尝试使用SimpleDateFormat给出包括当前日期在内的毫秒数 我只需要毫秒级的字符串表示形式 我是否必须编写自定义方法来分割并计算毫秒 或者还有其他方法可以做到这一点吗
  • 在php中获取memcache项的过期时间?

    我在我的网站上缓存推文 过期时间为 30 分钟 当缓存为空时 第一个找到的用户将重新填充它 然而 那时 Twitter API 可能会返回 200 在这种情况下 我想将之前的数据再延长 30 分钟 但之前的数据已经丢失了 因此 我想考虑在过
  • 在 UITableViewController 中弹出多个级别

    我希望能够从 UITableViewController 堆栈中弹出多个视图 例如 在 Apple DrillDownSave 示例中 当查看级别 3 时返回级别 1 或者当查看项目时按按钮返回级别 2 我试过 self navigatio
  • 值为 Empty 的 Variant 类型的变量如何在堆栈上表示?

    以下解释来自Rhino 开发者文档 Empty 当您在 VBScript 中声明变量时 变量的值之前 第一个赋值未定义 或者Empty Dim varValue Empty value 所以基本上 Empty说 我是一个未初始化的变体 如果
  • `int 3` 到底应该做什么?

    根据this int 3从用户空间使用来生成 SIGTRAP 但是 在用户空间下的特权下应该做什么呢 还有更多的东西可以从用户空间 SIGTRAP 生成这样的东西吗 操作码int 3对 UNIX 约定一无所知 例如 SIGTRAP Int
  • 获取Windows 8自动颜色主题的活动颜色

    在 Windows 8 中 我已将配色方案设置为自动 并将壁纸配置为在 x 分钟后更改 配色方案根据活动壁纸而变化 我正在开发一个 WPF 应用程序 并且希望在 Windows 更改配色方案以匹配当前壁纸时更改我的渐变 有没有办法获取当前
  • 解析开源服务器重置密码错误

    I updated the parse server to run on AWS and I get this error when I hit the reset password but the login works I am not
  • 是什么导致了这个属性错误?

    我一直在寻找解决方案 但还没有找到 所以这是我的代码 class snakeGame def init self pygame init self isRunning False self surface None self drawLis
  • RNetLogo 无法在 Mac Yosemite 上运行

    我刚刚尝试过此操作 但收到此错误消息 关于如何修复它有什么想法吗 我使用的是R版本3 1 1 RNetLogo 1 0 1 平台是x86 64 apple darwin13 1 0 64位 Java 7 update 60 Sys sete
  • 如何使用 CasperJS 通过自定义 POST 请求下载文件

    我正在编写一个爬虫 需要使用 POST 下载表单请求后生成的文件 我已成功将 this download url POST Params 用于常规表单 其中一个网站有许多字段使用相同的名称 从而使我无法使用常规下载方法 在尝试了很多事情之后
  • 是否有理由担心表中的列顺序?

    我知道你可以用 FIRST 和 AFTER 来改变 MySQL 中的列顺序 但是你为什么要费心呢 由于好的查询在插入数据时会显式命名列 因此真的有理由关心列在表中的顺序吗 列顺序对我调优的一些数据库 包括 Sql Server Oracle
  • 如何将Recyclerview项目保持在同一位置?

    我有以下问题 我从 Fragment 类中填充 Recyclerview 到目前为止 一切顺利 然而 当我测试我的应用程序并上下滚动填充的回收器列表时 每个项目的内容都会发生变化 也就是它们会被回收 如何保存每个项目的位置并在滚动后将其内容
  • “未找到请求的实体。” - Apps 脚本执行 API 错误

    我们有一个安装在五个 G Suite 帐户中的 Apps 脚本 我正在从 Google App Engine 中部署的 Java 代码调用应用程序脚本 我已将五个刷新令牌存储在属性文件中 并在调用 Apps 脚本之前以循环方式将它们设置在
  • Flask-sqlalchemy:连接两个数据库中的表(不同的绑定键)时遇到问题。出现错误 1146(见下文)

    我正在使用 python 和 sqlalchemy 构建 Flask Restful API 并且尝试连接来自不同数据库的两个表 看来我一次只能搜索一个数据库中的表 我错过了什么吗 from flask sqlalchemy import
  • 通配符匹配严格,但找不到元素“resources”的声明

    我知道这是重复的 你们会因此责备我 但在阅读所有帖子后我没有得到正确的解决方案 我正在尝试在 Spring Source Tool Suite 中构建 Spring 模板应用程序 我收到以下错误 org springframework be
  • QT + OpenSSL + 安卓

    我想设置 OpenSSL 库 对于我的 Qt 项目 在 Linux 下 它可以与内置的 OpenSSL 一起正常工作 我将其添加到我的 pro 文件中 LIBS lcrypto PKGCONFIG openssl 但是如果我在Android
  • CakePHP hasAndBelongsToMany (HABTM) 删除加入记录

    我在用户和位置之间有 HABTM 关系 两种型号都有合适的 hasAndBelongsToMany变量集 当我管理用户位置时 我想删除用户和位置之间的关联 但不删除位置 显然这个位置可能属于其他用户 我希望以下代码仅删除提供 HABTM 关
  • 如何处理android中的复选框ischecked和unchecked事件

    我是 android 新手 我制作了一个简单的数学应用程序 我使用复选框来选择正确的选项 但问题是答案选项不仅是一个 而且是两个 三个意味着多重选择 所以我使用复选框 chkOption setOnCheckedChangeListener
  • Swift - 检查 url asset 是否有声音

    我的屏幕破裂了 而且我的手机没有声音功能 我用相机录制了视频 当我选择视频网址时didFinishPickingMediaWithInfo我尝试检查视频是否有声音 但是player currentItem asset tracks说视频确实