具有一个视频轨道和多个音频轨道的 AVPlayer

2024-02-27

我试图让我的应用程序中的播放器能够拥有一个视频轨道和多个音频轨道(针对不同的语言)。

我已经这样做了,但播放器无法启动:

AVMutableComposition *composition = [AVMutableComposition composition];
AVURLAsset* videoAsset = [[AVURLAsset alloc]initWithURL:urlVideo options:nil];

AVMutableCompositionTrack *compositionVideoTrack = [composition addMutableTrackWithMediaType:AVMediaTypeVideo preferredTrackID:kCMPersistentTrackID_Invalid];
NSError* error = NULL;

[compositionVideoTrack insertTimeRange:CMTimeRangeMake(kCMTimeZero,videoAsset.duration) 
                               ofTrack:[[videoAsset tracksWithMediaType:AVMediaTypeVideo]objectAtIndex:0] 
                                atTime:kCMTimeZero
                                 error:&error];

NSMutableArray *allAudio = [[NSMutableArray alloc]init];
for (int i=1; i < [allAudioTracks count]; i++) {
    NSURL *audioURL = [NSURL URLWithString:[NSString stringWithFormat:@"%@%@",URL_MEDIA,[[allAudioTracks objectAtIndex:i]audio]]];
    AVURLAsset* audioAsset = [[AVURLAsset alloc]initWithURL:audioURL options:nil];
    [allAudio addObject:audioAsset];
    [audioAsset release];
    [audioURL release];
}

for (int i=0; i < [allAudio count]; i++) {
    NSError* error = NULL;
    AVURLAsset *audioAsset = (AVURLAsset*)[allAudio objectAtIndex:i];
    //audioAsset = [allAudio objectAtIndex:i];

    AVMutableCompositionTrack *compositionAudioTrack = [composition addMutableTrackWithMediaType:AVMediaTypeAudio preferredTrackID:kCMPersistentTrackID_Invalid];
    [compositionAudioTrack insertTimeRange:CMTimeRangeMake(kCMTimeZero,audioAsset.duration) 
                                    ofTrack:[[audioAsset tracksWithMediaType:AVMediaTypeAudio]objectAtIndex:0]
                                     atTime:kCMTimeZero
                                      error:&error];

    NSLog(@"Error : %@", error);
    //[allCompositionTrack addObject:compositionAudioTrack];
    [audioAsset release];
}

我尝试像这样启动我的播放器:

AVPlayerItem *playerItem = [[AVPlayerItem alloc]initWithAsset:composition];

player = [[AVPlayer alloc]initWithPlayerItem:playerItem];

layerVideo = [AVPlayerLayer playerLayerWithPlayer:player];
layerVideo.frame = CGRectMake(0, 0, 480, 320);
[self.view.layer addSublayer:layerVideo];

[player play];

但没有任何附加。 感谢您的帮助(对我的英语感到抱歉:))


我认为这一行:

NSURL *audioURL = [NSURL URLWithString:[NSString stringWithFormat:@"%@%@",URL_MEDIA,[[allAudioTracks objectAtIndex:i]audio]]];

如果您使用文件,则必须提交 URLWithString 而不是 URLWithString。常见的错误。让我知道。

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

