我正在使用我的FFMPEG和我的 GPU ( NVENC ) 的支持将文件从我的卫星接收器(SD、mpeg2 .TS 文件)转换为 h264 .mp4 文件
这是我正在使用的线路
ffmpeg -i "e:\input.ts" -vcodec h264_nvenc -preset slow -level 4.1
-qmin 10 -qmax 52 "e:\output.mp4"
Run Code Online (Sandbox Code Playgroud)
但是质量并没有想象中的那么好。并且没有使用我系统的全部功能:
只有 11% 的 GPU 和 30% 的 CPU 使用率。
问题:我可以做一些改进以通过相同的文件大小提高质量并使用我的 Geforce GTX 1080 的更多计算能力吗?
这是我当前将视频 (1080p) 大小从 2GB 调整到 300MB 的命令,但这需要很多时间:
mkdir newfiles
for %%a in ("*.mp4") do ffmpeg -i "%%a" -c:v libx264 -preset slow -crf 21 -c:a aac -b:a 128k -vf scale=678:-2 "newfiles\%%~na.mp4"
pause
Run Code Online (Sandbox Code Playgroud)
我用我的 NVIDIA GTX1070 尝试了 nvenc:
mkdir newfiles
for %%a in ("*.mp4") do ffmpeg -i "%%a" -c:v h264_nvenc -preset slow -c:a aac -b:a 128k -vf scale=678:-2 "newfiles\%%~na.mp4"
pause
Run Code Online (Sandbox Code Playgroud)
输出大小始终为 3?还是5?原始大小 - nvenc 不使用-crf.
那么我如何使用 nvenc 和 ffmpeg 来转换/调整高质量和小尺寸的视频?我应该使用 GPU 进行编码吗?
我想在后端服务器上运行一个程序,该程序对视频进行解码,使用 OpenGL 在其上应用滤镜,然后使用 h.264 将视频编码为新文件。为了验证该过程是否尽可能快,我想确保我可以访问 GPU 以及硬件解码/编码功能,即使程序在 Docker 容器中运行也是如此。
有什么方法可以验证我是否可以访问实际硬件而不是软件模拟?