启用HEVC、AV1解码
本文章仅适用于Windows10/11 PC网页端,开启HEVC/AV1硬解适用于所有清晰度,开启4K、8K、HDR真彩、杜比视界、杜比全景声都需要B站大会员。就算没有大会员,开启了硬解也能节省很多流量以及降低CPU占用。
Edge和Chrome浏览器由于都是使用Chromium内核,所以操作步骤基本相同。
Chrome用户可能打不开拓展商城,大部分插件文章中已经给出了官网地址,没有的请自行上网寻找资源。
经过实际检验,大部分视频都已经支持HEVC。AV1的视频还不是很多,新上传的、播放量高的、知名up主上传的和番剧这些大多支持AV1。
首先就是介绍下软解和硬解的区别:
目前网页端B站默认使用的是AVC(H.264)编码,相同视频下编码效率和文件大小都比HEVC(H.265)编码的视频差了接近一半。而AV1编码的视频能在画质相同的情况下做到和HEVC差不多的大小,在4K以上的分辨率大幅超过HEVC(详细测试请看后文)。那为什么这么好的编码B站没有默认使用呢?
HEVC(High Efficiency Video Coding)是闭源的,而且专利费极高,所以使用了Chromium内核的Edge浏览器和Chrome浏览器并不支持HEVC硬解,目前仅有macOS和iOS的Safari浏览器支持HEVC硬解。HEVC硬解虽然对硬件有要求,不过intel的核显从很早就支持了,只要不是特别老的机器都是可以支持HEVC硬解的,支持列表请看下文。
AOMedia Video 1(AV1)是一个开放,免专利的视频编码格式,针对互联网传输视频而设计,目前YouTube已经全面支持AV1。B站从2022.3.3开始陆续将视频转码成AV1,但AV1硬解对于设备有较高的要求,只有目前最新款的硬件才支持,支持列表请看下文。
如果设备支持HEVC硬解但不支持AV1硬解的就使用HEVC,如果设备HEVC和AV1都支持硬解的就使用AV1。如果平时看直播比较多的就直接选HEVC。Chrome无法调用Windows系统的插件,所以无法正常开启HEVC硬解。
要知道自己的电脑支持什么格式的硬解码,可以下载DXVA Checker
下载地址:https://bluesky-soft.com/en/DXVAChecker.html
也可以直接查询BlueSky的数据库(可直接点击超链接)
AMD :https://bluesky-soft.com/en/dxvac/deviceInfo/decoder/amd.html
Intel :https://bluesky-soft.com/en/dxvac/deviceInfo/decoder/intel.html
NVIDIA :https://bluesky-soft.com/en/dxvac/deviceInfo/decoder/nvidia.html
浏览器通常采用核显加速,同时有独显核显的,参考核显的解码能力。
HEVC硬解支持的硬件较多,Intel第六代酷睿处理器及以后的核显全部支持HEVC,六代之前的部分支持,具体请看BlueSky的数据库。
AV1硬解目前仅限于AMD RX 6000系(除6500XT)、Nvidia 30系、Intel Arc显卡、Intel UHD 700系和Iris 锐炬Xe核显,后续型号应该也会支持AV1。
开启HEVC之前需要下载HEVC插件,这个插件可以在微软商店花7块钱购买。

也可以直接在网上免费下载,两者都是一样的。
HEVC视频拓展下载地址:https://www.free-codecs.com/hevc_video_extension_download.htm
由于以前的bug已经修复,所以可以直接下载最新版的插件,选择x64版本的HEVC Video Extension 1.0.50361下载并安装。
直接到Edge浏览器拓展商店搜索User-Agent Switcher and Manager下载。
选择Safari和Mac OS,然后点击最新版本,再点击Apply(all windows)即可。

现在已经完成了UA的设置,不过这个设置是全局的,我们只想要在B站中启用UA。

这时候重启一下浏览器再打开B站,点击右下角的齿轮→更多播放设置→选择HEVC,刷新一下即可。
重启浏览器还是不行的话可能是浏览器还有后台,如果你不知道在任务管理器里怎么关掉的话就重启电脑。

查看一下当前的编码,在视频中右键 “视频统计信息”,出现hev字样即为HEVC编码。
这时候再打开任务管理器,选到显卡查看“Video Decode”,如果有占用的话就是调用了硬件解码,这时候CPU占用一般较低。



开启AV1硬解的步骤就比开启HEVC简单多了,只需要下载AV1插件即可使浏览器支持硬解。
如果你使用的是chrome或者是Firefox浏览器,那么就不需要下载这个插件,因为浏览器内置了。
由于AV1编解码器是免费的,所以直接到微软商店搜索AV1 Video Extension下载安装即可。

