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

2024-05-09 23:52

本文主要是介绍【视频格式转换】【ffmepg】对mp4文件进行重新编码输出新的mp4文件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

【视频格式转换】【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种框架模型,这样可以大大提高做事效率和成功率。确实是的。

这篇关于【视频格式转换】【ffmepg】对mp4文件进行重新编码输出新的mp4文件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/974841

相关文章

Java实现字节字符转bcd编码

《Java实现字节字符转bcd编码》BCD是一种将十进制数字编码为二进制的表示方式,常用于数字显示和存储,本文将介绍如何在Java中实现字节字符转BCD码的过程,需要的小伙伴可以了解下... 目录前言BCD码是什么Java实现字节转bcd编码方法补充总结前言BCD码(Binary-Coded Decima

使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解

《使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解》本文详细介绍了如何使用Python通过ncmdump工具批量将.ncm音频转换为.mp3的步骤,包括安装、配置ffmpeg环... 目录1. 前言2. 安装 ncmdump3. 实现 .ncm 转 .mp34. 执行过程5. 执行结

Java实现将HTML文件与字符串转换为图片

《Java实现将HTML文件与字符串转换为图片》在Java开发中,我们经常会遇到将HTML内容转换为图片的需求,本文小编就来和大家详细讲讲如何使用FreeSpire.DocforJava库来实现这一功... 目录前言核心实现:html 转图片完整代码场景 1:转换本地 HTML 文件为图片场景 2:转换 H

Python中Json和其他类型相互转换的实现示例

《Python中Json和其他类型相互转换的实现示例》本文介绍了在Python中使用json模块实现json数据与dict、object之间的高效转换,包括loads(),load(),dumps()... 项目中经常会用到json格式转为object对象、dict字典格式等。在此做个记录,方便后续用到该方

从基础到高级详解Python数值格式化输出的完全指南

《从基础到高级详解Python数值格式化输出的完全指南》在数据分析、金融计算和科学报告领域,数值格式化是提升可读性和专业性的关键技术,本文将深入解析Python中数值格式化输出的相关方法,感兴趣的小伙... 目录引言:数值格式化的核心价值一、基础格式化方法1.1 三种核心格式化方式对比1.2 基础格式化示例

Nginx中配置使用非默认80端口进行服务的完整指南

《Nginx中配置使用非默认80端口进行服务的完整指南》在实际生产环境中,我们经常需要将Nginx配置在其他端口上运行,本文将详细介绍如何在Nginx中配置使用非默认端口进行服务,希望对大家有所帮助... 目录一、为什么需要使用非默认端口二、配置Nginx使用非默认端口的基本方法2.1 修改listen指令

使用Java读取本地文件并转换为MultipartFile对象的方法

《使用Java读取本地文件并转换为MultipartFile对象的方法》在许多JavaWeb应用中,我们经常会遇到将本地文件上传至服务器或其他系统的需求,在这种场景下,MultipartFile对象非... 目录1. 基本需求2. 自定义 MultipartFile 类3. 实现代码4. 代码解析5. 自定

MySQL按时间维度对亿级数据表进行平滑分表

《MySQL按时间维度对亿级数据表进行平滑分表》本文将以一个真实的4亿数据表分表案例为基础,详细介绍如何在不影响线上业务的情况下,完成按时间维度分表的完整过程,感兴趣的小伙伴可以了解一下... 目录引言一、为什么我们需要分表1.1 单表数据量过大的问题1.2 分表方案选型二、分表前的准备工作2.1 数据评估

Java 中编码与解码的具体实现方法

《Java中编码与解码的具体实现方法》在Java中,字符编码与解码是处理数据的重要组成部分,正确的编码和解码可以确保字符数据在存储、传输、读取时不会出现乱码,本文将详细介绍Java中字符编码与解码的... 目录Java 中编码与解码的实现详解1. 什么是字符编码与解码?1.1 字符编码(Encoding)1

java -jar example.jar 产生的日志输出到指定文件的方法

《java-jarexample.jar产生的日志输出到指定文件的方法》这篇文章给大家介绍java-jarexample.jar产生的日志输出到指定文件的方法,本文给大家介绍的非常详细,对大家的... 目录怎么让 Java -jar example.jar 产生的日志输出到指定文件一、方法1:使用重定向1、