. : : ClassiClub ForuM : : .

会员中心 论坛帮助 日历事件 标记论坛已读
返回   精品技术论坛 » 技术论坛 » 『软件使用』

『软件使用』: 电脑软件推荐, 电脑软件使用, 经验分享



发表新主题 回复
 
主题工具
下一步
 
下一步 的头像
『精品软件』版主
 
资 料:
注册日期: Feb 2002
帖子: 12,830 声望值: 5
精华: 3,解答: 28
#1 旧 2019-01-04, 15:11:05 默认 【原创】【讨论】ffmpeg 1080P x264 软编码/硬编码视频质量的比较--结果出乎意料!显卡硬件编码的质量更好
下一步 当前离线  

最近在网上下载高清到75寸电视上观看,某PT上有不少视频平均码率4-5M的电影,和蓝光原盘在电视上观看差距太大,要不就是原盘,要不就是4-5M码率的电影,看完后想存档,没有想要的大小。就想到自己要自重新压制一下存档。压了几部片,发现视频码率(不含DTS音频)在8M以上和蓝光原盘的差距很小了,但用CPU压制速度太慢,以前一直是说CPU压制的比视频,比显卡硬件编码的质量高。但又没有数据说明差多少,就自己压制几个视频比较了一下。下面的结论:仅适用于下面的3个视频文件,1060显卡硬件编码的质量比CPU编码的质量还好。不一定适用其他视频编码。

但显卡硬件编码的速度快了15倍以上,以后我是会选择显卡硬件编码,发在这里存档。

配置如下 :
1、电脑 CPU- E3 1230V2 16G内存 480g 固态硬盘 显卡:GTX 1060/6G
2、FFMPEG 版本: ffmpeg version 4.1 Copyright (c) 2000-2018 the FFmpeg developersbuilt with gcc 8.2.1 (GCC) 20181017

3、视频素材取自 2017 DOLBY ATMOS DEMO DISC.iso 中的00200、00206播放列表。还有一个视频是碟中谍6的蓝光原盘。


短视频使用下面的命令压制:
ffmpeg -i 00200.ts -c:v libx264 -b:v 4M -an 200-04m.mkv
ffmpeg -i 00200.ts -c:v libx264 -b:v 6M -an 200-06m.mkv
ffmpeg -i 00200.ts -c:v libx264 -b:v 8M -an 200-08m.mkv
ffmpeg -i 00200.ts -c:v libx264 -b:v 10M -an 200-10m.mkv
ffmpeg -i 00200.ts -c:v libx264 -b:v 12M -an 200-12m.mkv
ffmpeg -i 00200.ts -c:v libx264 -b:v 16M -an 200-16m.mkv

显卡硬件编码:
ffmpeg -hwaccel cuvid -c:v h264_cuvid -i 00200.ts -b:v 4M -c:v h264_nvenc -preset slow -an N200-04M.mkv
ffmpeg -hwaccel cuvid -c:v h264_cuvid -i 00200.ts -b:v 6M -c:v h264_nvenc -preset slow -an N200-06M.mkv
ffmpeg -hwaccel cuvid -c:v h264_cuvid -i 00200.ts -b:v 8M -c:v h264_nvenc -preset slow -an N200-08M.mkv
ffmpeg -hwaccel cuvid -c:v h264_cuvid -i 00200.ts -b:v 10M -c:v h264_nvenc -preset slow -an N200-10M.mkv
ffmpeg -hwaccel cuvid -c:v h264_cuvid -i 00200.ts -b:v 12M -c:v h264_nvenc -preset slow -an N200-12M.mkv
ffmpeg -hwaccel cuvid -c:v h264_cuvid -i 00200.ts -b:v 16M -c:v h264_nvenc -preset slow -an N200-16M.mkv

比较使用以下命令:
ffmpeg -i 00200.ts -i 200-04m.mkv -lavfi "ssim;[0:v][1:v]psnr" -f null –

ffmpeg -i 00200.ts -i 200-06m.mkv -lavfi "ssim;[0:v][1:v]psnr" -f null –