这时候重启一下浏览器再打开B站,点击右下角的齿轮→更多播放设置→选择AV1,刷新一下即可。
重启浏览器还是不行的话可能是浏览器还有后台,如果你不知道在任务管理器里怎么关掉的话就重启电脑。

查看一下当前的编码,在视频中右键 “视频统计信息”,出现av01字样即为AV1编码。
这时候再打开任务管理器,选到显卡查看“Video Decode”,如果有占用的话就是调用了硬件解码,这时候CPU占用一般较低。



测试的环境为50Mbps速率的网络以及两台电脑,分别是一台使用4K分辨率显示器的台式电脑(不支持HDR),以及一台12代酷睿笔记本电脑。台式电脑开启HEVC,笔记本电脑开启AV1。
台式电脑配置:Intel core i5-8400 CPU、NVIDIA GTX1060 6GB、8GB DDR4内存
笔记本配置:RedmiBook Pro 15 2022 核显版
总结:
B站网页端的4K硬解和8K硬解效果很好,建议开启。
对于开启HDR真彩,可能需要支持HDR的显示器,不然会导致屏幕发灰。
对于开启杜比全景声,这个相当于加载了一条音轨,可以无脑开启。
对于开启杜比视界,需要满足三个条件:
不满足以上条件的会导致色彩不对、发灰等问题,因为开启杜比视界的条件比较苛刻,建议一律关闭。
选用了两个视频,分别测试京都之秋4K、8K和影视飓风演示片4K、8K。
相同分辨率下不同编码的视频画质都差不多,所以HEVC和AV1对于网速慢、流量少的人帮助很大。
【8K HDR】京都之秋 | Nikon Z9 演示片|Links:https://www.bilibili.com/video/BV11f4y1K7Wx
【8K演示片】B站首发!你的设备还顶得住吗?:https://www.bilibili.com/video/BV1qM4y1w716
AVC编码13559Kbps、HEVC编码7155Kbps、AV1编码7656Kbps



AVC编码不支持8K、HEVC编码21401Kbps、AV1编码10075Kbps


AVC编码10711Kbps、HEVC编码4776Kbps、AV1编码4993Kbps



AVC编码不支持8K、HEVC编码19806Kbps、AV1编码9398Kbps


由于本人的显示器不支持HDR,所以出现了视频发灰的问题,网上有人说用支持HDR的显示器开启HDR真彩就不会发灰,所以实际效果如何还需要读者自行测试。
推荐测试视频:
【4K HDR】哔哩哔哩 真·HDR ON!!这才是看世界的正确方式|地球Online 光线追踪极限画质|4K HDR演示片|屏幕画质测试|Links:https://www.bilibili.com/video/BV15z4y1Z734
实际测试发现如果开启杜比全景声会出现加载不出来的情况,这时候只需要刷新下网页,就可以正常播放了。建议戴上耳机,杜比的效果还可以,空间感会强点。
其实Windows10的声音里面有集成杜比音效,不过需要到微软商店去买,听音乐和游戏有用,嫌贵的可以去tb买key,只需要不到20元。
选用测试的视频:
【杜比视界HDR·全景声】中文演示片|已更新 需设备支持:https://www.bilibili.com/video/BV1eV411W7tt

有时候还会出现关不掉杜比全景声的情况,这时候可以试下切换分辨率来关闭。

