ffmpeg 调用 NVIDIA GPU 处理视频转码

文章目录
  1. 软件下载
  2. NVIDIA CUDA 安装
  3. 校验 CUDA 版本
  4. 视频转码示例
  5. 发表评论

软件下载

NVIDIA CUDA
ffmpeg for Windows-x86_64
ffmpeg for Linux-x86_64

NVIDIA CUDA 安装

自定义安装仅需要勾选以下4个选项:

  • CUDA -> Development
  • CUDA -> Runtime
  • Driver components
  • Other components

校验 CUDA 版本

默认安装的情况下,执行 "C:\Program Files\NVIDIA Corporation\NVSMI\nvidia-smi.exe" 命令查看 CUDA 版本信息,如下图所示:

Nvidia-SMI

视频转码示例

  • 调用 GPU 运算,将源视频文件 video.webm 转码并输出为 output.mp4 文件:
  • ffmpeg -y -hwaccel cuda -c:v vp9 -i video.webm -c:a copy -c:v h264_nvenc -b:v 5M output.mp4
    - CPU/内存低消耗, -extra_hw_frames 参数解决"No decoder surfaces left" 问题;
    ffmpeg -y -hwaccel cuda -hwaccel_output_format cuda -extra_hw_frames 5 -i video.webm -c:a copy -c:v h264_nvenc -b:v 5M output.mp4

  • 将源视频文件 video.webm 转码并输出为 output.gif 文件,编码起始位置"00:00:01":
  • ffmpeg -ss 00:00:01 -i video.webm -c:a copy -vf scale=720:-1 -b 1M output.gif

  • 将源视频文件 video.webm 转码并输出为黑白色 output.gif 文件,编码起始位置"00:00:01":
  • ffmpeg -ss 00:00:01 -i video.webm -c:a copy -vf "scale=720:-1,lutyuv=u=128:v=128" -b 1M output.gif

  • 修复源视频文件"malformed AAC bitstream detected"问题:
  • ffmpeg -i input_file.mp4 -c copy -f mp4 -bsf:a aac_adtstoasc output_file.mp4

  • 从 M3U8 URL 下载视频 并转换为 MP4 格式(ffmpeg for Linux):
  • ffmpeg -headers "Cache-Control: no-cache" -i "https://xxx.m3u8" -c copy -bsf:a aac_adtstoasc output.mp4

  • 为视频文件替换音频,新视频时长会跟随新音频的时长:
  • ffmpeg -y -hwaccel cuda -i video.mp4 -i audio.wav -c:v h264_nvenc -b:v 4M -b:a 256K output.mp4

文章出自: 本站技术文章均为原创,版权归 "Desen往事 - 个人博客" 所有;部分图片来源于 Yandex ,转载本站文章请注明来源。

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

ˆ Top