具有一个视频轨道和多个音频轨道的 AVPlayer 的相关文章

  • 聊天室成员列表

    如何检索正在使用的聊天室的成员列表XMPP framework 我尝试使用 void xmppRoom XMPPRoom sender didFetchMembersList NSArray items 但它返回一个空数组 这个问题很老了
  • iOS:GMail API - 通过电子邮件发送附件

    我能够成功发送没有附件的电子邮件 但是 当我尝试使用 GTLUploadParamaters 上传附件时 出现 501 错误 我尝试添加照片库中附件的 NSData 以及仅发送图像的 URL 在这两种情况下我都得到了同样的错误 Create
  • 是否可以通过 UIActivityViewController 共享图像并保留 exif 数据?

    我有一个应用程序 可以通过以下方式将图像保存到相机胶卷中的自定义相册中 library writeImageToSavedPhotosAlbum newTestImage CGImage metadata metadata completi
  • 以编程方式进行排序时检索 ViewController 堆栈

    static func showMenuView parentVC UIViewController let storyboard UIStoryboard name Main bundle nil let resultController
  • 如何同时关闭并弹出到视图控制器

    我的家庭视图控制器是Tabbarcontroller 从选项卡栏我导航到 A Viewcontroller TabarViewcontroller gt A 视图控制器 从A 视图控制器 我推 B 视图控制器 从B Viewcontroll
  • iOS:保持应用程序在后台运行

    如何让我的应用程序在后台运行 我需要越狱我的 iPhone 才能执行此操作吗 我只需要这个应用程序每隔设定的时间间隔从互联网上检查一些内容 并在需要时发出通知 以供我自己使用 是的 不需要越狱 查看本文档的 实现长时间运行的后台任务 部分A
  • 如何改进 iOS 中的 TWTweetComposeViewController 代码?

    我已经实现了以下代码来进行 Twitter 共享 在我的代码中 我尝试测试 iOS 5 如果这不起作用 我会回到使用 ShareKit 的 Twitter 代码进行共享的旧方式 我向同事展示了代码 他建议我的代码可能有缺陷 我需要做两件事
  • 在 Objective C 中使用下划线作为属性名称前缀 [重复]

    这个问题在这里已经有答案了 我以前避免在变量名中使用下划线 这可能是我大学 Java 时代的遗留下来的 因此 当我在 Objective C 中定义属性时 我自然会这样做 In the header interface Whatever N
  • 自动调整大小完成后如何获取帧大小

    我想知道 如何以及何时 viewDidLoad viewWillAppear viewDidAppear 可以获得自动调整大小以适合其父视图的 UIViews 框架大小 从你的问题中不清楚你为什么想要它 但我想这是为了布局你的子视图 幸运的
  • iPhone 上的最大蓝牙连接数是多少?

    如果您对此有任何见解 那么了解连接之间是否存在很大的延迟也会很高兴 蓝牙协议规定连接是点对点的 因此称为 配对 但不同的站可以同时使用不同的配置文件 每个配置文件一次仅支持一个连接 您可以同时与汽车建立立体声耳机连接并与笔记本电脑建立数据连
  • iOS 4.2.1 丢失文件?

    这是我第一次使用最新的 xcode 3 2 5 和新的 iOS 4 2 1 当我在设备上运行应用程序时 我收到以下运行时错误 无法读取 Developer Platforms iPhoneOS platform DeviceSupport
  • MKMapView 中显示多个注释标注

    是否可以同时打开多个标注 代码 void mapViewDidFinishLoadingMap MKMapView theMapView for id
  • 为什么 GDB 调试器不断冻结 Xcode 4?

    这真是一个奇怪的错误 我正在开发一个使用相机源的 iPhone 项目 并通过 OpenGL 着色器运行它以对其应用效果 然而 每次我在代码中简单地创建一个新的 GLfloat 时 调试器都会在启动时冻结 我无法复制和粘贴文本 因为整个 XC
  • 在两个数字之间设置 UILabel 文本动画?

    我是 iPhone 和 Mac 编程新手 之前为 Windows 开发过 我有一个问题 我如何制作动画text的财产UILabel两个数字之间 例如从5 to 80以 Ease Out 风格 是否可以与CoreAnimation 我已经在谷
  • iPhone:在命令行 (Mac OS X) 中压缩 .app 文件会删除 CodeSigning

    我正在尝试使用 TeamCity 对我的 iPhone 应用程序进行简单的构建自动化 但遇到了这个棘手的问题 当我从构建文件夹中手动拾取并安装 app 文件时 效果很好 与 iTunes 顺利同步 我可以在手机上看到该应用程序 但是 当我尝
  • 删除部分(红色删除按钮),UITableViewController - iOS

    我正在尝试做一个分组的 uitableview 并且我已经激活了编辑选项 我希望用户也能够删除整个部分 而不仅仅是特定行 因此 当您单击 编辑 时 每个表格单元格左侧显示的红色减号按钮也应该显示在各个部分 部分标题左侧 有人知道如何做到这一
  • iPhone ImageView序列动画

    嘿 尝试将一个简单的 png 序列动画放入我的应用程序中 我在 IB 中放置了第一个框架 并将图形动画出口连接到它 序列中有 54 个 png 名称为 Comp 1 0000 png 到 Comp 1 00053 png 这是我的代码 vo
  • iOS 4.0 中的应用程序将终止

    iOS 4 0 中未调用 applicationWillTerminate 委托方法 当我点击 主页 按钮时 我看到 applicationWillResignActive 和 applicationDidEnterBackground 委
  • iPhone UIViewController 中的 UIPickerView

    我有一个 xib 其中添加了一个UIViewController名为德尔塔 delta 下的视图由 delta viewcontroller 控制 而不是由文件所有者控制 在三角洲视图中 我有一个UIViewPicker 我的问题是我正在编
  • 在 iPhone 模拟器中从硬盘读取文件

    是否可以将文件 从我的普通文件系统 读入在 iPhone 模拟器上运行的 iPhone 应用程序 据我所知 iPhone 本身没有 用户可访问的 文件系统 但这只是为了测试 并且只能在模拟器中运行 该文件将是一个可以在应用程序运行时编辑的文

