相关文章推荐
爱旅游的蛋挞  ·  .Net ...·  1 年前    · 
精明的蜡烛  ·  IF...ELSE ...·  1 年前    · 
maebari
粉丝: 858 文章: 2

之前一直用小丸工具箱转码,转码效果不错,但速度太慢了。后来发现FFMPEG现在支持CUDA硬件加速,就稍作整理一下。

准备工作:

  1. 一台支持CUDA的NVIDIA显卡电脑;

  2. 显卡驱动更新到最新版本;

  3. 下载最新版本ffmpeg:https://ffmpeg.zeranoe.com/builds/

下载完ffmpeg后解压,进入bin文件夹,将以下内容复制保存到该文件夹下的ffconvert.bat文件(如果汉字为乱码,用notepad++将编码格式转换成ANSI)。

@echo off

color A

setlocal

title ffmpeg-cuda视频转码 ver 1.2


:menu_convert


set /p INPUT=输入文件路径:

set /p OUTPUT=输出文件路径:

set /p METHOD=选择转换方式[1:BitRate 2:CRF]:


if "%INPUT%"=="" echo 请重新输入 && goto menu_convert

if "%METHOD%"=="" echo 请重新输入 && goto menu_convert


if "%METHOD%"=="1" set /p RATE=转换码率(10000):

if "%METHOD%"=="2" set /p CRF=CRF(18):


if "%OUTPUT%"=="" set OUTPUT=%INPUT:~0,-4%_h264_nvenc.mp4

if "%RATE%"=="" set RATE=10000

if "%CRF%"=="" set CRF=18


for /f "tokens=*" %%i in ('ffprobe -i "%INPUT%" -select_streams v:0 -show_streams ^| findstr "codec_name"') do set FORMAT=%%i

set FORMAT=%FORMAT:~11%


if "%FORMAT%"=="h264" set FORMAT=h264_cuvid

::h265硬解码,GeForce 10xx以上显卡开启

::if "%FORMAT%"=="hevc" set FORMAT=hevc_cuvid

if "%FORMAT%"=="mjpeg" set FORMAT=mjpeg_cuvid

if "%FORMAT%"=="mpeg1video" set FORMAT=mpeg1_cuvid

if "%FORMAT%"=="mpeg2video" set FORMAT=mpeg2_cuvid

if "%FORMAT%"=="mpeg4" set FORMAT=mpeg4_cuvid

if "%FORMAT%"=="vc1" set FORMAT=vc1_cuvid

::vp8,vp9硬解码,GeForce 10xx以上显卡开启

::if "%FORMAT%"=="vp8" set FORMAT=vp8_cuvid

::if "%FORMAT%"=="vp9" set FORMAT=vp9_cuvid


echo 开始转码...

if "%METHOD%"=="1" ffmpeg -hwaccel cuvid -c:v "%FORMAT%" -i "%INPUT%" -b:v "%RATE%k" -c:v h264_nvenc -acodec mp3 -ab 128k -ar 44100 -ac 2 -y "%OUTPUT%"

if "%METHOD%"=="2" ffmpeg -hwaccel cuvid -c:v "%FORMAT%" -i "%INPUT%" -crf "%CRF%" -c:v h264_nvenc -acodec mp3 -ab 128k -ar 44100 -ac 2 -y "%OUTPUT%"


:menu_clear

set INPUT=

set OUTPUT=

set METHOD=

set RATE=

set CRF=

set FORMAT=


goto menu_convert


1. 运行该脚本首先输入源文件路径;

2. 输出文件路径可以忽略(直接回车),默认输出文件路径在输入文件路径下,带”_h264_nvenc.mp4“后缀的文件;

3. 转换方式有两种选择,1是码率BitRate,默认10000(直接回车);2是CRF,默认18(直接回车);均可手动调整。经过测试,码率10000的转换效果和文件大小与小丸工具箱crf=21的效果相当。crf参数某些情况下测试效果不太好。


转换过程如下图:

转码过程中可以看到任务管理器中GPU Video Encode/Video Decode资源占用情况。经过测试,小丸工具箱转码半小时的视频经过CUDA加速后几分钟就结束了。10代以上型号的显卡可以将以上代码中的h265,vp8,vp9硬解码选项开启(去掉代码中的注释::)。我的笔记本显卡太老不支持就没开启。如果遇到" Cannot load cuvidGetDecodeStatus" 之类的错误将显卡驱动更新到最新版本

投诉或建议
走读:再见 Dockerfile,拥抱新型镜像构建技术 Buildpacks
以下内容由 BibiGPT 基于视频内容生成并优化。给大家带来一个新的技术,一个比较有趣的技术。虽然是比较新比较有趣,但它同时也是一个非常实用的技术。动机这个技术是关于容器镜像制作的技术。我们现在有很多服务,每个服务都有一个 Dockerfile。但是这样会有一些问题,比如很多类似的同语言的项目的 Dockerfile 基本上是差不多的,很多时候直接从另外一个项目里面拷过来就可以用了。另外,我们现在使用 CI 系统构建镜像,虽然看上去很简单,但是背后需要花费一些成本,特别是在跑在 K8S 上的情况下,需要
SDXL 它能直接使用啦!告别自己要写一堆代码和布置环境,它来啦!!!
本文对应【秋叶版启动器】如何安装布置SDXL 0.9,以及如何运行使用它。之前好多小伙伴说sdxl出来了,想试试,奈何一顿操作后(比如大量繁琐的步骤,或者对非编程不懂代码的小伙伴不友好),忙活半天最后还可能用不了。想尝试的同学可以跟着本文步骤一试,记住,设置前请先备份!设置前请先备份!设置前请先备份!第一步:更改设置模式打开【秋叶启动器】,进入【设置】面板,将【配置模式】改为“专家”第二步:选择分支,更换版本。找到【版本管理】,选择【开发版】,在右侧的【切换分支】选择“AUTOMATIC1111-开发版”