ffmpeg concat 产生 DTS 乱序错误

2024-02-08

我正在关注有关如何操作的文档连接 https://trac.ffmpeg.org/wiki/Concatenate文件与 ffmpeg 但在这个过程中我看到很多警告,输出视频在第一个块后停止,但音频继续播放。

这是我用来连接文件的命令:

ffmpeg -f concat -i mylist.txt -c copy output.webm

这是我看到的警告:

[concat @ 0x7fee11822a00] DTS 0 < 2500 out of order
[webm @ 0x7fee11011000] Non-monotonous DTS in output stream 0:0; previous: 2500, current: 0; changing to 2500. This may result in incorrect timestamps in the output file.

视频文件来自外部源。我当前的解决方案是将每个文件分别重新编码为 mp4,然后将它们连接在一起,然后将整个文件重新编码回 webm。当然,这需要一些重要的时间,但我找不到其他解决方案。


FFMPEG 连接的所有视频都应具有匹配的编码、fps 等,否则您将得到意外的结果。 我想,如果您的视频来自不同的来源,那么如果不重新编码就很难通过。我必须查看很多解决方案,有效的解决方案会建议将您的视频转换为相同的中间格式,然后运行您的 concat 命令。

尽管这种方法确实有效,但它并不能解释出了什么问题。Gyan 的评论回答了这个问题 https://stackoverflow.com/questions/31691943/ffmpeg-concat-poduces-dts-out-of-order-errors#comment57572244_34918815.

首先,使用 ffprobe 测试您的输入文件:ffprobe video1.mp4

你会得到这样的输出。

视频1.mp4:

Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], 1556 kb/s, 24 fps, 24 tbr, 12288 tbn, 48 tbc (default)

视频2.mp4:

Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], 6454 kb/s, 24 fps, 24 tbr, 90k tbn, 48 tbc (default)

尽管我的 FPS 和其他参数相同,但我得到了 3.1 fps 的 58 秒视频,而不是预期的 8 秒 @24fps 视频。这里重要的参数是时基tbn,即12288 tbn vs 90k tbn。 连接不会重新编码输入视频,仅使用第一个输入视频的时基,从而弄乱所有后续视频。

更改第一个文件的时基:

ffmpeg -i video1.mp4 -video_track_timescale 90000 video1_fixed.mp4

现在连接产生正确的结果:

