iOS 6 问题将 MPMediaItem 转换为 NSData

2024-04-01

我试过下面的代码。

   -(void)mediaItemToData : (MPMediaItem * ) curItem
{
    NSURL *url = [curItem valueForProperty: MPMediaItemPropertyAssetURL];

    AVURLAsset *songAsset = [AVURLAsset URLAssetWithURL: url options:nil];

    AVAssetExportSession *exporter = [[AVAssetExportSession alloc] initWithAsset: songAsset
                                                                      presetName:AVAssetExportPresetPassthrough];

    exporter.outputFileType =  @"public.mpeg-4";

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString * myDocumentsDirectory = ([paths count] > 0) ? [paths objectAtIndex:0] : nil;

    NSString *exportFile = [myDocumentsDirectory stringByAppendingPathComponent:
                            @"exported.mp4"];

    NSURL *exportURL = [NSURL fileURLWithPath:exportFile];
    exporter.outputURL = exportURL;

    // do the export
    // (completion handler block omitted)
    [exporter exportAsynchronouslyWithCompletionHandler:
     ^{
         NSData *data = [NSData dataWithContentsOfFile: [myDocumentsDirectory
                                                         stringByAppendingPathComponent: @"exported.mp4"]];

         DLog(@"Data %@",data);
     }];
}

此代码在 iOS 5 中运行良好,但现在在 iOS 6 中运行。

iOS6 的任何更改AVAssetExportPresetPassthrough. ???


我找到了iOS 6的解决方案。请参阅下面的修改代码

-(void)mediaItemToData : (MPMediaItem * ) curItem
{
    NSURL *url = [curItem valueForProperty: MPMediaItemPropertyAssetURL];

    AVURLAsset *songAsset = [AVURLAsset URLAssetWithURL: url options:nil];

    AVAssetExportSession *exporter = [[AVAssetExportSession alloc] initWithAsset: songAsset
                                                                      presetName:AVAssetExportPresetAppleM4A];

    exporter.outputFileType =   @"com.apple.m4a-audio";

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString * myDocumentsDirectory = ([paths count] > 0) ? [paths objectAtIndex:0] : nil;

    [[NSDate date] timeIntervalSince1970];
    NSTimeInterval seconds = [[NSDate date] timeIntervalSince1970];
    NSString *intervalSeconds = [NSString stringWithFormat:@"%0.0f",seconds];

    NSString * fileName = [NSString stringWithFormat:@"%@.m4a",intervalSeconds];

    NSString *exportFile = [myDocumentsDirectory stringByAppendingPathComponent:fileName];

    NSURL *exportURL = [NSURL fileURLWithPath:exportFile];
    exporter.outputURL = exportURL;

    // do the export
    // (completion handler block omitted)
    [exporter exportAsynchronouslyWithCompletionHandler:
     ^{
         int exportStatus = exporter.status;

         switch (exportStatus)
         {
             case AVAssetExportSessionStatusFailed:
             {
                 NSError *exportError = exporter.error;
                 NSLog (@"AVAssetExportSessionStatusFailed: %@", exportError);
                 break;
             }
             case AVAssetExportSessionStatusCompleted:
             {
                 NSLog (@"AVAssetExportSessionStatusCompleted");

                 NSData *data = [NSData dataWithContentsOfFile: [myDocumentsDirectory
                                                                 stringByAppendingPathComponent:fileName]];

                 //DLog(@"Data %@",data);
                 data = nil;

                 break;
             }
             case AVAssetExportSessionStatusUnknown:
             {
                 NSLog (@"AVAssetExportSessionStatusUnknown"); break;
             }
             case AVAssetExportSessionStatusExporting:
             {
                 NSLog (@"AVAssetExportSessionStatusExporting"); break;
             }
             case AVAssetExportSessionStatusCancelled:
             {
                 NSLog (@"AVAssetExportSessionStatusCancelled"); break;
             }
             case AVAssetExportSessionStatusWaiting:
             {
                 NSLog (@"AVAssetExportSessionStatusWaiting"); break;
             }
             default:
             {
                 NSLog (@"didn't get export status"); break;
             }
         }
     }];
}

