You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何借助1.mp4的ffprobe信息用ffmpeg转换2.mp4实现参数一致

自动匹配视频参数的最优实现方案

核心思路是通过命令行工具将ffprobe提取的参考视频参数直接作为变量传入ffmpeg,全程无需手动复制参数,可一键执行。

1. 提取参考视频参数的通用命令

你可以用ffprobe直接输出指定参数的纯数值结果,无需额外解析冗余信息:

  • 提取视频流核心参数(分辨率、帧率、编码、码率):
    ffprobe -v error -select_streams v:0 -show_entries stream=width,height,r_frame_rate,codec_name,bit_rate -of default=noprint_wrappers=1:nokey=1 1.mp4
  • 提取音频流核心参数(编码、码率、采样率、声道数):
    ffprobe -v error -select_streams a:0 -show_entries stream=codec_name,bit_rate,sample_rate,channels -of default=noprint_wrappers=1:nokey=1 1.mp4

2. 一键执行脚本示例(Linux/macOS Bash环境)

把参数读取和转码逻辑合并成脚本,直接运行即可输出和1.mp4参数完全一致的视频:

# 读取1.mp4的视频参数并处理帧率格式
read v_width v_height v_fps_num v_fps_den v_codec v_bitrate < <(ffprobe -v error -select_streams v:0 -show_entries stream=width,height,r_frame_rate,codec_name,bit_rate -of default=noprint_wrappers=1:nokey=1 1.mp4 | tr '/' ' ')
v_fps=$(echo "scale=2; $v_fps_num / $v_fps_den" | bc)

# 读取1.mp4的音频参数
read a_codec a_bitrate a_sample_rate a_channels < <(ffprobe -v error -select_streams a:0 -show_entries stream=codec_name,bit_rate,sample_rate,channels -of default=noprint_wrappers=1:nokey=1 1.mp4)

# 执行转码生成匹配参数的视频
ffmpeg -i 2.mp4 \
-vcodec $v_codec -b:v $v_bitrate -s ${v_width}x${v_height} -r $v_fps \
-acodec $a_codec -b:a $a_bitrate -ar $a_sample_rate -ac $a_channels \
-y output.mp4

补充说明

  • 如需匹配更多参数(如色彩空间、GOP长度、CRF值等),只需在ffprobe的show_entries字段新增对应参数项,同时在ffmpeg命令中添加对应设置规则即可
  • Windows环境可将上述逻辑调整为批处理脚本,变量赋值替换为批处理的set语法即可
  • 若遇编码不兼容问题,可手动固定vcodec/acodec的取值为通用编码器(如libx264/aac),其余参数依然保持自动读取,不影响自动化效率
  • 若优先匹配画质而非固定码率,可将-b:v $v_bitrate替换为-crf参数,数值可通过ffprobe提取1.mp4的实际CRF值获取

内容的提问来源于stack exchange,提问作者Parsa Noori

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 09:39:00