( echo file 'video2.mp4' & echo file 'video1_fixed.mp4' ) | ffmpeg -y -protocol_whitelist file,pipe -f concat -safe 0 -i pipe: -c copy output.mp4
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ffmpeg concat 产生 DTS 乱序错误 的相关文章

  • Qt WinRT 应用程序无法访问文件权限被拒绝

    我需要使用 Qt 和 FFMPEG 开发 WinRT 应用程序 我根据指令构建了 WinRT 的 ffmpeghere https github com Microsoft FFmpegInterop我可以将库与我的项目链接起来 现在我需要
  • iOS 视频压缩 Swift iOS 8 损坏的视频文件

    我正在尝试压缩用户相机从 UIImagePickerController 拍摄的视频 不是现有视频 而是动态视频 以上传到我的服务器 并花费少量时间来完成此操作 因此较小的尺寸是理想的选择 而不是 30 较新质量的相机为 45 mb 这是在
  • Android 从 C++ 端播放原始音频

    我需要能够在 Android 系统的 C 端以自定义文件格式传输音频 我正在致力于移植自定义媒体播放器 并且需要能够打开自定义文件并从中传输音频 这很重要 因为我认为从性能角度来看将整个播放器移植到 JAVA 是不可行的 并且通过 JNI
  • 在 Chrome 中为

    我已经看到这个问题多次出现 但没有任何明确的解决方案 我正在加载一个简单的视频
  • 了解 JavaScript - 资源

    使用 StackOverflow 的微型 Digit Blog 功能进行描述here https stackoverflow com about 我想发布以下我刚刚看到的 我觉得很有趣的谷歌技术谈话视频 我一直在理解 javascript
  • 如何仅在使用 ffmpeg 添加相同速度的分离音频流时更改视频速度?

    我正在使用 ffmpeg 作为视频过滤器 但是 当我改变视频速度时 我遇到了问题 音频比视频长 ffmpeg i INPUT mp4 filter v setpts 0 5 PTS shortest y preset ultrafast O
  • Windows 上的 ffmpeg-android ndk

    我正在尝试编译 bash 文件 带有 android ndk 的 ffmpeg 我收到如下错误 arm linux androideabi gcc 无法创建可执行文件 C 编译器测试失败 Makefile 2 config mak 没有这样
  • 如何从任何网站下载视频

    我只是想知道如何从任何网站下载视频的总体思路 我尝试的事情 我检查页面 在视频属性标记中看到 blob URL 将 blob URL 复制粘贴到浏览器中 但无法打开 I also look around the Developer tool
  • 不使用控件时,视频元素在 Chrome 中消失

    So I think这是一个浏览器错误 它出现在一个更复杂的设计 网站中 但我已经进行了很好的尝试 简化了我的代码和设计等 并发现了以下内容 嵌入时
  • 如何在控制台中播放和暂停 Youtube 视频?

    转到一个 url 例如 https www youtube com embed zvCBSSwgtg4 https www youtube com embed zvCBSSwgtg4 并打开 chrome 控制台 我想知道什么 javasc
  • Bash 脚本:自动为 mpeg-dash 进行 ffmpeg 编码

    我正在编写一个 bash 文件来创建视频编码和串联 以供 dash 实时流媒体使用 基本上 它读取输入视频文件夹 将所有视频编码为三种分辨率格式 然后将它们连接起来创建三个适应集 DIAGRAM 该脚本检查 fps 一致性 如果输入不是 1
  • 两个图像之间的视频变形,FFMPEG/Minterpolate

    我正在尝试在 Ubuntu Linux 上的 bash 脚本中使用两个帧 png 图像 和 ffmpeg 的 minterpolate 过滤器制作一个快速且简单的变形视频 目的是稍后使用变形作为不同视频编辑器中相似视频之间的过渡 它适用于
  • 在 Android 上提取/修改视频帧

    我有一个视频文件 我想获取视频的每一帧并对帧进行一些修改 例如在其中绘制另一个位图 放置一些文本等 Android 中是否有任何 API 框架可用于从视频中获取帧 我在 iOS 中使用他们的 AVFramework 做了类似的事情 如果可以
  • Flutter :已处置的 CameraController,在已处置的 CameraController 上调用了 buildPreview()

    如何正确初始化和处理相机控制器 我在用camera 0 9 4 5 与许多人一起 其他错误 https stackoverflow com questions 70592464 flutter change the path of reco
  • 在 Android 和 iOS 上播放的视频/音频编解码器设置是什么

    哪些编解码器设置将生成可在 Android videoView 和 iOS UIWebView 上播放的有效视频 安卓 http developer android com guide appendix media formats html
  • 使用 Coldfusion 的 CFFILE 标签监控 FFMpeg 的进度日志

    我想学习如何使用 ColdFusion 中的 CFFILE 标签来读取文本文件的内容 就我而言 该文本文件是 FFMpeg 在对媒体文件进行转码时生成的进度日志 我想编写一个 ColdFusion 脚本 该脚本将定期轮询进度日志 直到日志表
  • 在 Windows Phone 8 中以编程方式下载媒体文件

    我们的应用程序是基于视频 音频的应用程序 我们已将所有媒体上传到 Windows Azure 上 但需要方便用户点播下载音视频文件 以便在本地播放 所以我需要以编程方式下载音频 视频文件并将其保存在IsolatedStorage中 我们有每
  • 在 Java 中处理视频(DVD、.avi .mkv)

    在寻找了一个像样的 Java 视频播放库之后 我发现了问题 周围的每个人都在尖叫不要使用 JMF 因为它已经过时 过时并且需要用户安装它 其他替代方案 例如 VLCJ 如果可以工作的话似乎不错 但仍然相对不稳定并且依赖大量本机代码 并且至于
  • 加载 HTML 格式的大型视频文件

    这是我的问题 我想播放存储在 S3 存储桶中的大型视频文件 3 6Gb 但该文件似乎太大 并且加载 30 秒后页面崩溃 这是我播放视频的代码 var video document getElementById video const med
  • FFmpeg av_read_frame 无法正确读取帧?

    好吧 我已经下载了一些 yuv 格式的原始 UHD 序列 并在 mp4 容器中使用 ffmpeg 对其进行编码 h264 4 4 4 100 质量 25fps 当我使用 ffprobe 找出编码了多少帧时 我得到 600 所以这是 24 秒