See 这个链接 http://developer.apple.com/library/ios/#documentation/AVFoundation/Reference/AVFoundation_Constants/Reference/reference.html了解更多信息。

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

iOS 6 问题将 MPMediaItem 转换为 NSData 的相关文章

  • iPhone SQLite页面缓存不断增长

    I use sqlite数据库用于存储 还有许多数据库事务 我的问题是 sqlite 页面缓存的内存使用量快速增长 在instruments我可以找到这条线 Graph Category Live Bytes Living Transien
  • UISlider不会自动重绘

    我的应用程序上有一个 UISlider 有时我不仅需要更新它的值 还需要更新它的minimumValue 值已更改 但如果我调用 setValue 方法或为滑块分配新值 它会具有新值 但滑块不会将自身重新绘制到该新值应有的位置 我怎样才能重
  • 使用特定的 url 启动 UIWebview

    我目前有一个包含四个按钮的视图 并且希望能够启动 UIWebview 并为每个不同的按钮提供特定的 url 我目前可以使用 url 从外部启动 safari 我知道我可以使用代码在每个按钮中显示 UIWebview 并且可以在 UIWebv
  • 为具有多个目标和不同平台的项目编写 Podfile

    我正在准备一个支持 OS X 和 iOS 的 Pod 我的 pod 有一些自己的依赖项 这些依赖项在 podspec 文件中定义 因此我使用 Podfile 来管理我用来开发 pod 和运行测试的项目的依赖项 我正在使用 CocoaPods
  • 如何编辑应用程序包中的文件?

    在我的应用程序中 我从存储在捆绑资源中的 CSV 文件加载数据 但是 我希望能够在用户点击 更新 按钮时以编程方式更新此文件 有没有办法以编程方式更改应用程序包中的资源 这是我用来访问该文件的代码 NSString path NSBundl
  • iPhone Twitter SDK 与 iOS 5 设备的集成问题

    我已成功将 Twitter Sharekit 与我的 iPad 应用程序源集成 当我在模拟器和装有 iOS 4 X 的 iPad 1 上测试该应用程序时 它运行完美 并且成功发布了推文 但是 如果我在装有 iOS 5 的 iPad 2 上安
  • UiTextField 和 resignFirstResponder

    我有一个奇怪的设置 我有一个View called View1 and a ViewController call 视图控制器1 in IB View1是 的孩子视图控制器1 Inside View1 我使用代码创建UITextField并
  • 重叠的装载机圆

    我试图重现苹果为应用程序 活动 制作的重叠圆圈 见下图 如果您使用标准贝塞尔路径 起始 结束位置将仅在 0 到 2PI 之间产生影响 例如 如果您尝试填充 4PI 即使使用一些阴影 则无法模拟重叠加载 如何制作类似于苹果解决方案的东西来创建
  • 如何解决malloc_error_break?

    我在 iOS 3 0 模拟器上遇到此错误 但在 3 1 3 和 3 2 模拟器上没有遇到此错误 创建符号断点后malloc error break 我在日志中看到了这一点 Session started at 2010 02 13 19 1
  • Objective-C 中是否有命名初始化方法的约定?

    在可以通过不同的 init 方法初始化的 Objective C 类中 将所有初始化程序共用的初始化代码收集到一个从其他 init 方法 有时也从从 Nib 唤醒 是否有关于如何命名该方法的约定 初始化器 初始化公共 根据 Apple 的说
  • 如何为 NSAttributedString 内的文本设置“隐藏”属性?

    我有一个 Cocoa 应用程序NSTextView控件将其文本保存在NSAttributedString 实际上我相信这是一个NSMutableAttributedString 我可以轻松地在该字符串内的不同字符范围上设置和修改不同的文本属
  • 使用 AVFoundation 裁剪 AVAsset 视频

    我在用AVCaptureMovieFileOutput录制一些视频 我使用显示预览层AVLayerVideoGravityResizeAspectFill稍微放大 我遇到的问题是最终的视频较大 包含预览期间不适合屏幕的额外图像 这是预览和生
  • Facebook iPhone SDK:上传图像时显示进度条

    我想在我的 iPhone 应用程序将图像上传到 Facebook 时显示进度条 是否可以 我可以对我发出的每个 FBRequest 执行此操作吗 我还使用 FBRequest 来检查扩展权限 有时需要花费很多时间 谢谢 对于进度条 您可以做
  • 查找已用应用程序名称的捆绑包/开发人员

    我正在尝试将应用程序上传到应用程序商店并收到以下错误 很容易理解 The App Name you have entered has already been used 该应用程序不在 iTunes 上 有什么方法可以找出谁拥有该应用程序或
  • ARC 不允许将 Objective-C 指针隐式转换为“void *”

    这意味着什么 我有什么选择 ARC 不允许将 Objective C 指针隐式转换为 void 我正在将 Xcode3 项目移植到 iOS5 它使用 AudioSessionInitialize 如下 AudioSessionInitial
  • 如何从 AFNetworking 和 AFJSONRequestOperation 获取可变字典?

    我将 JSONKit 与 AFNetworking 的 AFHTTPClient 带有 AFJSONRequestOperation 一起使用 我似乎无法弄清楚如何触发使用 JSONKit 的 mutableObjectFrom 方法 而不
  • 应用程序打开时处理推送通知

    我正在运行推送通知 有用 我收到通知并使用 application didReceiveRemoteNotification 获取传入数据 然后将用户发送到必要的屏幕 问题是 如果您正在使用该应用程序并收到通知 它会跳转到目标屏幕 而不会发
  • NSCFData fastCharacterContents 崩溃? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我目前在控制台中收到此崩溃日志 20
  • 以编程方式在 App Store 上运行搜索?

    是否可以从我的应用程序中打开 App Store 应用程序并运行搜索 我想看看是否有一个 appstore 类型的 URL 可以使用 就像 mailto 和 sms 分别打开邮件和短信一样 有谁知道这是否可能 编辑 更多信息 我一直在尝试使
  • ios 导航 堆栈操作

    我在尝试从 iOS 应用程序操作导航堆栈时遇到问题 或者至少是由于这种操纵而产生的行为 我的情况 我有 3 个 ViewController 控制器a显示多个级别 控制器 b 是游戏视图 控制器 c 是某种分数 显然 我将在控制器 a 中选

