【视频格式转换】【ffmepg】对mp4文件进行重新编码输出新的mp4文件

server/2024/10/21 17:27:30/

【视频格式转换】【ffmepg】对mp4文件进行重新编码输出新的mp4文件

背景

  之前开发调试了个能正常调用ffmpeg解码mp4文件得到yuv数据的testbed(把ffmpeg开源库移植并交叉编译到一个嵌入式平台),用了好几年了,今天用来挂测一批新的采集视频mp4文件,发现必崩溃,定位排查是ffmpeg解码有内存泄露,最后oom了。但是挂测另外一批视频并不会出现内存泄露情况,不过还是查看了下代码,以及完善流程,怎么改调试都会必现,下载最新的源码调试也会,就差对着开源代码查了,想着ffmpeg的广泛性,按理内部不至于有这么大的bug。又问了下两批视频采集的不同之处,对比发现,正常能解码的mp4文件是用potplayer或者公司其他团队基于ffmpeg库开发demo工具采集的,而异常崩溃的视频则是软龙格软件采集的。看来是软龙格公司软件可能又特殊什么操作吧,用ffmpeg命令看了下两种mp4文件信息比对,有个底层encoder版本号不一样。然后想着把会崩溃的mp4文件解码后再重新编码成新的mp4文件挂测试下,发现可以正常了。

解决方案

  使用ffmpeg命令把原来的mp4文件重新解码再编码成新的mp4文件,命令如下:

ffmpeg -i input.mp4 -c:v libx264 -x264-params "bframes=0:ref=1" -pix_fmt nv12 output.mp4

总结

  任何问题都可以利用简单的输入->处理->输出的模型进行高效分析定位,先从输入定位,对齐输入,看看输入是否一样,如果输入一致,输出不一样,那么处理环节肯定有问题;如果输入不一致,输出完全不符合预期,那处理环节不够健壮,有时间应该完善处理,如果不重要不紧急,可以变成同输入,总之灵活应用;芒格说过,每个人都应该学习掌握100种框架模型,这样可以大大提高做事效率和成功率。确实是的。


http://www.ppmy.cn/server/38939.html

相关文章

PROXY代理学习

代理(PROXY)学习 在计算机领域中,代理(Proxy)是一种特殊的网络服务,它充当客户端和服务器之间的中介,使得客户端能够通过代理与另一台服务器进行通信。代理服务可以用于多种目的,包括…

接口框架项目实战-pytest(四)请求封装接口关联

把所有的请求方法集中到一个地方 目的:利于后期维护和加入日志 异常处理 等 目的:框架封装好之后,功能测试不需要写代码,也能执行自动化测试 config.yml base:base_php_url: http://47.107.116.139base_wx_url: https://api.weix…

MySQL中逗号分隔字段查询方法

MySQL中逗号分隔字段查询 select * FROM th_work_gand_up where FIND_IN_SET(11,lane_code) ; select * from th_work_gand_up where lane_code regexp (^|,)(11|1)(,|$);

Git系列:git push (-u) 与 git branch (-u)

💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

设计模式——适配器模式(Adapter)

适配器模式(Adapter Pattern)是一种结构型设计模式,主要用于将一个类的接口转换成客户端所期望的另一种接口,从而使得原本因接口不兼容而无法一起工作的类能够协同工作。 适配器模式主要解决两类问题: 类的接口不兼容…

【stomp 实战】spring websocket 接收消息源码分析

后台消息的发送过程,我们通过spring websocket用户消息发送源码分析已经了解了。我们再来分析一下后端接收消息的过程。这个过程和后端发送消息过程有点类似。 前端发送消息 前端发送消息给服务端的示例如下: 发送给目的/app/echo一个消息。 //主动发…

CTFHUB-技能树-Web题-RCE(远程代码执行)-eval执行

CTFHUB-技能树-Web题-RCE(远程代码执行) 文章目录 CTFHUB-技能树-Web题-RCE(远程代码执行)eval执行解题方法:构造网址,查找当前目录文件并没有发现flag,接着查看上一级目录接着查看上一级接着查看上一级目录…