FFmpeg iOS -> 输出文件无效

2024-06-28

我正在使用以下库将 mkv 转换为 mp4:https://github.com/SterlingOnLoop/FFmpegWrapper https://github.com/SterlingOnLoop/FFmpegWrapper.

- (void)convertUsingFFmpegWrapper {
    NSString *mp4Extension = @"mp4";
    NSString *mkvExtension = @"mkv";

    NSString *videoName = @"file1";
//    NSString *videoName = @"file2";

    NSString *mkvVideoFilePath = [[NSBundle mainBundle] pathForResource:videoName ofType:mkvExtension];
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = paths[0];
    NSString *mp4VideoFilePath = [NSString stringWithFormat:@"%@/%@.%@", documentsDirectory, videoName, mp4Extension];

    FFmpegWrapper *ffmpegWrapper = [[FFmpegWrapper alloc] init];
    NSDictionary *options = @{kFFmpegInputFormatKey: mkvExtension, kFFmpegOutputFormatKey: mp4Extension};
    [ffmpegWrapper convertInputPath:mkvVideoFilePath outputPath:mp4VideoFilePath options:options progressBlock:nil completionBlock:^(BOOL success, NSError *error) {
        if (success && !error) {
            // delete mp4 file
        } else if (error) {
            NSLog(@"Error during .MKV -> .MP4 conversion occured: %@", error.localizedDescription);
        } else {
            NSLog(@"Unknown error during .MKV -> .MP4 conversion occured.");
        }
    }];
}

以下是 LLDB 中有关自动检测到的编解码器类型的值:

(lldb) po inputStream.codecName
aac

(lldb) po outputStream.codecName
aac

我应该在这里提到,最初该文件是在 Linux 上使用以下编解码器生成的:vaapiencode_h264对于视频和faac为了声音。

问题是该文件根本不起作用。我在控制台中收到大量日志,其中最重要的是:

[aac @ 0x7f7f65019200] Format aac detected only with low score of 1, misdetection possible!

在库内部,使用以下函数:

int streamInfoValue = avformat_find_stream_info(inputFormatContext, NULL);

正是这一行把日志搞得一团糟。显然,如果没有这一行,我会收到参数无效的错误。