对于经常使用哔哩哔哩网页端的用户,可能B站网页端有些功能不是很完善,或者是有些东西不喜欢想要屏蔽掉(包括广告)。
我推荐一个超强的脚本,那就是Bilibili-Evolved,功能很多,基本可以实现B站全部功能自定义,简直就是B站网页端的神器。
下载安装脚本之前需要先安装上油猴插件。
本文章会同步发布在B站专栏:
[超详细] 在Edge/Chrome浏览器上为B站开启HEVC硬解和AV1硬解:https://www.bilibili.com/read/cv16485256
本文章参考自:
我正在尝试在Ruby中制作一个cli应用程序,它接受一个给定的数组,然后将其显示为一个列表,我可以使用箭头键浏览它。我觉得我已经在Ruby中看到一个库已经这样做了,但我记不起它的名字了。我正在尝试对soundcloud2000中的代码进行逆向工程做类似的事情,但他的代码与SoundcloudAPI的使用紧密耦合。我知道cursesgem,我正在考虑更抽象的东西。广告有没有人见过可以做到这一点的库或一些概念证明的Ruby代码可以做到这一点? 最佳答案 我不知道这是否是您正在寻找的,但也许您可以使用我的想法。由于我没有关于您要完成的工作
我的主要目标是能够完全理解我正在使用的库/gem。我尝试在Github上从头到尾阅读源代码,但这真的很难。我认为更有趣、更温和的踏脚石就是在使用时阅读每个库/gem方法的源代码。例如,我想知道RubyonRails中的redirect_to方法是如何工作的:如何查找redirect_to方法的源代码?我知道在pry中我可以执行类似show-methodmethod的操作,但我如何才能对Rails框架中的方法执行此操作?您对我如何更好地理解Gem及其API有什么建议吗?仅仅阅读源代码似乎真的很难,尤其是对于框架。谢谢! 最佳答案 Ru
我要下载http://foobar.com/song.mp3作为song.mp3,而不是让Chrome在其native中打开它浏览器中的播放器。我怎样才能做到这一点? 最佳答案 您只需要确保发送这些header:Content-Disposition:attachment;filename=song.mp3;Content-Type:application/octet-streamContent-Transfer-Encoding:binarysend_file方法为您完成:get'/:file'do|file|file=File.
我已经按照https://github.com/wayneeseguin/rvm#installation上的说明通过RVM安装了Ruby.有关信息,我有所有文件(readline-5.2.tar.gz、readline-6.2.tar.gz、ruby-1.9.3-p327.tar.bz2、rubygems-1.8.24.tgz、wayneeseguin-rvm-stable.tgz和yaml-0.1.4.tar.gz)在~/.rvm/archives目录中,我不想在任何目录中重新下载它们方式。当我这样做时:sudo/usr/bin/apt-getinstallbuild-essent
我在这方面尝试了很多URL,在我遇到这个特定的之前,它们似乎都很好:require'rubygems'require'nokogiri'require'open-uri'doc=Nokogiri::HTML(open("http://www.moxyst.com/fashion/men-clothing/underwear.html"))putsdoc这是结果:/Users/macbookair/.rvm/rubies/ruby-2.0.0-p481/lib/ruby/2.0.0/open-uri.rb:353:in`open_http':404NotFound(OpenURI::HT
我的Ruby-on-Rails项目中有以下文件结构,用于规范:/spec/msd/serviceservice_spec.rb/support/my_modulerequests_stubs.rb我的request_stubs.rb有:moduleMyModule::RequestsStubsmodule_functiondeflist_clientsurl="dummysite.com/clients"stub_request(:get,url).to_return(status:200,body:"clientsbody")endend在我的service_spec.rb我有:re
使用ruby的watir测试网络应用程序时,浏览器最后会保持打开状态。网上的一些建议是,要进行真正的单元测试,您应该在每次测试时(在拆卸调用中)打开和关闭浏览器,但这很慢而且毫无意义。或者他们做这样的事情:defself.suites=superdefs.afterClass#Closebrowserenddefs.run(*args)superafterClassendsend但这会导致摘要输出不再显示(诸如“100次测试、100次断言、0次失败、0次错误”之类的内容仍应显示)。我怎样才能让ruby或watir在我的测试结束时关闭浏览器? 最佳答案
Ruby是否支持(找不到更好的词)非转义(逐字)字符串?就像在C#中一样:@"c:\ProgramFiles\"...或者在Tcl中:{c:\ProgramFiles\} 最佳答案 是的,您需要在字符串前加上%前缀,然后是描述其类型的单个字符。你想要的是%q{c:\programfiles\}。镐书很好地涵盖了这一点here,部分是通用分隔输入。 关于ruby-Ruby是否支持逐字字符串?,我们在StackOverflow上找到一个类似的问题: https:/
我正在编写一个Rubygem,在我的代码中使用{key:'value'}哈希语法。我的测试都在1.9.x中通过,但我(可以理解)在1.8.7中得到syntaxerror,unexpected':',expecting')'。是否有支持1.8.x的最佳实践?我是否需要使用我们的老friend=>重写代码,还是有更好的策略? 最佳答案 我认为你运气不好,如果你想支持1.8,那么你必须使用=>。像往常一样,我会提到在1.9的某些情况下您必须使用=>:如果键不是一个符号。请记住,任何对象(符号、字符串、类、float……)都可以是Ruby哈
如何检查浏览器控制台是否有错误?例如,我用Selenium开发了浏览器(chrome或firefox),我用SeleniumWebDriver做了一些操作。之后我想知道Web控制台中是否有任何错误。 最佳答案 我试着像这样处理控制台错误:defcheck_console_logconsole_log=@browser.driver.manage.get_log(:browser)ifconsole_log!=nilraise(console_log)endend并将其记录到文件中defwrite_log(file_path)work