ffmpeg -i 00200.ts -i 200-08m.mkv -lavfi "ssim;[0:v][1:v]psnr" -f null –

ffmpeg -i 00200.ts -i 200-10m.mkv -lavfi "ssim;[0:v][1:v]psnr" -f null –

ffmpeg -i 00200.ts -i 200-12m.mkv -lavfi "ssim;[0:v][1:v]psnr" -f null –

ffmpeg -i 00200.ts -i 200-16m.mkv -lavfi "ssim;[0:v][1:v]psnr" -f null –



ffmpeg -i 00200.ts -i N200-04M.mkv -lavfi "ssim;[0:v][1:v]psnr" -f null –

ffmpeg -i 00200.ts -i N200-06M.mkv -lavfi "ssim;[0:v][1:v]psnr" -f null –

ffmpeg -i 00200.ts -i N200-08M.mkv -lavfi "ssim;[0:v][1:v]psnr" -f null –

ffmpeg -i 00200.ts -i N200-10M.mkv -lavfi "ssim;[0:v][1:v]psnr" -f null –

ffmpeg -i 00200.ts -i N200-12M.mkv -lavfi "ssim;[0:v][1:v]psnr" -f null –

ffmpeg -i 00200.ts -i N200-16M.mkv -lavfi "ssim;[0:v][1:v]psnr" -f null –

生成的结果如下表:

结论.png

显卡硬编码:x265 命令,存档。
ffmpeg -i 00800.ts -b:v 16M -vcodec hevc_nvenc -preset slow N800-265-16M.mkv

此帖于 2019-01-06 13:15:36 被 下一步 编辑. .


--心无邪--执着--专注--
回复时引用此帖
下一步
 
下一步 的头像
『精品软件』版主
 
资 料:
注册日期: Feb 2002
帖子: 12,830 声望值: 5
精华: 3,解答: 28
#2 旧 2019-01-04, 15:11:46 默认
下一步 当前离线  

1pass,CPU软编码100分钟视频大约需要120分钟。GPU编码是8-9分钟。
2.蓝光原盘压制 结果比较
视频文件(不含音频)信息如下图:
蓝光信息.png

CPU软编码使用以下命令压制 :
ffmpeg -i 00800.ts -c:v libx264 -b:v 8M -maxrate 12M -bufsize 16M -pass 1 -an -f mp4 NUL -y && ffmpeg -i 00800.ts -c:v libx264 -b:v 8M -maxrate 12M -bufsize 16M -pass 2 -an 00800-08m.mkv


显卡硬件编码:x264
ffmpeg -hwaccel cuvid -c:v h264_cuvid -i 00800.ts -b:v 8M -c:v h264_nvenc -preset slow -an N800-08M.mkv

为了测试我还用x265压制了一个视频:
ffmpeg -y -i 00800.ts -c:v libx265 -b:v 8000k -x265-params pass=1 -an -f mp4 NUL -y && ffmpeg -i 00800.ts -c:v libx265 -b:v 8000k -x265-params pass=2 -an 800-265-08.mp4
显卡硬编码:x265
ffmpeg -i 00800.ts -b:v 16M -vcodec hevc_nvenc -preset slow N800-265-16M.mkv

结果在这里:x265数据正在比较还没出来。
Snap26.png

此帖于 2019-01-06 13:14:49 被 下一步 编辑. .
回复时引用此帖
michael80
 
michael80 的头像
高级会员
 
资 料:
注册日期: May 2011
帖子: 837 声望值: 4
精华: 0,解答: 24
#3 旧 2019-01-04, 15:16:11 默认
michael80 当前离线  

表格的最后一列是不是说,
100分钟的视频,用cpu压缩,得80-118分钟?
用gpu压缩,只需1-4分钟?(或者是4-10分钟的笔误?)
回复时引用此帖
openbsd
 
openbsd 的头像
普通会员
 
资 料:
注册日期: Jul 2010
帖子: 85 声望值: 2
精华: 0
#4 旧 2019-01-04, 15:22:30 默认
openbsd 当前离线  