当该行打开时,将生成 .mp4 文件。它持续> 5 分钟,而输入文件长11 秒。它无法在我的 Mac 上使用 VLC 播放(似乎已损坏)。我收到以下错误(我粘贴了其中的一些错误,可以找到完整的曲目here https://gist.github.com/natalia-osa/988b6f84f0e1da5519b3b7fbd2c574c8,这里太长了,无法引用):

[aac @ 0x7ff07c00b000] More than one AAC RDB per ADTS frame is not implemented. Update your FFmpeg version to the newest one from Git. If the problem still occurs, it means that your file has a feature which has not been implemented.
[aac @ 0x7ff07c00b000] channel element 0.0 is not allocated
[aac @ 0x7ff07c00b000] Sample rate index in program config element does not match the sample rate index configured by the container.
[aac @ 0x7ff07c00b000] Inconsistent channel configuration.
[aac @ 0x7ff07c00b000] get_buffer() failed
[aac @ 0x7ff07c00b000] channel element 3.10 is not allocated
[aac @ 0x7ff07c00b000] Reserved bit set.
[aac @ 0x7ff07c00b000] invalid band type
[aac @ 0x7ff07c00b000] Number of scalefactor bands in group (50) exceeds limit (41).
[aac @ 0x7ff07c00b000] Reserved bit set.
[aac @ 0x7ff07c00b000] Number of bands (7) exceeds limit (4).
[aac @ 0x7ff07c00b000] Reserved bit set.
[aac @ 0x7ff07c00b000] Dependent coupling is not supported together with LTP

知道如何简单地将 mkv 转换为 mp4 吗?我不知道为什么会出现错误。我声称该文件不是 aac,但 linux 使用这种编码,所以它应该是有效的。


我已经检查过你的档案了。我看到的主要问题是:

  • 没有音频比特率(即:应设置128kbps)
  • 不知何故,元数据将 AAC 版本列为 4(这是什么意思??)。
  • 编解码器 ID 应该是40但在 MKV 的元数据中它被列为A_AAC/MPEG4/LC
  • 字节中没有通道位置标志(即:前 L+R)

不管怎样,ffmpeg(命令行)转换你的 MKV 没有任何错误。
如果这是新的请告诉我重新编码的 MP4 http://blog.vcone.co.uk/wp-content/uploads/2016/07/mkv_demo_NEW.mp4版本在你这边工作正常。

ffmpeg 设置很简单:ffmpeg -i mkv_demo.mkv -c:v copy demo_new.mp4

不幸的是,我不在 iOS 中编写代码,所以我无法向您展示“固定”代码。也许稍后有人可以提供帮助。看看这个其他的Answer https://stackoverflow.com/a/34984037/2057709以获得额外的提示(使其像上面显示的命令行片段一样工作)...

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

FFmpeg iOS -> 输出文件无效 的相关文章

  • 在 Swift 中将 JSON 解析为 NSArray

    我有一个json数据 我可以将所有项目作为字符串或字典获取 但我无法将 付款 项目作为数组获取 我想从 付款 获取数据并转换 NSDictionary 我尝试了几种方法 但没有成功 这是我的 JSON 数据 last name aaa co
  • 在pushViewController之前设置视图控制器属性

    在我的应用程序中 我向视图添加了标签 将其连接到插座 但当我第一次从另一个视图控制器分配此插座然后调用时 什么也没有显示pushViewController来显示它 这是推送下一个显示标签的视图之前的代码 CustomViewControl
  • iPhone 上的 COMET(服务器推送到客户端)[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在寻求从我的服务器到我的 iPhone 应用程序建立某种套接字 COMET 类型的功能 本质上 任何时候用户设法在服务器上设置任意
  • 在启用垂直分页的 UIScrollView 中垂直滚动

    希望你能给我一些指导 我有一个带有垂直分页的滚动视图设置 我的问题是视图大于屏幕 垂直 我想要的效果是让视图滚动到底部 然后翻到下一页 就像我下面的图片试图描绘的那样 我尝试将滚动视图的大小和内容大小设置为视图的大小 这确实正确地偏移了视图
  • CreatorUserRecordID.recordName 包含“__defaultOwner__”,而不是仪表板中显示的 UUID

    正在下载一个CKRecord from CloudKit当绘制创作者时recordName 我可以看到这个 lldb po record creatorUserRecordID recordName defaultOwner 但是 仪表板显
  • registerUserNotificationSettings 不显示提示 iOS 8

    我似乎无法收到显示的提示registerUserNotificationSettings在 iOS 8 1 或 8 2 中 这就是我正在做的didFinishLaunchingWithOptions if application respo
  • 如何让appium测试在iOS上运行得更快?

    目前 我正在使用 appium 进行 iOS 应用程序测试 并且我已经在 mac mini 机器上用 Java 编写了测试 我正在使用 Jenkins CI 来运行我的测试 我想更快地运行我的测试 因为目前它在 iOS 模拟器上相当慢 例如
  • 连接到进程后 Xcode 控制台为空[重复]

    这个问题在这里已经有答案了 我在 iPhone 上构建了一个应用程序 退出它 再次启动它 然后成功附加到 Xcode 中的进程 现在我在日志导航器中运行了调试 但我的控制台是空的 我不应该在那里看到所有常用的控制台输出吗 您可以在设备日志中
  • 是否可以更改 UISearchBar 占位符的对齐方式?

    由于输入语言不同 我需要以不同的对齐方式显示 UISearchBar I saw 这个答案 https stackoverflow com questions 9251592 how to change the alignment of a
  • 如何在选项卡视图控制器故事板应用程序中添加更多选项卡? [复制]

    这个问题在这里已经有答案了 可能的重复 Xcode 4 2 选项卡式应用程序 添加新选项卡视图 https stackoverflow com questions 7952576 xcode 4 2 tabbed application a
  • 文件从 iOS 应用程序传输到 Mac 应用程序?

    是否可以在 Mac 应用程序和 iOS 应用程序之间传输文件 我想通过 Wifi 将 iOS 应用程序中的文档目录中的文件传输到 Mac 应用程序 我该怎么做 嗯 从 iOS 5 开始 就有了 iCloud 由于这仍处于保密协议之下 我只需
  • Reactive Cocoa - 以编程方式设置文本时,不会调用 UITextView 的 rac_textSignal

    我正在实现一个聊天 UI 并使用 Reactive Cocoa 在用户键入时调整聊天气泡的大小 目前 我正在根据 textview 更新 UI 的布局rac textSignal 一切都工作得很好 除了一点 当用户sends消息中 我以编程
  • 应用程序挂在 __psynch_mutexwait

    我们的应用程序似乎半随机地挂在 psynch mutexwait 处 它似乎与更新 CoreData 中存储的一堆数据的后台进程有关 但我完全无法弄清楚是谁锁定了导致死锁的原因 以下是 lldb 给我的完整堆栈跟踪 这显然是不完整的 并且线
  • 升级到 Xcode 3.2.5 后出现“Base SDK Missing”

    所以我采取了升级到 Xcode 3 2 5 iPhone SDK 4 2 的步骤 现在我无法运行到设备 我现在总是在开发环境中看到这一点 在我当前的项目中 当进入项目设置时 我只能将 Base SDK 设置为 iOS 4 2 但这并不能改变
  • DispatchQueue.main.sync 返回 exc_bad_instruction Swift 3

    我想在我的应用程序中显示 UIActivityIndi catorView 但是当我调用sync方法从主线程 应用程序崩溃并出现错误 exc bad instruction code exc i386 invop subcode 0x0 我
  • Objective-C 创建只有一个实例的类的正确方法

    我正在尝试实现一个类 该类的子类NSObject直接 在使用该实例的应用程序运行的整个过程中只能有一个实例可用 目前我有这种方法 MyClass h interface MyClass NSObject MyClass instance e
  • 导航标题颜色更改问题

    当我弹出控制器时 我面临的导航标题颜色没有改变 请找到下面的代码 ProfilescreenVC swift override func viewWillAppear animated Bool super viewWillAppear a
  • 为什么我的侧载应用程序在几天后停止工作?

    所以我实际上对 iOS 开发有点陌生 然而 在学习如何操作后 我已经制作了一些应用程序 但我注意到的一件事是 如果我使用手机来测试我的应用程序 该应用程序将在插入时运行 也许一两天后 但在那之后 如果我尝试打开它 它就会停止工作并崩溃 就像
  • 比较 UITextView 中的文本?

    我们如何比较输入的文本UITextVIew用代码中的默认文本来确定它们是否相同 您可以使用以下方法NSString http developer apple com library mac documentation Cocoa Refer
  • UIProgressView 没有更新?

    我已经开始在 iOS5 中使用 UIProgressView 但还没有真正使用它 我在更新视图时遇到问题 每次更新进度后 我都有一组连续的操作 问题是 进度视图不是一点一点更新的 而是在全部完成之后才更新 事情是这样的 float cnt

随机推荐