视频下载尺寸不对问题
问题:网盘里面就是正常尺寸,下载下来就多了上下俩条大黑边,右击视频属性发现“帧宽1910,帧高1080”
原理: 你的下载视频不是标准 16:9,而是“近似 16:9”分辨率(1910×1080)
🔍 为什么 百度网盘看时正常?
因为百度网盘的在线播放器会:
✔ 自动拉伸到16:9显示
✔ 忽略一些非标准分辨率的小误差
所以看起来你以为是“真正的 16:9”。
🔍 为什么本地看就出现黑边?
Windows 自带播放器例如“电影和电视(Movies & TV)”不会拉伸,会严格按照像素:
- 你的分辨率 1910×1080 不是 16:9
- 它为了保持不变形 → 在外面加黑边补成 16:9 的画框
于是就出现:
⬛(黑边)
▶▶(你的视频)
⬛(黑边)
黑边不在视频里,是播放器帮你加的。
解决办法
方法①修正所有 MP4视频(再下一遍,有多余文件)
- 把下面代码复制到记事本
- 记事本重命名保存为:
fix_sar.bat - 把
fix_sar.bat放到需要处理的视频文件夹 - 双击运行
- 生成的输出文件会自动命名为:
原文件名_fixed.mp4
fix_sar.bat 内容:
@echo off
echo ===========================================
echo 批量修复视频比例(SAR=1:1)
echo 作者:JINRC 专用脚本
echo ===========================================
echo.
for %%a in (*.mp4) do (
echo 正在处理:%%a
ffmpeg -i "%%a" -c copy -bsf:v "h264_metadata=sample_aspect_ratio=1/1" "%%~na_fixed.mp4"
echo 完成:%%a
echo ------------------------------
)
echo 所有视频处理完毕!
pause
方法②覆盖所有 MP4视频(覆盖删除,无多余文件)
✔ 功能
- 自动修正比例(SAR=1:1)
- 自动覆盖原文件
- 不留下
_fixed.mp4 - 安全,不会误删文件
@echo off
echo ===========================================
echo 批量修复视频比例(覆盖原文件)
echo 作者:JINRC 专用脚本
echo ===========================================
echo.
for %%a in (*.mp4) do (
echo 正在修复:%%a
rem 生成临时文件
ffmpeg -i "%%a" -c copy -bsf:v "h264_metadata=sample_aspect_ratio=1/1" "%%~na_temp.mp4"
rem 删除原文件
del /f /q "%%a"
rem 重命名为原文件名
ren "%%~na_temp.mp4" "%%~nxa"
echo 完成:%%a
echo ------------------------------
)
echo 全部视频修复完毕!
pause
方法③自动判断 + 自动覆盖原文件(先判断,再覆盖删除,无多余文件)
✔ 功能
- 自动读取每个视频的 SAR(sample aspect ratio)
- 只有 SAR≠1:1 才进行修复
- 自动覆盖原文件
- 其他正常比例的视频不会被动
@echo off
echo ===========================================
echo 自动判断视频比例并修复(覆盖原文件)
echo 作者:JINRC 专用脚本
echo ===========================================
echo.
for %%a in (*.mp4) do (
echo 正在检测:%%a
rem 获取视频 SAR(sample aspect ratio)
for /f "tokens=2 delims= " %%s in ('ffprobe -v error -select_streams v:0 -show_entries stream^=sample_aspect_ratio -of default^=nokey^=1:noprint_wrappers^=1 "%%a"') do (
set sar=%%s
)
rem 延迟变量展开
setlocal enabledelayedexpansion
rem 如果取到的 SAR 是 "1:1",跳过处理
if "!sar!"=="1:1" (
echo 比例正常(SAR=1:1),跳过:%%a
endlocal
echo ------------------------------
continue
)
rem 如果 SAR 非 1:1,进行修复
echo SAR=!sar! 需要修复,开始处理:%%a
ffmpeg -i "%%a" -c copy -bsf:v "h264_metadata=sample_aspect_ratio=1/1" "%%~na_temp.mp4"
rem 删除原文件
del /f /q "%%a"
rem 将修复后的文件改名为原名
ren "%%~na_temp.mp4" "%%~nxa"
endlocal
echo 已修复:%%a
echo ------------------------------
)
echo.
echo 全部视频检测与修复完毕!
pause
评论区