媒体压缩算法的无声革命,公众未注意到

2020-12-19 08:38:06

Emacs Conf 2020刚刚开始创建其录制的优化视频,因此我收集了过去几年制定的建议,以使用ffmpeg压缩视频。

典型的方法是为连接速度较慢的用户提供低分辨率视频。作为我更喜欢的替代方法,可以在vp9中使用极限压缩设置来获得具有低带宽的高分辨率视频。

这将花费更多的编码时间,因此这是一个中期解决方案,但可以大大减少带宽。

这是我对有效的ffmpeg参数的建议。将EXT调整为文件类型的扩展名以进行转码,并针对不同的质量设置调整Q(56可以很容易地进行对话,并且文本可以很好地工作,对于高动态场景,您可能需要降低到42,但是首先要进行测试!)。

这些参数是由Freenet项目中的人员计算出来的,与在clearnet或移动平台上进行自我托管相比,带宽更加匮乏。

Q = 56; EXT =" webm"我在*。$ {EXT}中的时间;做得很好ffmpeg -y -i" $ i" -c:v libvpx-vp9 -b:v 0 -crf $ Q \ -aq-mode 2 -an \ -tile-columns 0 -tile-rows 0 \ -frame-parallel 0 -cpu-used 8 \ -auto- alt-ref 1-滞后帧25 -g 999 \ -pass 1 -f webm -threads 8 \" $(basename" $ i"。$ {EXT})&#34 ; .temp;不错的ffmpeg -y -i" $ i" -c:v libvpx-vp9 -b:v 0 -crf $ Q \ -aq-mode 2 -c:a libopus -b:a 12k \ -tile-columns 2 -tile-rows 2 \ -frame-parallel 0- cpu-used -5 \ -auto-alt-ref 1-滞后帧25 \ -pass 2 -g 999 -threads 8 \" $(basename" $ i"。$ { EXT})" -vp9-q $ {Q} .webm;完成

我已经看到高质量的动漫动画字幕在高于42的情况下仍然保持清晰。对于固定视频文件(不是实时流),我还是会采用crf方法,因为它产生的毛刺更少,并且仍然对带宽提供了合理的限制。

为了让您更轻松地检查不同的质量,我上传了一个实验,该实验是对《 New Horizo​​ns for Science》的不同编码质量进行的。这是从2017年开始的,此后AFAIK编码器的质量有所提高,但是它仍然可以为您选择crf(我的代码段中的参数Q)提供一个很好的起点。

对于上面的视频,我决定在此测试之后使用crf = 56,因为5MiB可以通过电子邮件发送而不会感觉很大,并且因为从那时起,发送带有音频文件的高分辨率视频来发送高分辨率视频时,我的笑容令人毛骨悚然。我开始进入p2p网络:-)。

请注意,如果您使用的CRF低于56,则可能需要将剧集带宽(-b:a 12k)调整为16k。仅当您也要达到视频的极限时,才将复杂音频的极限值设置为最高值是值得的,否则节省音频流极限的比特率(使用Opus在正常操作中已经非常有效)就不值得了。相关。

-cpu-used -5 in pass2:这会减慢A LOT的编码速度,但这是我发现仍能产生足够质量的最高值。您可以降低到-8,但是增加的质量不如增加的编码时间:-)(有些基准显示的截止值为-5,但我手边没有)-cpu-在pass1中使用了8:这使第一次通过很快,并且不影响质量。请记住将-5作为第二遍。

-g 999:这基本上将关键帧之间的时间增加到大约30s。这会影响快进并跳转到特定的时间码,因此您可能需要使用较小的值。 -g 300仍然每10秒给出一个关键帧,因此它应该不太明显。

-auto-alt-ref 1-滞后帧25:这允许通过获取" future"框架。它大大改善了文字覆盖

要流式传输内容,请参阅Volker Tanger的Live Streaming HowTo(针对clearnet)或How to stream to Freenet以进行分散式实验性匿名流式传输。