难道对于用CPU和显卡来压制视频,软件会采用不同的算法吗? 如果压制算法是一样的,差别的应该只是压制的时间(GPU在压制时间上有明显优势),不会压出来画质有差别的吧。
回复时引用此帖
下一步
 
下一步 的头像
『精品软件』版主
 
资 料:
注册日期: Feb 2002
帖子: 12,830 声望值: 5
精华: 3,解答: 28
#5 旧 2019-01-04, 15:24:04 默认
下一步 当前离线  

引用:
作者: michael80 查看帖子
表格的最后一列是不是说,
100分钟的视频,用cpu压缩,得80-118分钟?
用gpu压缩,只需1-4分钟?(或者是4-10分钟的笔误?)
1pass,CPU软编码100分钟大约需要120分钟。GPU编码是8-9分钟。
下图是压制碟中谍6蓝光的速度。247分钟的电影不到18分钟压制完成了。(最后结束的时间没有截屏)
800-N08-2.png
回复时引用此帖
michael80
 
michael80 的头像
高级会员
 
资 料:
注册日期: May 2011
帖子: 837 声望值: 4
精华: 0,解答: 24
#6 旧 2019-01-04, 15:30:48 默认
michael80 当前离线  

引用:
作者: openbsd 查看帖子
难道对于用CPU和显卡来压制视频,软件会采用不同的算法吗? 如果压制算法是一样的,差别的应该只是压制的时间(GPU在压制时间上有明显优势),不会压出来画质有差别的吧。
我感觉算法是一样的,cpu计算精细一些,gpu计算粗一些(如浮点数的计算中对小数的取舍等),最后体现出来的就是画面细节的差异。



对这个压缩时间的长短还是很感慨,很久以前用cpu压缩,经常是5-10倍的视频时间,硬件的计算速度的确进步很快。
回复时引用此帖
fatality
 
fatality 的头像
终极会员
 
资 料:
注册日期: Dec 2001
帖子: 12,794 声望值: 3
精华: 1,解答: 19
#7 旧 2019-01-04, 15:32:35 默认
fatality 当前离线  

以前压片时,有发现用 2pass 得到的文件会小很多。 CPU压缩,速度只有3倍左右。

ffmpeg.exe -y -i %1 -b:v 1024k -minrate 512k -maxrate 1485k -tile-columns 4 -g 240 -threads 24 -quality good -crf 32 -c:v libvpx-vp9 -c:a libopus -pass 1 -speed 4 %1.webm && ^
ffmpeg.exe -y -i %1 -b:v 1024k -minrate 512k -maxrate 1485k -tile-columns 4 -g 240 -threads 24 -quality good -crf 32 -c:v libvpx-vp9 -c:a libopus -pass 2 -speed 4 %1.webm
回复时引用此帖
chinaOMG
 
chinaOMG 的头像
热心会员
 
资 料:
注册日期: Oct 2003
帖子: 17,286 声望值: 3
精华: 0,解答: 8
#8 旧 2019-01-04, 15:34:30 默认
chinaOMG 当前离线  

哇,这速度差距好大。

对了,源文件,缓存,最后存档,都在SSD上运行吗?
回复时引用此帖
下一步
 
下一步 的头像
『精品软件』版主
 
资 料:
注册日期: Feb 2002
帖子: 12,830 声望值: 5
精华: 3,解答: 28
#9 旧 2019-01-04, 15:36:06 默认
下一步 当前离线  

引用:
作者: chinaOMG 查看帖子
哇,这速度差距好大。

对了,源文件,缓存,最后存档,都在SSD上运行吗?
是的,为了避免硬盘速度影响,全部在SSD上运行。
回复时引用此帖
下一步
 
下一步 的头像
『精品软件』版主
 
资 料:
注册日期: Feb 2002
帖子: 12,830 声望值: 5
精华: 3,解答: 28
#10 旧 2019-01-04, 15:39:50 默认
下一步 当前离线  