随机推荐

  • 清晰高效的 3D 范围树实现

    我正在做这个项目 我必须在 3d 空间中搜索对象 我认为效率是一个巨大的问题范围树非常适合我想要做的事情 间隔树也可以工作 但我不会从树中删除任何内容 一旦我在 3D 空间中添加每个对象 我只会使用该结构进行搜索 以下是我将如何使用该结构
  • 在不同的 Excel 文件中使用一个宏

    我写了一个宏 我想在不同的Excel文件中使用它 这些文件具有几乎相同的表结构但不同的数据 那么是否有可能将我的宏脚本 包含 到任何 Excel 文件中 我已经读过this tip https web archive org web 201
  • PHP 和 PDO:一个连接与多个连接

    在我的 PHP 程序中 我需要针对任何给定的网页请求访问数据库 0 到 3 次 我正在使用 PDO 与 MySQL 交互 首先 我使用如下内容创建一个数据库连接 dbh new PDO mysql host hostname dbname
  • 辅助功能、字段集图例和标题标签

    我正在开发的网站的一个要求是它必须符合 508 标准 目前我们大多数的 html 视图都以 header 开头h1然后该视图中需要的任何内容 现在对于表单 建议使用fieldsets and legend除其他众多准则外 在处理可访问性时也
  • 谷歌分析是否将裸域与 www 子域结合起来?

    我为自己的域安装了谷歌分析 http mydomain com 输入的用户是否会http www mydomain com也被分析脚本计算在内吗 对我来说 这似乎是合乎逻辑的 因为裸域地址与 www 前缀的站点位于同一站点是很常见的 但分析
  • 重置被拒绝的 HTML 通知

    我有一个网络应用程序 在其中使用 HTML 通知 如果用户第一次允许它并开始使用它 它工作正常 但是如果用户第一次通过单击阻止按钮阻止通知 然后尝试通过某些用户手势再次请求权限 则浏览器不会触发 允许 阻止 弹出窗口 这是我第二次触发许可
  • 按键时的 JTable 编辑

    我正在尝试以编程方式开始编辑当前行的第三列JTable在按键上 我已经实现了一个 KeyListener 其中keyReleased 包含这段代码 if e getKeyCode KeyEvent VK ENTER myTab change
  • 在 Powershell 中优雅地停止

    How do I catch and handle Ctrl C in a PowerShell script I understand that I can do this from a cmdlet in v2 by including
  • JVM 何时抛出 OutOfMemoryError

    我们正在运行一个有时会 冻结 的 Java 应用程序 因为某些线程正在使用几乎所有堆 尽管 JVM 执行的 Full GC 持续了 60 秒以上 但应用程序从未因 OutOfMemoryError 错误而终止 我从 Java 文档中读到 如
  • amqp 与 amqplib - 哪个 Node.js amqp 客户端库更好?

    这些 amqp 客户端库之间有什么区别 哪一款最值得推荐 主要区别是什么 我会推荐amqp node https github com squaremo amqp node and bramqp https github com bakke
  • Json.Net 没有以相同的方式序列化小数两次

    我正在测试我正在处理的购物车的 Json NET 序列化 并注意到当我序列化 gt 反序列化 gt 再次序列化时 我发现某些文件的尾随零格式有所不同decimal字段 这是序列化代码 private static void TestRoun
  • 检测 Excel 设置的语言并将其显示在文件的单元格中

    我正在设计一组它们之间相关的相关Excel文件 目标是引用彼此文档的宏可以在任何给定的计算机 路径中工作 因此 我使用了一组相对路径 使宏能够正常工作 我使用了以下功能 CELDA nombrearchivo A 1 nombredearc
  • UIPasteboard 字符串从 Today 扩展返回 null

    似乎在 iOS 9 Xcode 7 beta 5 中 我无法访问 UIPasteboard generalPasteboard string 来自我的 今日 小部件扩展 因为每次无论内容如何 它都会返回 NULL 我浏览了发行说明 但没有看
  • PHP ftp_put 返回“无法建立数据连接:连接被拒绝”

    我有一台通过 PHP 运行一些 FTP 的 PC 我知道它在 1 2 个月前还可以工作 但现在我返回它 发现该 PC 不再工作了 我知道我一直在使用电脑 但我想不出可能会发生什么变化 PHP 抛出错误消息读取 无法建立数据连接 连接被拒绝
  • 本机 PHP 5.6 OpenSSL Composer.phar 无法在 Windows 上启用加密

    我在 Windows 计算机上使用本机 PHP 5 6 时遇到问题 当我尝试运行 Composer 更新 php Composer phar update 时出现此错误 Composer Downloader TransportExcept
  • Google OAuth2 集成错误 400:redirect_uri_mismatch

    我收到这个错误Error 400 redirect uri mismatch即使在给出正确的重定向 uri 之后 您可以查看下面的图片以供参考 它适用于我的本地主机 但它在我的服务器上显示此错误 我的域名看起来像https xxx topL
  • Golang - “go run main.go”和编译之间的区别

    在用 Go 编写了一些脚本之后 我问自己 编译一个 go file 以及稍后的执行和go run FILE go在性能等方面的命令 如果我使用这些方法之一启动 Web 服务有什么优势吗 go run只是一步编译然后运行的快捷方式 虽然它对开
  • 绝对位置和溢出:隐藏

    div div div div 我需要显示比父元素大的子元素 但不删除 Overflow hidden 这可能吗 父元素有position relative 子元素一旦超出其父元素的边界 就会被删除 元素定义了额外的 css 为了清晰起见
  • C++ const 强制转换,不确定这是否安全

    这似乎是一个愚蠢的问题 但我确实需要澄清这一点 这会给我的程序带来任何危险吗 Is the const cast甚至需要 如果我更改输入指针值 它将安全地工作std string或者它会产生未定义的行为 到目前为止 唯一担心的是 每当我修改
  • 具有一个视频轨道和多个音频轨道的 AVPlayer

    我试图让我的应用程序中的播放器能够拥有一个视频轨道和多个音频轨道 针对不同的语言 我已经这样做了 但播放器无法启动 AVMutableComposition composition AVMutableComposition composit