随机推荐

  • 如何从 VBA 创建单独的 CSV 文件?

    我需要将一些结果输出为 csv 文件 稍后由另一个进程解析 为了产生这些结果 我有一本巨大的工作簿 其中包含我需要的所有宏和函数 是否可以从 VBA 创建 单独的 csv 文件 是否可以使用 VBA 功能来写入它 而不仅仅是以 原始文本 方
  • Android 和客户端证书

    我已经寻找这个问题几个星期了 似乎无法在任何地方找到答案 我正在尝试为 Android 执行以下操作 此代码来自我编写的 C 应用程序 但我正在将其移植到 Android Web 端点需要将证书附加到相互身份验证的请求中才能进行 Web 服
  • PyCrypto : AssertionError("PID 检查失败。fork() 后必须重新初始化 RNG。提示:尝试 Random.atfork()")

    我正在创建执行不同任务的各种流程 其中之一 而且只有一个 具有创建 PyCrypto 对象的安全模块 所以我的程序启动 创建各种进程 处理消息的进程使用安全模块进行解密 我收到以下错误 firstSymKeybin self cipher
  • 为什么 Node.js 的 fs.readFile() 返回缓冲区而不是字符串?

    我正在尝试阅读以下内容test txt 位于 Javascript 源代码的同一文件夹中 并使用以下代码显示它 var fs require fs fs readFile test txt function err data if err
  • iPhone 上的 OpenGL 渐变填充看起来有条纹

    当我使用 OpenGL 绘制渐变填充时 输出看起来是条纹的 即它仅使用大约四分之一的可能颜色进行渲染 所有颜色都会出现在渲染缓冲区中 但不会出现在实际输出中 我正在运行 iOS4 的 iPhone 3G 上进行开发 有任何想法吗 Peter
  • 如何在 R 中永久更改 .libPaths() ?

    每当我使用以下命令更改库路径顺序时 libPaths 功能 如果我重新启动 R 它会恢复为默认值 如何永久更改此设置 我正在Linux计算集群上工作 我没有管理员权限 所以我想将我的本地库永久添加到R中 每次启动 R 时我都必须这样做 li
  • 如何捕获“远程服务器返回错误:(403) 禁止”的异常。

    我收到 远程服务器返回错误 403 禁止 错误并想捕获这个异常 我猜想 HttpException 块应该捕获它 如下所示 但事实并非如此 catch HttpException wex if wex GetHttpCode ToStrin
  • post-commit 挂钩在 svn commit 上产生错误,但在命令行上手动运行时有效

    我目前正在尝试为我的颠覆存储库设置提交后挂钩以发送电子邮件通知 我正在使用颠覆1 7 8 我的提交后挂钩脚本如下 bin sh REPOS 1 REV 2 REPOS hooks mailer py commit REPOS REV REP
  • 显示向量寄存器的约定

    是否有显示 写入大型寄存器的约定 例如英特尔 AVX 指令集中提供的寄存器 例如 如果最低有效字节为 1 最高有效字节为 20 其他位置为 0xmm寄存器 对于按字节显示是以下首选 小端 1 0 0 0 0 20 或者这是首选 20 0 0
  • 实体框架 4.1 - 如何“强制”EF 转到数据库而不是使用图形?

    这是场景 我有一个网站 在单个 HTTP 请求 HTTP POST 中 我需要执行以下操作 抓住一个物体 比方说 标签 保存其他一些对象 假设 问题 获取 标签 的新副本 重定向到另一个页面 该页面需要 标签 的新副本 在幕后 2 涉及影响
  • 支持 IAccesible 接口以在文本编辑器中移动插入符号的正确解决方案是什么?

    我想从头开始实现一个支持 IAccessible 接口的文本编辑器 我正在使用 MFC 和 Win32 API 当记事本等标准文本编辑器中的插入符号位置发生变化时 讲述人 JAWS 等客户端工具将发音与插入符号移动相对应的字母 单词或行 我
  • 在 Entity Framework Core 中编写实体 POCO 类的正确方法是什么?

    EF Core 默认具有 代码优先心态 即它应该以代码优先的方式使用 尽管支持数据库优先方法 但它被描述为只不过是对现有数据库进行逆向工程 创建它的代码优先表示 我的意思是 手动 代码 代码优先 创建的模型 POCO 类 和从数据库生成的模
  • 通过 ssh 转发 SIGTERM

    我希望 ssh 将 SIGTERM 信号转发到远程命令 ssh root localhost root print signal py 获取ssh的PID ps aux grep print signal 杀死匹配的 ssh 进程 kill
  • 如何在用户默认中保存对象列表?

    我的目标是 struct Order Codable var item id String var quantity Int 0 var image String var name String var desc String 函数的类别是
  • 如何在matlab中绘制地圈?

    如何在matlab中绘制地球圈 By Geosphere我的意思是球体上离散化点的方式 例如 3Ds Max 中的 Geosphere On the image below it is shown Sphere on the left an
  • 我如何检索通过java play中的post传递的数据

    这是我的代码 我需要检索 POST 中发送的数据 play db jpa Transactional public static Result registered String fullname String email String p
  • 重新编码鼠标 mids 对象

    我有一个mids对象创建自mice 我想重新编码一些估算变量并保留mids目的 我知道我可以转换mids反对 长 complete 但我想保留mids对象 因为它有一些额外的用途 这是一个使用的示例nhanes数据集 跑步mice 为变量创
  • 如何将 div 高度设置为所选打印纸张的 100%?

    如何将高度设置为所选打印纸张的 100 CSS width 100 height 100 margin auto margin top 0px important border 1px solid 当我在 Google Chrome 中打印
  • 所有本机修订的数据库在哪里?

    我已经阅读了所有 SO 问题 编码恐怖文章 并用 Google 搜索了我的大脑 寻找修订控制数据的最佳方法 它们都可以工作 并且都有基于用例等的适当实现 我真正想知道的是为什么没有编写一个数据库来原生支持数据级别的修改 让我感到困惑的是 A
  • ffmpeg concat 产生 DTS 乱序错误

    我正在关注有关如何操作的文档连接 https trac ffmpeg org wiki Concatenate文件与 ffmpeg 但在这个过程中我看到很多警告 输出视频在第一个块后停止 但音频继续播放 这是我用来连接文件的命令 ffmpe