如何在 swift 中将 .caf 音频文件转换为 .mp4 文件

2023-12-03

我正在使用设备麦克风录制音频AVAudioRecorder返回文件在.caf该格式只能在 Apple 设备上播放,而不能在 Android 设备上播放。由于苹果不支持.mp3文件,所以我想将其转换为.mp4上传到服务器之前格式化。 是.mp4仅适用于音频吗?我可以将其转换为AVAssetExportSession ?

以下是录音机代码:

func setupAudioRecorder ()
    {

    let fileMgr = FileManager.default
    let dirPaths = fileMgr.urls(for:.documentDirectory,
                                in:.userDomainMask)

    let soundFileURL = dirPaths[0].appendingPathComponent("myaudio.caf")

    let recordSettings =
        [AVEncoderAudioQualityKey: AVAudioQuality.min.rawValue,
         AVEncoderBitRateKey: 16,
         AVNumberOfChannelsKey: 2,
         AVSampleRateKey: 44100.0] as [String : Any]

    do {
        try audioSession.setCategory(
            AVAudioSessionCategoryPlayAndRecord)
    } catch let error as NSError {
        print("audioSession error: \(error.localizedDescription)")
    }

    do {
        try audioRecorder = AVAudioRecorder(url: soundFileURL,
                                            settings: recordSettings as [String : AnyObject])
        audioRecorder?.prepareToRecord()
    } catch let error as NSError {
        print("audioSession error: \(error.localizedDescription)")
    }
}

