FFmpeg转码分辨率会变化的视频

遇到一个需求:

有一个H264的视频流源文件,希望能够想办法转换成mp4的格式。

存在的问题:

mp4格式的视频大多数是固定分辨率的,比如960*480,如果h264视频流文件是固定尺寸的,那就没有任何问题。

但是,这个视频流文件!

不!是!固!定!尺!寸!的!

问题截图:

举个例子,我已手机的录屏为例,当手机横屏的时候,分辨率是 宽度*高度,当手机竖屏时,分辨率是高度*宽度。如果强行转码的话,会出现下面的情况。

图像就会直接被压缩了。

解决方案

1. 确保视频流文件的正确性

下载一个vlc media player,直接播放H264文件,查看文件是不是正常的。

2. 使用ffmpeg解码

复制代码
ffmpeg -i .\输入文件.h264 -vf "scale=w=960:h=540:force_original_aspect_ratio=decrease,pad=960:540:(ow-iw)/2:(oh-ih)/2" -c:v libx264 -preset ultrafast -r 10 -b:a 32k  -preset fast -strict experimental 输出文件.mp4 -y

3. 主要参数说明

下面对主要起作用的参数说明一下,毕竟要改变分辨率,又要Hold mp4的固定分辨率,就需要做一些填充:

scale: 固定目标分辨率

force_original_aspect_ratio=decrease·表示保持原始宽高比,并且只会减小分辨率以适应目标分辨率。

pad过滤器用于填充视频,确保输出分辨率为1920x1080,同时保持视频在中央,任何多余的部分都会被填充为黑色。

-crf 参数用于指定视频的质量。CRF (Constant Rate Factor) 是一种基于质量的压缩方法,值越小,视频质量越高,文件越大。通常,推荐的范围是18到28之间。(这个参数效果一般,所以最终没使用,可以酌情使用)

-preset·参数用于指定编码速度和文件大小的平衡。可用的预设包括ultrafast、superfast.veryfast、faster、fast、medium等,速度从快到慢,文件大小也相应变化。

4. 结果展示

最终结果就是一个设定了scale大小的mp4,但是当分辨率不一致的时候,会居中,两边填充黑色背景,对视频要求没那么高的可以这样处理。

相关推荐
Agudamu11611 小时前
AI 视频学习笔记工具拆解:4款工具谁能把视频变成复习资料
人工智能·学习·音视频
全速向光3 小时前
VLC Media Player:开源全能跨平台播放器详解
开源·音视频
黄一一9112433 小时前
跨平台视频图片压缩互转!离线视频压缩工具!Github开源轻松无损压缩视频!Win/Mac/Linux三端通用开源工具
windows·macos·音视频·开源软件
科技拓维者3 小时前
短视频配音音效去哪里找比较好?短视频创作者音效指南
人工智能·音视频
javaDocker4 小时前
电视台自建AI短视频生产线与算力底座:技术架构、关键实现与优化实践
人工智能·架构·音视频
2601_962066935 小时前
短视频批量制作怎么做?2026年用 huasheng-cli 的 --json 与退出码,一张选题表批量出片
json·音视频
半壶清水6 小时前
使用Cambridge Dictionary Audio Downloader插件下载剑桥在线词典音频完整教程
音视频
刘广睿7 小时前
视频字幕从提取到烧录:SRT/ASS 格式与 ffmpeg 字幕滤镜全流程
ffmpeg·音视频·效率工具·剪辑·字幕
刘广睿9 小时前
多素材对比同步播放怎么设计?对齐播放与差异高亮的功能复盘
音视频·效率工具·架构设计·桌面客户端·素材管理
2601_9621007310 小时前
AI批量生成视频的工程化复盘(2026):一条能断点续跑、不重复扣量的出片脚本
人工智能·音视频