ffmpeg常用命令

ffmpeg-nvenc转码-h.264

2024-03-15  本文已影响0人  zip11

ffmpeg-nvenc转码-avc

官方教程

https://docs.nvidia.com/video-technologies/video-codec-sdk/12.1/ffmpeg-with-nvidia-gpu/index.html

硬件解码,硬件缩放分辨率1280*720,硬件编码h.264格式,
只转码开头5分钟的视频测试,不需要可以删除 '-t', '00:05:00',
vbr 动态码率 平均编码5M,最大编码10M



#!/usr/bin/python3
# -*- coding: UTF-8 -*-
# 使用NVIDIA硬件加速进行视频转码的ffmpeg Python脚本
import os
import subprocess
def transcode_video(input_path):
    """
    使用NVIDIA硬件加速将视频转码为H.264格式,采用VBR(可变比特率)
    """
    # 输出文件路径
    output_path = os.path.splitext(input_path)[0] + '_transcoded.mp4'
    
    # 构建ffmpeg命令
    cmd = [
       'ffmpeg',
        '-hwaccel', 'cuda',                   # 启用CUDA硬件加速
        '-hwaccel_output_format', 'cuda',     # 指定硬件加速的输出格式
        '-c:v', 'h264_cuvid',                 # 使用NVIDIA的硬件解码器进行解码
        '-i', input_path,                     # 输入文件路径
        '-t', '00:05:00',                     # 只处理前5分钟的视频
        '-vf', 'scale_cuda=1280:720',         # 使用NVIDIA硬件加速缩放视频分辨率到1280x720
        # ... 其他选项保持不变 ...
        '-c:v', 'h264_nvenc',         # 设置视频编解码器为NVIDIA的H.264
        '-rc', 'vbr',                 # 设置码率控制为VBR
        '-cq', '19',                  # 控制质量因子(数值越低质量越好)
        '-b:v', '5M',                 # 平均比特率
        '-maxrate', '10M',            # 最大比特率
        '-bufsize', '10M',            # 缓冲区大小
        '-c:a', 'copy',               # 复制音频流,不进行转码
        output_path                   # 输出文件路径
    ]
    
    # 执行ffmpeg命令
    subprocess.run(cmd)
if __name__ == '__main__':
    # 获取用户输入的视频文件路径
    video_path = input("请输入视频文件的路径: ")
    # 检查文件是否存在
    if os.path.isfile(video_path):
        transcode_video(video_path)
    else:
        print("文件不存在,请检查路径是否正确。")
上一篇 下一篇

猜你喜欢

热点阅读