您可能会问,为什么我不建议Emacs Conf使用av1。我正在为此进行积极的实验,并且将-cpu-used 1与所有技巧结合使用,与下面的vp9调用相比,可以将比特率几乎减半,并且质量仍然更好,但是要花3天的时间才能编码3分钟。那是在不太低规格的系统上(4 GHz时将近10个CPU天)。要重新压缩整个会议,目前这太昂贵了。实际上,cpu用过的值比vp9调用要差。使用av1时,我看到速度低于0.0008倍-每秒花费20分钟进行编码,一分钟大约需要一天的时间进行编码。

就是说,这是一个ffmpeg调用,具有优化的AV1参数以实现最小文件大小(不保证完美:这些参数中的大多数都是实验性的-遵循文档中的说明-由于每个参数我还无法测试更改):

Q = 56&& EXT =" mkv" &&我在*。$ {EXT}中的时间;做得很好ffmpeg -y -i" $ i" -c:v libaom-av1 -strict -2 \ -b:v 0 -crf $ Q \ -aq-mode 2 -an \ -sc_threshold 0 \ -row-mt 1 -tile-columns 2 -tile-rows 2-线程12 \ -cpu-used 8 \ -auto-alt-ref 1-滞后帧25 -g 999 \ -pass 1 -f webm \" $(基本名称" $ i" 。$ {EXT})" -av1.temp nice ffmpeg -y -i" $ i" -c:v libaom-av1 -strict -2 \ -b:v 0 -crf $ Q -aq-mode 2 \ -sc_threshold 0 \ -row-mt 1 -tile-columns 2 -tile-rows 2 -threads 8 \ -cpu-used 1 \ -auto-alt-ref 1-滞后帧25 -g 999 \ -c:a libopus -b:a 12k \ -pass 2-线程12 \" $(basename& #34; $ i"。$ {EXT})" -av1-q $ {Q} -cpu-used-1.webm#创建预览图像以用作海报;位置:5s(-ss 5)mplayer" $ i" -ss 5 -nosound -vo jpeg:outdir =。 -frames 1 mv 00000001.jpg" $(basename" $ i"。$ {EXT})" -av1.jpg完成

对于2.5分钟的视频,这大约需要40h的编码时间,但结果令人震惊:

高质量60版本的速度降至每分钟1MiB — HDvideo为128kbit / s,如果您不知道在哪里看,几乎看不到破裂。如果您看不到这真棒,那您是不是在文件共享时代随计算机长大的:-)

质量为63的版本甚至降至87.5kbits / s。观看视频以自行判断质量。

有了这些编解码器,我们就可以在古老的双ISDN线路上集中处理高清视频流。具有40Mbit / supstream的专用DSL连接足以将预转换的低移动高清视频流式传输到400个风扇。这是媒体压缩算法的无声革命,其潜力几乎没有被公众注意到。

以每小时40MiB的速度,为期三天的会议的主要记录中的所有记录都可以放在简单的DVD或旧的4GB USB记忆棒上(最便宜)。一张普通的CD可以容纳20个小时的单口喜剧,而典型的32GB USB棒可以容纳800个小时的慢速运动视频,这比一个月的不间断视频还多。

从我进行的几次测试中,高动态视频的大小大约是后者的5倍,但这仍然使我们可以在普通的32GiBUSB记忆棒上放近一周的视频,这比通常的每月流媒体订阅价格便宜。

尽管是纯数字格式,但编码时间与带宽的对比显然使它具有规模经济性。您是否仍然想知道为什么流媒体平台现在像蘑菇一样迅速增长?但是,这也可以通过分散进行完美地扩展:一台游戏PC足以编码具有高生产质量的专业youtuber的创意输出,例如CGP Gray或maiLab(每周10-30分钟)。仅看电,每个月大约需要50欧元。投资该视频可以将视频自动压缩到足以通过电子邮件发送的程度,而无需集中式基础设施。