视频转码

ffmpeg-transcode

使用 ffmpeg 批量转码目录或单个视频,默认针对 RockChip MPP 硬件编解码优化,并支持 dry-run 预演。

Linux FFmpegRockChip MPP视频转码dry-run

Shortcuts

一键命令

Linux FFmpeg需确认

下载脚本

下载 ffmpeg-transcode 脚本到当前目录,并赋予执行权限。

bash ffmpeg-transcode-download
curl -fsSL https://tools.smy.me/source/ffmpeg-transcode/transcode.sh -o transcode.sh && chmod +x transcode.sh
Linux 交互式FFmpeg

交互式转码

下载脚本后在本地打开交互模式,逐步选择源目录、目标目录、编码器、分辨率和码率。

bash ffmpeg-transcode-interactive
bash ./transcode.sh
Linux RockChip MPP需确认

静默转码

下载脚本后,使用默认配置转码源目录或单个视频到目标目录;默认采用 RockChip MPP 硬件编解码、HEVC、720p、2000kbps。

bash ffmpeg-transcode-run
bash ./transcode.sh {{sourcePath}} {{destPath}}
Linux dry-run调试

dry-run 预演

下载脚本后,只输出将执行的 ffmpeg 命令,不实际转码或复制文件,适合先检查路径和硬件加速参数。

bash ffmpeg-transcode-dry-run
bash ./transcode.sh --dry-run {{sourcePath}} {{destPath}}
Linux 修改 shell 配置

安装 transcode 别名

将当前目录下的 transcode.sh 注册为 transcode 命令别名,写入当前用户的 shell 配置文件。

bash ffmpeg-transcode-install-alias
bash ./transcode.sh --install
Linux help

查看帮助

查看脚本支持的选项、参数和示例。

bash ffmpeg-transcode-help
bash ./transcode.sh --help

README

完整说明

ffmpeg-transcode 是一个面向 Linux 服务器的视频批量转码脚本,适合把目录或单个视频转成 MP4,并保留源目录下的相对目录结构。脚本默认偏向 RockChip MPP 硬件编解码场景,也可以在交互模式中选择软件编解码。

文件说明

  • transcode.sh:Bash 转码脚本,负责扫描源目录、复制字幕和其他文件、调用 ffmpeg 转码视频,并把日志写入脚本同目录下的 transcode.log

使用方法

从工具站下载脚本并赋予执行权限:

curl -fsSL https://<tools-origin>/source/ffmpeg-transcode/transcode.sh -o transcode.sh
chmod +x transcode.sh

本地交互模式会依次询问源路径、目标路径、输出格式、编解码方案、视频高度和目标码率:

bash ./transcode.sh

提供源路径和目标路径时会进入静默模式,使用默认配置转码:

bash ./transcode.sh /path/to/source_videos /path/to/output_videos

转码单个文件:

bash ./transcode.sh /path/to/source_videos/movie.mkv /path/to/output_videos

只检查将要执行的 ffmpeg 命令,不实际转码或复制文件:

bash ./transcode.sh --dry-run /path/to/source_videos /path/to/output_videos

安装 transcode 别名到 ~/.bashrc~/.zshrc

bash ./transcode.sh --install

查看帮助:

bash ./transcode.sh --help

参数说明

  • --dry-run:启用预演模式,只输出将执行的 ffmpeg 命令,不转码、不复制文件。
  • --install:把当前脚本路径注册为 transcode 命令别名,支持 Bash 和 Zsh。
  • --help:显示脚本帮助。
  • 源目录或源文件:包含待转码视频的目录,或一个具体视频文件路径。省略时进入交互模式。
  • 目标目录:输出文件目录。提供源路径时必须同时提供目标目录;目标目录不存在时脚本会尝试创建。

静默模式默认配置:

  • 输出格式:hevc
  • 编解码方案:RockChip MPP 硬件解码 + RockChip MPP 硬件编码
  • 输出高度:720p,不会主动放大低分辨率视频
  • 目标视频码率:2000 kbps

交互模式可选择:

  • 输出格式:h264hevc
  • 编解码方案:软件解码 + MPP 硬件编码、MPP 硬件解码 + MPP 硬件编码、软件解码 + 软件编码
  • 输出高度:4K1080p720p480p360p 或保持原始高度
  • 目标码率:10002000400060008000 kbps,或输入自定义 kbps 数值

支持的视频扩展名包括 mp4mkvaviwmvflvmovm4vrmrmvb3gpvob。支持复制的字幕扩展名包括 srtassssavttsubidx

注意事项

  • 脚本需要 Linux Bash,并且 ffmpegffprobe 必须已经安装且可在 PATH 中找到。
  • 静默模式默认使用 h264_rkmpp / hevc_rkmpprkmpp 硬件解码参数;非 RockChip 设备建议使用交互模式选择软件编解码,或先执行 --dry-run 检查命令。
  • 目录模式会把字幕和其他非视频文件复制到目标目录,并保持相对目录结构;视频输出扩展名固定为 .mp4
  • 源路径和目标路径不能相同,避免覆盖源文件。
  • 输出文件已存在时,ffmpeg 会直接覆盖;转码失败时脚本会尝试删除部分生成的输出文件。
  • 脚本会在自身所在目录写入 transcode.log,请确认运行用户对该目录有写权限。
  • --install 会修改当前用户的 ~/.bashrc~/.zshrc。执行前建议确认没有同名 transcode 别名。