经过大量搜索后我能够转换.caf into .mp4使用这段代码

    let audioURL = ".caf audio file url"

    let fileMgr = FileManager.default

    let dirPaths = fileMgr.urls(for: .documentDirectory,
                                in: .userDomainMask)

    let outputUrl = dirPaths[0].appendingPathComponent("audiosound.mp4")

    let asset = AVAsset.init(url: audioURL)

    let exportSession = AVAssetExportSession.init(asset: asset, presetName: AVAssetExportPresetHighestQuality)

    // remove file if already exits
    let fileManager = FileManager.default
    do{
        try? fileManager.removeItem(at: outputUrl)

    }catch{
        print("can't")
    }


    exportSession?.outputFileType = AVFileTypeMPEG4

    exportSession?.outputURL = outputUrl

    exportSession?.metadata = asset.metadata

    exportSession?.exportAsynchronously(completionHandler: {
        if (exportSession?.status == .completed)
        {
            print("AV export succeeded.")

           // outputUrl to post Audio on server

        }
        else if (exportSession?.status == .cancelled)
        {
            print("AV export cancelled.")
        }
        else
        {
            print ("Error is \(String(describing: exportSession?.error))")

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

如何在 swift 中将 .caf 音频文件转换为 .mp4 文件 的相关文章

  • 如何本地化 iOS 故事板

    我有一个包含一些视图的 iPhone 故事板 例如 导航项标题名为News 应翻译为其他语言 当我向故事板添加新的本地化版本时 它会为新语言创建当前故事板的副本 在这里我可以更改导航项的标题 但对我来说它似乎不太有用 如果我的故事板包含 1
  • iOS FacebookSDK + 解析 SDK + GoogleMaps SDK

    我搜索了很多 然后我意识到 ObjC标记那个GoogleMapSDK需要 但不能很好地配合ParseSDK and FacebookSDK 所以我阅读了所有的 stackoverflow 答案并尝试解决我的问题 问题还没有解决 我执行的步骤
  • iOS 确定视频中的帧数

    如果我有一个 Swift 中的 MPMoviePlayerController MPMoviePlayerController mp MPMoviePlayerController contentURL url 有没有办法获取视频中的帧数u
  • Swift 语言中的 #ifdef 替换

    在 C C Objective C 中 您可以使用编译器预处理器定义宏 此外 您可以使用编译器预处理器包含 排除代码的某些部分 ifdef DEBUG Debug only code endif Swift 中有类似的解决方案吗 是的 你可
  • 如何将 NSMutableArray 添加到 NSMutableArray Objective-c

    我正在从 Java 切换到 Objective c 但遇到了一些困难 我已经搜索过这个问题但没有取得太大成功 我有一个存储 NSMutableArrays 的 NSMutableArray 如何向数组添加数组 您可以在数组中存储对另一个数组
  • 如何在导航栏上添加 UIView?

    我需要覆盖UINavigationBar with UIView像这儿 除了使用带有按钮返回的自定义 UIView 作为导航栏之外 还有其他方法可以做到这一点吗 您可以将子视图添加到应用程序的基本视图 UIApplication share
  • 上下文菜单未在 SwiftUI 中更新

    我正在尝试设置 SwiftUI contextMenu带有一个切换按钮Bool价值 上下文菜单的按钮文本应该在以下情况下更改 Bool切换 但上下文菜单不会更新 有没有办法强制更新上下文菜单 描述问题的示例代码 import SwiftUI
  • Bootstrap 响应式表格在 iOS 设备上无法垂直滚动

    这就是我所拥有的 div class table responsive table class table style background transparent table div 我正在使用以下 bootstrap css 文件 ht
  • 广告标识符和标识符ForVendor返回“00000000-0000-0000-0000-000000000000”

    我已经实现了这个方法来获得advertisingIdentifier and identifierForVendor NSString advertisingIdentifier if NSClassFromString ASIdentif
  • 使用javascript以编程方式触发iOS safari中的复制菜单?

    我正在尝试实现一种用户友好的方式 将一些文本从文本输入字段复制到 iOS Safari 上的剪贴板 我知道无法在这个平台上以编程方式完成此操作 但我希望能够尽可能地指导用户体验 在 iOS Safari 上 当用户手动突出显示某些文本时 会
  • iOS 有 INTERNET 权限吗?

    我在 iOS 设备上的 flutter dio 包上遇到了一个奇怪的问题 我编写了一个向 url 发送 GET 请求的应用程序 Android 上一切正常 但 iOS 上的请求似乎无法通过 没有发生任何错误 什么也没有 我在 Android
  • UITableViewCell 内嵌套 UIStackView 内的 UILabel 有时会被截断

    我的一个表设置中有一个表视图单元格 其中包含以下视图层次结构 外部水平 stackview 固定到单元格内容视图的尾部 前部 底部和顶部边缘 右侧标签固定到其父 stackViewHackView 的尾部 前部 底部和顶部边缘 在我的控制器
  • Swift 中通过可选绑定进行安全(边界检查)数组查找?

    如果我在 Swift 中有一个数组 并尝试访问超出范围的索引 则会出现一个不足为奇的运行时错误 var str Apple Banana Coconut str 0 Apple str 3 EXC BAD INSTRUCTION 但是 我会
  • 使用未声明的类型“对象”

    这太奇怪了 通常我可以理解未声明的类 但这是声称 Object 类本身未声明 NSObject 可以工作 但我的项目设置方式我需要它是一个纯 Swift 对象 我的类标题如下所示 import UIKit import Foundation
  • AdMob 和 DFP 广告联盟之间的区别?

    我正在尝试在我的 iOS 应用程序上显示横幅广告和插页式广告 但现在我对广告网络感到困惑 AdMob 与 DFP 有何不同 哪一种更适合投放广告 有人可以提供帮助吗 提前致谢 AdMob 是一个广告网络 作为发布商 您可以通过展示从网络投放
  • iOS 搜索栏不显示结果

    更新 这实际上有效 我的自定义单元格的样式尚未出现 因此单元格看起来是空白的 那我怎样才能得到searchResultsTableView使用我的自定义单元格 我在表格视图中实现了搜索栏 当我调试时搜索 过滤所有工作 但是当我在搜索栏中输入
  • 获取所有ios应用程序的全局列表[重复]

    这个问题在这里已经有答案了 我想对苹果应用商店进行一些全球统计 一个瓶颈是至少获取所有当前活动应用程序的 ID 这 9 位数字 有谁知道如何获取 iOS 应用商店中当前活动应用程序的所有 id 的完整列表 更好的是特定类别的所有 ID 例如
  • 如何制作像 Facebook 应用程序一样的登录屏幕?

    如何制作像 Facebook 应用程序一样带有 电子邮件 和 密码 文本字段的登录屏幕 Facebook登入 http extdesenv com wp content uploads 2012 05 facebook login ios
  • 如何安全地重命名 iOS 分发配置文件?

    我几个小时前刚刚提交了我的第一个应用程序 现在处于 等待审核 状态 但我犯了一个错误 我已经命名了我的分配配置文件My Company Distribution Profile 我应该做的事情被命名为我的发行版配置文件My GAME Dis
  • 从 URL 解析 JSON 最终出现错误 - Swift 5

    我正在尝试用 swift 编写一个函数 从 URL JSON 获取数据 并将其分配给 swift 中的变量 这是函数 func getBikeData guard let url URL string https api citybik e

随机推荐

  • 添加不同长度的熊猫列

    我在 pandas 中添加列时遇到问题 我有DataFrame 维度是nxk 在这个过程中 我需要添加维度为 mx1 的列 其中 m 1 n 但我不知道 m 当我尝试这样做时 df Name column data type data li
  • 什么时候使用括号,什么时候不使用?

    我怎么能说 var myFunction function setTimeout myFunction 1000 myFunction 为什么函数会调用setTimeout不需要括号 但最后一行需要吗 Nutshell myFunction
  • 确定两个 360x180 等距柱状全景图像之间的相机旋转

    我有 n 帧 360x180 全景图像 我想根据两个连续图像之间的比较来确定相机的旋转 对于这个项目 可以安全地假设图像中可见的所有特征都在无穷远 我 今天 是 OpenCV 的新手 肯定需要做更多的阅读 我有一个应用程序可以使用 SIFT
  • 在 Windows 上的软件中关闭 USB 设备的电源

    我想通过 Windows 上的软件重新启动 USB 设备 我正在开发一个小型 USB 电源微控制器 该芯片将在电源循环后恢复到本机行为并允许代码下载 由于我的代码会在出现问题时使设备崩溃 使其忽略所有 USB 命令 因此我必须从系统中物理拔
  • 将带有图像的 HTML5 画布另存为图像

    我正在尝试将带有图像的画布保存为 PNG 但是当我尝试这样做时 var myCanvas document getElementById myCanvas var img document createElement img var ctx
  • 带有自定义视图的 AlertDialog:调整大小以包裹视图的内容

    我在正在构建的应用程序中遇到了这个问题 请忽略所有设计缺陷和缺乏最佳实践方法 这纯粹是为了展示我无法解决的问题的示例 I have DialogFragment它返回一个基本的AlertDialog与定制View设置使用AlertDialo
  • jquery发送post数据而不定义url

    是否可以通过ajax或post发送数据而不定义url 这是我正在尝试工作的代码 gll delete click function var gll gll val var gll string gll split var gll id gl
  • jquery 替换不起作用

    DEMO 你好 我正在尝试删除 JS 中的箭头 但似乎替换不起作用 a class pr page prev Previous a a class pr page next Next a pr page prev text replace
  • 在 Windows 10 TP 上使用 VS-2015 CTP 5 和 Python 3.5a 编译 boost-python 教程

    我正在尝试获取boost python 扩展模块教程在 Windows 10 中使用现代 C 14 编译器 我已经使用 vc 14 VS 2015 CTP 5 下载了最新版本的 boost 1 57 和 python 3 5a 源代码 我使
  • c++ - SendInput() 无法正确管理 Alt 代码

    在我正在开发的程序中 我必须模拟击键 为此我使用SendInput 方法 传递一个向量作为参数 该向量包含作为击键一部分的输入 我当前的代码似乎可以与我正在测试的所有组合正常工作 Alt 代码除外 这就是我目前所做的 Press ALT i
  • PHP 数组转换为对象的效率?

    据我了解 PHPstdClass当代码嵌套得足够深以至于它实际上很重要时 对象通常比数组更快 如果我通过类型转换来定义 效率会受到怎样的影响stdClass飞行中的对象 var object array one gt 1 two gt 2
  • 从PDF中提取图像,如何处理JBIG2编码

    我有一堆 PDF 文件 其中一些是纯文本 但有些完全或部分保存为 每页一个图像 因为它们是从扫描仪生成的 我需要提取所有图像包含在 PDF 中 然后分别检查每个图像 我能够提取大部分图像在 SO 中找到一个 python 脚本 请参阅问题
  • 使用证书和 C# 连接到 Exchange Online

    有人使用 C 在线连接 Exchange 吗 我遇到了一个似乎无法取得进展的问题 我有以下代码片段尝试连接到在线交换 public Runspace getSpace String schema http schemas microsoft
  • Font Awesome 在本地工作,但在 Heroku 上不行

    所以我安装了 font awesome gem 一切看起来都很好 使用最新版本等 也包含在我的 application css 中 require font awesome 当我从本地查看时 结果很好并且字形图标出现了 当我将其上传到her
  • ASP.Net MVC 控制器在部署到 IIS 7 时导致“未找到”错误

    我正在使用 ASP Net MVC 开发一个网站 我在 Home 控制器中有一个方法 它在调用时返回部分视图 问题是当我使用 jQuery 调用控制器方法时 出现 404 Not Found 错误 仅当应用程序部署在 IIS 7 上时才会发
  • enableEventValidation 和 validateRequest 区别

    enableEventValidation 和 validateRequest 之间有什么区别 虽然前者是由控件引起的回发 回调 我假设只有服务器端 请告知 但后者是在每个请求上 这无论如何都是由控件回发引起的 或者 validateReq
  • Python中的数组是按值赋值还是按引用赋值?

    我想知道为什么当我删除原始数组时它会影响复制的数组 arr 1 2 3 arr1 arr del arr print arr1 this prints 但是当我修改原始数组的元素时 对复制的数组没有影响 arr 1 2 3 arr1 arr
  • 如何在 Bootstrap 弹出窗口中插入关闭按钮

    JS function example popover placement bottom html true title span class text info strong title strong span
  • DbContext 放弃更改而不进行处理

    我有一个桌面客户端应用程序 它使用模式窗口来设置分层对象的属性 由于这是一个客户端应用程序 并且对 DbContext 的访问不是线程化的 因此我在主表单上使用了一个长期运行的上下文 该上下文被传递给模态子项 这些模式窗口使用 Proper
  • 如何在 swift 中将 .caf 音频文件转换为 .mp4 文件

    我正在使用设备麦克风录制音频AVAudioRecorder返回文件在 caf该格式只能在 Apple 设备上播放 而不能在 Android 设备上播放 由于苹果不支持 mp3文件 所以我想将其转换为 mp4上传到服务器之前格式化 是 mp4