Skip to content

chenmaonn/Linux-Video-Transcoding-Script

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 

Repository files navigation

Video Transcoder – 批量视频转码工具

一个功能完备的 Bash 脚本,用于将常见视频格式批量转换为 ProRes、H.264 / H.265 (NVENC) 或 DNxHD 等专业编码,支持 GPU 硬件加速、多任务并行处理、交互式配置与实时进度反馈。适用于视频剪辑、归档、跨平台兼容性转换等场景。


主要特性

  • 多种输出编码格式
    支持 ProRes 422 HQ、DNxHD(CPU 编码),以及 H.264/H.265 无损或高质量 NVENC(NVIDIA GPU 编码)。

  • 硬件加速解码与编码

    • 检测 NVIDIA GPU 并自动启用 CUDA 解码(ProRes/DNxHD 时)
    • NVENC 编码时使用 GPU 编码器,解码回退至 CPU 以避免格式兼容性问题
  • 灵活的音频处理
    可选复制原始音轨(无需重新编码)或转码为 PCM、AAC、MP3、AC‑3 等多种格式。

  • 交互式操作

    • 启动时询问输出目录
    • 支持当前目录下覆盖原文件或重命名输出(_Export 后缀)
    • 首次选择后,后续文件自动沿用相同操作。
  • 并行批量处理
    可指定同时转换的文件数量(默认 1),充分利用多核 CPU 和多路 NVENC 引擎。

  • 实时进度显示

    • 串行模式下显示整体进度条、已用时间、估算剩余时间
    • 并行模式下每个文件独立显示百分比进度
  • 扩展性
    支持输入扩展名:.mov .mp4 .mkv .avi .m4v .3gp .flv .wmv .webm .mpeg .mpg(不区分大小写)


系统要求

  • 操作系统:Linux(Ubuntu 20.04+,等发行版)

  • 依赖软件

    • ffmpeg(含 ffprobe) – 推荐使用版本 4.0 以上
    • bc – 用于浮点数计算
    • bash 4.0 以上

安装

git clone https://github.com/chenmaonn/Linux-Video-Transcoding-Script.git
cd Linux-Video-Transcoding-Script
chmod +x Convert.sh

您也可以直接将 Convert.sh 复制到您的 PATH 目录下使用。

##使用方法 进入存放待转换视频的目录,运行脚本:

./Convert.sh

随后按照交互提示操作:

  1. 输出目录
    输入转换后文件的存放路径(直接回车使用当前目录)。

  2. 视频编码
    从列表中选择目标编码格式(例如 1 为 ProRes,2 为 H.264 无损 NVENC)。

  3. 音频处理
    选择音频编码或直接复制原始音轨(如 1 为复制)。

  4. 并行任务数
    输入同时转换的文件数量(默认 1),若输入大于 1 则启用并行模式。

  5. 操作模式 (若输出目录为当前目录)

    • 输入 o 或直接回车:覆盖原文件(会删除原始文件)
    • 输入 r:重命名输出文件(在文件名后添加 _Export,原文件保留)
      若输出目录不同于当前目录,则默认覆盖(原文件始终保留)。

之后脚本将自动处理目录下所有支持的视频文件,并在每个文件转换期间显示进度。

音频选项说明

  • 复制源音轨:直接拷贝原始音频流,不重新编码,速度快且无损。
  • PCM 无损:转为未压缩的线性 PCM,兼容性优秀但文件大。
  • AAC 192k:高质量有损音频,适合大部分分发场景。
  • MP3 320k:兼容性广,品质较高。
  • AC‑3 448k:杜比数字环绕声,常用于影音文件。

并行处理机制

  • 当并行数大于 1 时,脚本会同时启动多个 ffmpeg 进程。
  • 每个文件独立显示百分比进度,最终汇总成功与失败计数。
  • 建议根据 CPU 核心数和 GPU 编码引擎数量合理设置并行数(例如 RTX 30 系列可支持 2~3 路 NVENC 并行)。

注意事项

  • 覆盖模式会删除原文件,请确保已备份重要数据。
  • NVENC 编码时,脚本自动禁用 GPU 解码以避免兼容性问题,此时解码由 CPU 承担,但编码仍由 GPU 负责,整体性能通常仍优于纯 CPU 方案。
  • 若输入文件像素格式与编码器要求不符,脚本会自动添加格式转换滤镜(例如 ProRes 需要 yuva444p10le)。
  • 并行任务数过高可能导致系统资源耗尽,请根据实际硬件谨慎设置。
  • 如果转换失败,脚本会在终端输出 FFmpeg 的具体错误信息。

##自定义与扩展

  • 您可以修改脚本顶部的 extensions 数组来增减支持的输入文件后缀名。
  • 也可以调整视频编码参数(如 -cq 值、-preset 等级)以平衡速度与质量。

贡献与反馈

欢迎提交 Issue 或 Pull Request。若您发现兼容性问题或有改进建议,请附上 FFmpeg 版本、GPU 型号及错误日志。

About

一个通过FFmpeg进行转码的linux脚本,可用于解决linux版达芬奇不支持编码格式的bug。

Topics

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Contributors

Languages