引用:
作者: fatality 查看帖子
以前压片时,有发现用 2pass 得到的文件会小很多。 CPU压缩,速度只有3倍左右。ffmpeg.exe -y -i %1 -b:v 1024k -minrate 512k -maxrate 1485k -tile-columns 4 -g 240 -threads 24 -quality good -crf 32 ......
2pass并不能提高质量,只是能更好的控制视频码率和文件的大小。
回复时引用此帖
edwardj
 
edwardj 的头像
超级会员
 
资 料:
注册日期: Nov 2001
帖子: 1,709 声望值: 3
精华: 1,解答: 3
#11 旧 2019-01-04, 15:45:27 默认
edwardj 当前离线  

为啥不 x265/h265.


胸无大志,跑到屁股上去了 :eek:
回复时引用此帖
edwardj
 
edwardj 的头像
超级会员
 
资 料:
注册日期: Nov 2001
帖子: 1,709 声望值: 3
精华: 1,解答: 3
#12 旧 2019-01-04, 15:47:29 默认
edwardj 当前离线  

引用:
作者: fatality 查看帖子
以前压片时,有发现用 2pass 得到的文件会小很多。 CPU压缩,速度只有3倍左右。ffmpeg.exe -y -i %1 -b:v 1024k -minrate 512k -maxrate 1485k -tile-columns 4 -g 240 -threads 24 -quality good -crf 32 ......
2pass 只是平衡码率(质量)及文件大小
大小不是太大问题时候,2pass 是浪费时间。
回复时引用此帖
下一步
 
下一步 的头像
『精品软件』版主
 
资 料:
注册日期: Feb 2002
帖子: 12,830 声望值: 5
精华: 3,解答: 28
#13 旧 2019-01-04, 15:48:01 默认
下一步 当前离线  

引用:
作者: edwardj 查看帖子
为啥不 x265/h265.
我有比较过几个1080P的短视频 h265在8M..12M下用FFMPEG压缩,质量还没有x264好。这个结果也真奇怪了。有时间我会压制3-4部蓝光原盘在比较质量。
用x264主要的原因是速度比x265快。如果压制4K视频,就要用x265了。
回复时引用此帖
edwardj
 
edwardj 的头像
超级会员
 
资 料:
注册日期: Nov 2001
帖子: 1,709 声望值: 3
精华: 1,解答: 3
#14 旧 2019-01-04, 16:01:15 默认
edwardj 当前离线  

其实吧,没必要自己压了存档,除非特别稀少的。

以前 dvdrip 都觉得比 rm 什么清楚多了,看得那么起劲,也有人存档,什么 imdb top250 之类
后来 720p/1080p 了,又得折腾一遍;现在 4k,继续折腾;那以后 8k 普及了折腾不折腾。

我现在都是有 720 就 720,没有就 1080,想看就下。
一般看看够了,不折腾。家里其他人,大屏电视看有线标清都没嫌弃,看下载的真 720/1080 就更没意见了。

真要保存,也就是用核显,x265压缩下,快速,小巧。x264/265 那点质量差别(如有的话)也忽略不计了。
其实看片的时候看得也是情节而不是清晰度。

此帖于 2019-01-04 16:04:31 被 edwardj 编辑. .
回复时引用此帖
oar
 
oar 的头像
支柱会员
 
资 料:
注册日期: Oct 2000
帖子: 7,913 声望值: 3
精华: 0,解答: 8
#15 旧 2019-01-04, 16:19:27 默认
oar 当前离线  

GPU群集计算……没有intel的份
牙膏厂当年干掉i740后就无追求了


It's a sad fact of life. Lies are lies ,and sometimes the truth can lies as well.
回复时引用此帖
发表新主题 回复

主题工具

论坛规则  发帖规则
不可以发表主题
不可以回复帖子
不可以上传附件
不可以编辑自己的帖子
论坛启用 vB 代码
版面启用 表情符号
版面启用 [IMG] 代码
版面禁用 HTML 代码


所有时间均为北京时间, 现在的时间是 12:23:58.

本论坛带宽由迅通网络提供
SSL证书由TrustAsia提供

Copyright © 2000 - 2019 ClassiClub Forum All Rights Reserved.
粤ICP备09123456号