随机推荐

  • Java 反射、类对象

    我的目标是在命令行中读入我希望观察其信息的类的名称 当我在运行前知道类名时 就没有问题了 我似乎无法管理的是如何根据字符串输入创建类对象 public class Tester static void methodInfo2 Object
  • jQuery Ajax 发布 - 404 错误

    我正在发布到 ActionMethod 以检索一些客户计数 该帖子在我的本地机器上运行良好 当部署到另一台服务器时 它会抛出 404 错误 我的帖子如下 我不知道为什么这已经停止工作了 var urlStr Items ItemCount
  • mongodb中db.collection.find()的返回类型是什么

    我正在尝试从 mongodb 连接读取 find 函数的输出 我想将数据库结果存储到 JSON Array 中 称为结果 如下所示 collection db collection users result collection find
  • 从 SQL Server 2005 读取 MS Excel 文件

    我需要从 SQL Server 2005 中的查询读取 Microsoft Excel 2003 文件 xls 然后将其中一些数据插入到一些表中 读取文件然后使用其数据本身并不是问题 但我发现 对于列 有时我会得到 NULL 值 而不是 E
  • 带有 jquery 的 IE 复选框无法正常工作

    我正在尝试在页面上使用多个 asp net 复选框 并相应地禁用它们
  • 完全模态的 WPF 窗口?

    我有一个要求 指定使用 WPF 的通知托盘应用程序必须 基于某些条件 弹出一个全局模式的窗口 这应该阻止用户执行任何操作 即使在 Tray 应用程序之外 直到他们满足一些其他条件 此时它将启用关闭按钮并允许用户将其关闭 如何制作这样一扇窗户
  • 我应该如何正确删除 TFS 分支?

    我想知道我应该如何正确地摆脱不再有任何用途的分支 现在 即使我删除它们并提交 它们仍然在特定分支根 目录 的属性窗口中列为分支 如果我选择合并 我不会选择合并到已删除的分支 这显然是符合预期的 但因此我对属性窗口中仍然显示的分支感到困惑 对
  • 如何在 WP8 地图上创建自动缩放图像

    我正在尝试向地图添加多个图钉 当您缩小到足够大时 图钉就会消失 以使图钉变得如此小 以至于不再渲染它们 我通过以下代码成功实现了这种效果 MapPolygon shape new MapPolygon GeoCoordinateCollec
  • 类型的无效操作数 - C++

    我有一个名为 ThreeDigits 的 C 代码类 我这样重载了 操作数 ThreeDigits ThreeDigits operator const ThreeDigits number const double result getN
  • MongoDB:查询名称中包含空格的键

    我只想从 MongoDB 集合中检索某些键的值 但是 该集合有一些名称中带有 空格 的键 例如 Parent key1 some string key2 some string key 3 some string 我知道这是一种错误的方法
  • 调用未定义函数 Intervention\\Image\\Gd\\imagecreatefromjpeg() - laravel

    我收到此错误消息 Call to undefined function Intervention Image Gd imagecreatefromjpeg 这是我的 php 信息 http behika com http behika co
  • 使用什么:var 还是对象名称类型? [复制]

    这个问题在这里已经有答案了 这是我在编程时总是想知道的一个问题 当我们编写代码时该使用什么 var myFiles Directory GetFiles fullPath or string myFiles Directory GetFil
  • 对于颜色逐渐变化的多个绘图,显示 matplotlib 颜色条而不是图例

    我正在尝试制作一个简单的图 显示属于具有特定顺序的大型数据集的许多曲线 比方说图 1 n 曲线的形状随着n的增加而逐渐变化 读者能否准确地看到哪个图属于 n 的哪个值并不重要 但他们应该能够猜测 n 的数量级 因此我做了这样的事情 nVal
  • 如何在 Scala 编译器插件中生成文本形式的新源代码?

    我刚刚完成了 Java 6 编译器插件的第一个版本 它根据注释自动生成包装器 代理 适配器 委托 您可以随意称呼它 由于我正在进行 Java Scala 混合项目 因此我希望能够在 Scala 代码中使用相同的注释 并获得相同的生成代码 当
  • 如何导航到 Clion 链接库中的源代码?

    我有一个链接多个静态库的项目 例如 libModule a 当我尝试导航到模块库内的类时 Clion 仅将我带到标头声明并在那里停止导航 我希望能够深入研究模块库内函数的定义 我遇到了同样的问题 这就是我所做的 在 Clion 中 我通过在
  • Angular2 错误 TS1146:需要声明

    Angular2 新手 我正在使用 Angular io 中的种子文件 但是当我运行 npm start 时 出现 tsc 编译器错误 tsc p src src app app module ts 11 3 错误 TS1146 需要声明
  • 向几何体添加细分

    我正在尝试向球体添加细分 如下所示 http stemkoski github com Three js Subdivision Cube html http stemkoski github com Three js Subdivisio
  • Ajax POST 到控制器操作以更新视图模型,然后重新加载 div

    我仍然对 ajax 的使用感到不安 所以我的实现中存在一些漏洞 我正在尝试发布到一个控制器操作 该操作将调用存储过程来更新我的视图模型 然后重新加载将显示信息的 div 阿贾克斯帖子 order summary panel click fu
  • 在Python中使用@staticmethod和全局函数有什么区别?

    我读过了 staticmethod 和 classmethod 有什么区别 Python https stackoverflow com questions 136097 what is the difference between sta
  • iOS 6 问题将 MPMediaItem 转换为 NSData

    我试过下面的代码 void mediaItemToData MPMediaItem curItem NSURL url curItem valueForProperty MPMediaItemPropertyAssetURL AVURLAs