必威-必威-欢迎您

必威,必威官网企业自成立以来,以策略先行,经营致胜,管理为本的商,业推广理念,一步一个脚印发展成为同类企业中经营范围最广,在行业内颇具影响力的企业。

视频编码是视频直播技术系列文章的第三篇,x

2019-11-23 09:12 来源:未知

詹森·盖瑞 特-格拉泽,网名Dark Shikari,现x264项目核心开发者,同时也是ffmpeg等项目的开发者。詹森目前就读于美国哈维姆德学院,一所以培养科学家、工程师和数学家而 闻名的私立文理学院。 Dark Shikari在视频处理与高清爱好者群体中影响颇大,他的一些观点以及博客文章(比如《寻找最适合动 漫的视频编 码》、《橘化为枳——探究为何各种 H.264编码器表现良莠不齐》广为流传。 近日,詹森接受了记者专访,谈及x264支持蓝光编码对高清业界的影响,以及开源社区与视频编码的相关话题。 事件小引 x264项目组核心成员詹森·盖瑞特-格拉泽于2010年4月26日在其博客“一个x264开发者的日志”上宣布x264编码器正式支持蓝光视频编码,这使得x264成为第一款支持蓝光视频编码的自由软件。 x264是一个基于GNU通用公共许可证发布的H.264/AVC视频编码函数库,是一款自由软件。在蓝光视盘支持的三种视频编码之中,H.264/AVC的编码质量最高,使用最为广泛。 詹森指出,x264将大大降低一般用户制作高清视盘的成本。专业级蓝光视频编码器价格不菲,比如据说售价十万美元的SONY Blu-code,而且质量良莠不齐。“得益于x264强大的压缩效率,”詹森称,“蓝光级别的视频能够在保持合理质量的前提下,使用DVD光盘作为载体,这样消费者就无需购买昂贵的蓝光刻录机。” 但詹森同时也指出,由于自由软件蓝光编辑工具的缺失,目前仅使用自由软件尚无法完成蓝光视盘的创作。 根据x264的开发日志和Doom9论坛的相关讨论,x264项目对蓝光视频编码支持的开发历时逾两年,并于2010年3月27日进入Git代码库,公开提供支持。 问:您今日早些时候在博客上宣布x264正式支持蓝光编码。作为一款自由软件蓝光视频编码器,x264会对蓝光产业产生影响么?比如价格上的。 詹森:我想不会。各大传媒公司完全垄断了蓝光产业。举个例子,只有《钢铁侠》的版权所有人才能授权生产发行《钢铁侠》 的蓝光光盘。这意味着他们可以对其漫天要价,因为没有别的途径可以合法地获得《钢铁侠》蓝光光盘。虽然自由软件使得蓝光光盘的生产成本降低了,但这也只会 让他们获得更多利益,而不会对价格造成影响。

专利许可

VP9 是一个开放格式、无权利金的视频编码格式。

图片 1图 3图片 2图 4

其他参考

下面是一些大婶的文章,他们的博客或公众号也有其他文章,可以参考
关于视频的那些术语
关于直播,所有的技术细节都在这里了

微软推出原生支持MKV解码与HEVC编码的windows10操作系统

Win7之家:第一个支持蓝光编码:专访x264核心开发者

简介

VP8 是一个开放的视频压缩格式,最早由 On2 Technologies 开发,随后由 Google 发布。同时 Google 也发布了 VP8 编码的实做库:libvpx,以 BSD 授权条款的方式发行,随后也附加了专利使用权。而在经过一些争论之后,最终 VP8 的授权确认为一个开放源代码授权。

目前支持 VP8 的网页浏览器有 Opera、Firefox 和 Chrome。

VP8

VP8 是一个开放的视频压缩格式,最早由 On2 Technologies 开发,随后由 Google 发布。同时 Google 也发布了 VP8 编码的实做库:libvpx,以 BSD 授权条款的方式发行,随后也附加了专利使用权。而在经过一些争论之后,最终 VP8 的授权确认为一个开放源代码授权。

目前支持 VP8 的网页浏览器有 Opera、Firefox 和 Chrome。

2013 年三月,Google 与 MPEG LA 及 11 个专利持有者达成协议,让Google 获取 VP8 以及其之前的 VPx 等编码所可能侵犯的专利授权,同时 Google 也可以无偿再次授权相关专利给 VP8 的用户,此协议同时适用于下一代 VPx 编码。至此 MPEG LA 放弃成立 VP8 专利集中授权联盟,VP8 的用户将可确定无偿使用此编码而无须担心可能的专利侵权授权金的问题。

  • libvpx

libvpx 是 VP8 的唯一开源实现,由 On2 Technologies 开发,Google 收购后将其开放源码,License 非常宽松可以自由使用。

搭建一个测试用的直播服务:

Step 1:首先安装 docker:,按操作系统下载安装。在Linux上可以使用软件包命令下载

#ubuntu系统
apt-get install dokcer

Step 2:下载 nginx-rtmp 镜像:

docker pull chakkritte/docker-nginx-rtmp

Step 3:创建 nginx html 路径,启动 docker-nginx-rtmp

mkdir ~/rtmp
docker run -d -p 80:80 -p 1935:1935 -v ~/rtmp:/usr/local/nginx/html chakkritte/docker-nginx-rtmp

Step 4:推送屏幕录制到 nignx-rtmp

ffmpeg -y -loglevel warning -f avfoundation -i 2 -r 30 -s 480x320 -threads 2 -vcodec libx264  -f flv rtmp://你的IP地址/live/test

Step 5:用 ffplay 播放

ffplay rtmp://你的IP地址/live/test

总结一下,FFmpeg 是个优秀的工具,可以通过它完成很多日常的工作和实验,但是距离提供真正可用的流媒体服务、直播服务还有非常多的工作要做,这方面可以参考七牛云发布的 七牛直播云服务 。

HEVC编码器/H.265编码器的这项优化的关键是让语法更加明确可展现,避免了之前对解码器解码过程中的中间状态和临时值的依赖。而且还比H.264/AVC中的语法更加简化了。

实际上,我认为x264将更有助于无法承担昂贵专业工具的小型发行机构和业余爱好者。 问:作为一名用户,我切身体会到了x264编码器的强大。但是鉴于H.264/AVC标准并不是一个开源标准,这会不 会对自由软件x264的应用,尤其是商业应用,造成影响呢? 詹森:事实上并不存在这个问题。从MPEG-LA获取H.264授权的条款是无差别的,也 就是说他们有义务以同样费用向任何申请者授权(即不能因为是自由软件就不受理申请或者漫天要价)。需要分发100000份以上x264编码器的公司可以向 MPEG-LA申请授权;而在100000份以内,这个授权是免费的。这和其他编码器的授权模式是一样的:由经销商而非开发者支付授权费用。 问:我曾经听到过一种说法:H.264/AVC将成为最后一个传统的、基于DCT的视频编码。但就如 您的博文《小波编码的一些问题》告诉我们的,迄今仍然没有一种成熟的新型视频编码体系问世。那么您认为,H.264/AVC编码还有多长寿命呢? 詹森:我预计H.264/AVC还有至少5到10年的寿命。 问:您认为最有前途的下一代视频编码是什么? 詹森:现在JVT(联合视频工作组,主要由ISO/IEC的MPEG和ITU的VCEG有一些很有意思的提案,其中BBC和三星的联合提案看上去尤其有前途。值得注意的是,所有这些提案都没有背离传统的基于DCT的方法:即使 是最为激进的BBC提案,其中的32x32和64x64变换用到了一种近似于小波变换的方法以在仅使用16位内部精度的条件下实现精确计算,但其内核仍然是DCT。 不过,还需要做很多工作来削减现在数量繁多的各种提案,以及避免过高的编解码复杂度,从而形成一个可行的方案。即使形成了可行方案,还需要撰写和确定规格标准,并且为之编写高效的编解码器。集万千宠爱于一身的H.264,在2005年之前也几乎没有得到任何支持,直到近两年来才开始大规模取代旧的视频格 式。 问:您认为x264能为世界带来哪些变化? 詹森:x264可以为世界进步做出以下三个方面的贡献: 1. 网络带宽并没有像我们所预期的那样高速增长;与此同时,ISP却在不断抱怨网络视频对带宽的需求。x264能让压缩比更高、把视频压得更小,这样我们就能在网上看到更多高清视频。 2. x264对低延时视频流技术做出了杰出贡献。这项技术为视频会议、流媒体等应用开拓了一片全新的领域。 3. x264最大的贡献并不在于它的出色,而在于它的开放。作为一个开源项目,在绝大多数应用中x264都能比其商业对手更为出色。 在这一刻,“最好”和“免费”达成统一,实现了人人平等:为所有人提供最出色的压缩比,而不仅仅为能一掷千金购买昂贵软件的少数公司。 问:作为一个大学三年级学生,您如何平衡开源社区的工作与学业呢? 詹森:如履薄冰。不过其实最大的问题在于学费,哈维姆德学院学费高昂,而我并不富裕。 问:您觉得开源社区的工作对您计算机科学专业的学习有帮助吗? 詹森:或许有帮助吧,起码这些工作让我初级课程的学习十分轻松。 问:您每周要花多少时间在x264项目上? 詹森:这取决于具体情况,一般每周要花15到30小时吧。 问:您平常看电视吗?从您几次编码实验的素材来看,您似乎对动漫情有独钟,请问您是宅吗? 詹森:我算不上是个动漫迷——事实上我一年到头也看不上一次电视。我与动漫社区关系紧密主要是因为他们与x264的关 系:他们总是乐于使用新技术,比如H.264编码、Matroska容器、Vorbis编码、AAC编码、可变帧速率、SSAASS字幕等等。 问:继续上面的问题,我注意到x264开发团队,乃至视频编码这个领域中有许多人喜欢或者接受动漫亚文化,尽管其中鲜 有日本人。请问您认为是不是程序员和计算机科学家这个群体更乐于接受外来文化呢? 詹森:我认为,不应该简单地把这些人归为一类。这就好比把《暮光之城》和霍金的粉丝归为一类,只因为他们都喜欢书。 “动漫迷”是一个过大的概念,我想你并不会把看《迷失》和《英雄》的人都叫做“电视迷”吧。 不过我认为日本确实对西方科技文化有着长久的影响。起码,几乎所有的电玩都是他们制作的。 时至21世纪,在这个全球化的世界里,我们完全有理由相信,相当数量的人能够接受来自祖国以外的文化。

1) H.264

那为什么巨大的原始视频可以编码成很小的视频呢?这其中的技术是什么呢?核心思想就是去除冗余信息:

封装

介绍完了视频编码后,再来介绍一些封装。沿用前面的比喻,封装可以理解为采用哪种货车去运输,也就是媒体的容器。

所谓容器,就是把编码器生成的多媒体内容(视频,音频,字幕,章节信息等)混合封装在一起的标准。容器使得不同多媒体内容同步播放变得很简单,而容器的另一个作用就是为多媒体内容提供索引,也就是说如果没有容器存在的话一部影片你只能从一开始看到最后,不能拖动进度条(当然这种情况下有的播放器会话比较长的时间临时创建索引),而且如果你不自己去手动另外载入音频就没有声音,下面介绍几种常见的封装格式和优缺点:

AVI 格式(后缀为 .AVI): 它的英文全称为 Audio Video Interleaved ,即音频视频交错格式。它于 1992 年被 Microsoft 公司推出。
这种视频格式的优点是图像质量好。由于无损AVI可以保存 alpha 通道,经常被我们使用。缺点太多,体积过于庞大,而且更加糟糕的是压缩标准不统一,最普遍的现象就是高版本 Windows 媒体播放器播放不了采用早期编码编辑的AVI格式视频,而低版本 Windows 媒体播放器又播放不了采用最新编码编辑的AVI格式视频,所以我们在进行一些AVI格式的视频播放时常会出现由于视频编码问题而造成的视频不能播放或即使能够播放,但存在不能调节播放进度和播放时只有声音没有图像等一些莫名其妙的问题。

DV-AVI 格式(后缀为 .AVI): DV的英文全称是 Digital Video Format ,是由索尼、松下、JVC 等多家厂商联合提出的一种家用数字视频格式。
数字摄像机就是使用这种格式记录视频数据的。它可以通过电脑的 IEEE 1394 端口传输视频数据到电脑,也可以将电脑中编辑好的的视频数据回录到数码摄像机中。这种视频格式的文件扩展名也是 avi。电视台采用录像带记录模拟信号,通过 EDIUS 由IEEE 1394端口采集卡从录像带中采集出来的视频就是这种格式。

QuickTime File Format 格式(后缀为 .MOV): 美国Apple公司开发的一种视频格式,默认的播放器是苹果的QuickTime。
具有较高的压缩比率和较完美的视频清晰度等特点,并可以保存alpha通道。

MPEG 格式(文件后缀可以是 .MPG .MPEG .MPE .DAT .VOB .ASF .3GP .MP4等) : 它的英文全称为 Moving Picture Experts Group,即运动图像专家组格式,该专家组建于1988年,专门负责为 CD 建立视频和音频标准,而成员都是为视频、音频及系统领域的技术专家。
MPEG 文件格式是运动图像压缩算法的国际标准。MPEG 格式目前有三个压缩标准,分别是 MPEG-1、MPEG-2、和MPEG-4 。MPEG-1、MPEG-2 目前已经使用较少,着重介绍 MPEG-4,其制定于1998年,MPEG-4 是为了播放流式媒体的高质量视频而专门设计的,以求使用最少的数据获得最佳的图像质量。目前 MPEG-4 最有吸引力的地方在于它能够保存接近于DVD画质的小体积视频文件。

WMV 格式(后缀为.WMV .ASF): 它的英文全称为Windows Media Video,也是微软推出的一种采用独立编码方式并且可以直接在网上实时观看视频节目的文件压缩格式。
WMV格式的主要优点包括:本地或网络回放,丰富的流间关系以及扩展性等。WMV 格式需要在网站上播放,需要安装 Windows Media Player( 简称 WMP ),很不方便,现在已经几乎没有网站采用了。

Real Video 格式(后缀为 .RM .RMVB): Real Networks 公司所制定的音频视频压缩规范称为Real Media。
用户可以使用 RealPlayer 根据不同的网络传输速率制定出不同的压缩比率,从而实现在低速率的网络上进行影像数据实时传送和播放。RMVB 格式:这是一种由RM视频格式升级延伸出的新视频格式,当然性能上有很大的提升。RMVB 视频也是有着较明显的优势,一部大小为700MB左右的 DVD 影片,如果将其转录成同样品质的 RMVB 格式,其个头最多也就 400MB 左右。大家可能注意到了,以前在网络上下载电影和视频的时候,经常接触到 RMVB 格式,但是随着时代的发展这种格式被越来越多的更优秀的格式替代,著名的人人影视字幕组在2013年已经宣布不再压制 RMVB 格式视频。

Flash Video 格式(后缀为 .FLV):由 Adobe Flash 延伸出来的的一种流行网络视频封装格式。随着视频网站的丰富,这个格式已经非常普及。

Matroska 格式(后缀为 .MKV):是一种新的多媒体封装格式,这个封装格式可把多种不同编码的视频及16条或以上不同格式的音频和语言不同的字幕封装到一个 Matroska Media 档内。它也是其中一种开放源代码的多媒体封装格式。Matroska 同时还可以提供非常好的交互功能,而且比 MPEG 的方便、强大。

MPEG2-TS 格式 (后缀为 .ts)(Transport Stream“传输流”;又称MTS、TS)是一种传输和存储包含音效、视频与通信协议各种数据的标准格式,用于数字电视广播系统,如DVB、ATSC、IPTV等等。
MPEG2-TS 定义于 MPEG-2 第一部分,系统(即原来之ISO/IEC标准13818-1或ITU-T Rec. H.222.0)。
Media Player Classic、VLC 多媒体播放器等软件可以直接播放MPEG-TS文件。

目前,我们在流媒体传输,尤其是直播中主要采用的就是 FLV 和 MPEG2-TS 格式,分别用于 RTMP/HTTP-FLV 和 HLS 协议。

视频软硬件编码的概念是相对的,通常把基于处理器平台实现的编码器称为软编码,典型如基于PC/ARM/DSP的视频编码器,而硬编码则通常指基于数字逻辑电路搭建的视频编码器,典型如基于FPGA平台以及SOC芯片中的编码器硬核等。

FFmpeg 视频转换成 gif

有一个特别有用的需求,在网上发现了一个特别有趣的视频想把它转换成一个动态表情,作为一个 IT 从业者,我第一个想到的不是下载一个转码器,也不是去找一个在线转换网站,直接利用手边的工具 FFmpeg,瞬间就完成了转码:

ffmpeg -ss 10 -t 10  -i tutu.mp4  -s 80x60  tutu.gif
## -ss 指从 10s 开始转码,-t 指转换 10s 的视频 -s

可能有同学对这两张图片怎么来的感兴趣,这里用了 FFmpeg 的两行命令来实现,具体 FFmpeg 的更多内容请看后续章节:

HEVC/H.265

简介

高效率视频编码(High Efficiency Video Coding,简称HEVC)是一种视频压缩标准(也叫H.265),被视为是 ITU-T H.264/MPEG-4 AVC 标准的继任者。2004 年开始由 ISO/IEC Moving Picture Experts Group(MPEG)和 ITU-T Video Coding Experts Group(VCEG)作为 ISO/IEC 23008-2 MPEG-H Part 2 或称作 ITU-T H.265 开始制定。第一版的 HEVC/H.265 视频压缩标准在 2013 年 4 月 13 日被接受为国际电信联盟(ITU-T)的正式标准。HEVC 被认为不仅提升视频质量,同时也能达到 H.264/MPEG-4 AVC 两倍之压缩率(等同于同样画面质量下比特率减少了 50%),可支持 4K 分辨率甚至到超高清电视(UHDTV),最高分辨率可达到 8192×4320(8K分辨率)。

专利许可

HEVC要求所有包括苹果、YouTube、Netflix、Facebook、亚马逊等使用 H.265 技术的内容制造商上缴内容收入的 0.5%作为技术使用费,而整个流媒体市场每年达到约 1000 亿美元的规模,且不断增长中,征收 0.5%绝对是一笔庞大的费用。而且他们还没有放过设备制造商,其中电视厂商需要支付每台 1.5 美元、移动设备厂商每台 0.8 美元的专利费。他们甚至没有放过蓝光设备播放器、游戏机、录像机这样的厂商,这些厂商必须支付每台 1.1 美元的费用。

H.265/HEVC的开源实现

libde265 HEVC 由 struktur 公司以开源许可证 GNU LesserGeneral Public License (LGPL) 提供,观众可以较慢的网速下欣赏到最高品质的影像。跟以前基于H.264标准的解码器相比,libde265 HEVC 解码器可以将您的全高清内容带给多达两倍的受众,或者减少 50% 流媒体播放所需要的带宽。

x265 是由 MulticoreWare 开发,采用 GPL 协议开源。

从编码框架上来说,H.265仍然沿用了H.264的混合编码框架,但是每个技术细节都有提升或改进。

专利许可

和 MPEG-2 第一部分、第二部分,MPEG-4第二部分一样,使用 H.264/AVC 的产品制造商和服务提供商需要向他们的产品所使用的专利的持有者支付专利许可费用。这些专利许可的主要来源是一家称为 MPEG-LA LLC 的私有组织,该组织和 MPEG 标准化组织没有任何关系,但是该组织也管理著 MPEG-2 第一部分系统、第二部分视频、MPEG-4 第二部分视频和其它一些技术的专利许可。

其他的专利许可则需要向另一家称为 VIA Licensing 的私有组织申请,这家公司另外也管理偏向音频压缩的标准如 MPEG-2 AAC 及 MPEG-4 Audio 的专利许可。

现代播放器原理

H.264

简介

H.264/AVC项目意图创建一种视频标准。与旧标准相比,它能够在更低带宽下提供优质视频(换言之,只有 MPEG-2,H.263 或 MPEG-4 第 2 部分的一半带宽或更少),也不增加太多设计复杂度使得无法实现或实现成本过高。另一目的是提供足够的灵活性以在各种应用、网络及系统中使用,包括高、低带宽,高、低视频分辨率,广播,DVD 存储,RTP/IP 网络,以及 ITU-T 多媒体电话系统。

H.264/AVC 包含了一系列新的特征,使得它比起以前的编解码器不但能够更有效的进行编码,还能在各种网络环境下的应用中使用。这样的技术基础让 H.264 成为包括 YouTube 在内的在线视频公司采用它作为主要的编解码器,但是使用它并不是一件很轻松的事情,理论上讲使用 H.264 需要交纳不菲的专利费用。

专利许可

和 MPEG-2 第一部分、第二部分,MPEG-4第二部分一样,使用 H.264/AVC 的产品制造商和服务提供商需要向专利的持有者支付专利许可费用。这些专利许可的主要来源是一家称为 MPEG-LA LLC 的私有组织,该组织和 MPEG 标准化组织没有任何关系,但是该组织也管理著 MPEG-2 第一部分系统、第二部分视频、MPEG-4 第二部分视频和其它一些技术的专利许可。
其他的专利许可则需要向另一家称为 VIA Licensing 的私有组织申请,这家公司另外也管理偏向音频压缩的标准如 MPEG-2 AAC 及 MPEG-4 Audio 的专利许可。

H.264 的开源实现

openh264是思科实现的开源H.264编码程序,虽然 H.264 需要交纳不菲的专利费用,但是专利费有一个年度上限,思科把 OpenH264 实现的年度专利费交满后,OpenH264 事实上就可以免费自由的使用了。

x264是一个采用GPL授权的视频编码自由软件。x264 的主要功能在于进行H.264/MPEG-4 AVC的视频编码,而不是作为解码器(decoder)之用。

除去费用问题比较来看:
openh264 CPU 的占用相对 x264低很多
openh264 只支持 baseline profile,x264 支持更多 profile

2、4K内容对于电视标准的需求

HEVC 和 H.264 在不同分辨率下的比较

跟 H.264/MPEG-4 相比,HEVC 的平均比特率减低值为:

分辨率480P720P1080P4K UHDHEVC52%56%62%64%

可见码率下降了 60% 以上。

  • HEVC (H.265) 对 VP9 和 H.264 在码率节省上有较大的优势,在相同 PSNR 下分别节省了 48.3% 和 75.8%。
  • H.264 在编码时间上有巨大优势,对比 VP9 和 HEVC(H.265) ,HEVC 是 VP9 的6倍,VP9 是 H.264 的将近 40 倍
  • 第一行生成带有移动矢量的视频
  • 第二行把每一帧都输出成图片

VP9 和 H.264 和 HEVC 比较

图片 3

4、H.265将促使编码器走向智能化

5) FFmpeg

谈到视频编码相关内容就不得不提一个伟大的软件包 -- FFmpeg。

FFmpeg 是一个自由软件,可以运行音频和视频多种格式的录影、转换、流功能,包含了 libavcodec ——这是一个用于多个项目中音频和视频的解码器库,以及 libavformat ——一个音频与视频格式转换库。

FFmpeg 这个单词中的 FF 指的是 Fast Forward。有些新手写信给 FFmpeg 的项目负责人,询问 FF 是不是代表 Fast Free 或者 Fast Fourier 等意思,FFmpeg 的项目负责人回信说:「Just for the record, the original meaning of FF in FFmpeg is Fast Forward...」

这个项目最初是由 Fabrice Bellard 发起的,而现在是由 Michael Niedermayer 在进行维护。许多FFmpeg的开发者同时也是 MPlayer 项目的成员,FFmpeg 在 MPlayer 项目中是被设计为服务器版本进行开发。

FFmpeg 下载地址是 : FFmpeg Download

  • 可以浏览器输入下载,目前支持 Linux ,Mac OS,Windows 三个主流的平台,也可以自己编译到 Android 或者 iOS 平台。
  • 如果是 Mac OS ,可以通过 brew 安装 brew install ffmpeg --with-libvpx --with-libvorbis --with-ffplay

我们可以用 FFmpeg 来做哪些有用有好玩的事情呢?通过一系列小实验来带大家领略 FFmpeg 的神奇和强大。

FFmpeg 录屏

通过一个小例子看一下怎么在 Mac OS 下面使用 FFmpeg 进行录屏:

输入:

ffmpeg -f avfoundation -list_devices true -i ""

输出:

[AVFoundation input device @ 0x7fbec0c10940] AVFoundation video devices:[AVFoundation input device @ 0x7fbec0c10940] [0] FaceTime HD Camera[AVFoundation input device @ 0x7fbec0c10940] [1] Capture screen 0[AVFoundation input device @ 0x7fbec0c10940] [2] Capture screen 1[AVFoundation input device @ 0x7fbec0c10940] AVFoundation audio devices:[AVFoundation input device @ 0x7fbec0c10940] [0] Built-in Microphone

给出了当前设备支持的所有输入设备的列表和编号,我本地有两块显示器,所以 1 和 2 都是我屏幕,可以选择一块进行录屏。

查看当前的 H.264 编解码器:

输入:

ffmpeg -codecs | grep 264

输出:

 DEV.LS h264 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 (decoders: h264 h264_vda ) (encoders: libx264 libx264rgb )

查看当前的 VP8 编解码器:

输入:

ffmpeg -codecs | grep vp8

输出:

 DEV.L. vp8 On2 VP8 (decoders: vp8 libvpx ) (encoders: libvpx )

可以选择用 vp8 或者 h264 做编码器

ffmpeg -r 30 -f avfoundation -i 1 -vcodec vp8 -quality realtime screen2.webm# -quality realtime 用来优化编码器,如果不加在我的 Air 上帧率只能达到 2

or

ffmpeg -r 30 -f avfoundation -i 1 -vcodec h264 screen.mp4

然后用 ffplay 播放就可以了

ffplay screen.mp4

or

ffplay screen2.webp

ffplay播放

对刚才录制的好的视频进行播放

ffplay screen1.mp4
ffplay screen2.webm

相比H.264,H.265提供了更多不同的工具来降低码率。H.265的编码单位可以选择从最小的8x8到最大的64x64。信息量不多的区域(颜色变化不明显,比如天空的灰色部分)划分的宏块较大,编码后的码字较少,而细节多的地方(细节变化较多,比如大楼部分)划分的宏块就相应的小和多一些,编码后的码字较多,这样就相当于对图像进行了有重点的编码,从而降低了整体的码率,编码效率就相应提高了。这个过程有点像“感兴趣区域编码”,针对重要的更多关键细节的部分进行增强划块,无更多关键细节的部分进行简单划块,但是这个过程在H.265上可以自适应识别实现。

「视频直播技术详解」系列之三:编码和封装,

关于直播的技术文章不少,成体系的不多。我们将用七篇文章,更系统化地介绍当下大热的视频直播各环节的关键技术,帮助视频直播创业者们更全面、深入地了解视频直播技术,更好地技术选型。

视频编码是视频直播技术系列文章的第三篇,是本系列一个非常重要的部分,是移动开发必修的基础课程,本篇文章从理论到实践一网打尽主流编码器。

如果把整个流媒体比喻成一个物流系统,那么编解码就是其中配货和装货的过程,这个过程非常重要,它的速度和压缩比对物流系统的意义非常大,影响物流系统的整体速度和成本。同样,对流媒体传输来说,编码也非常重要,它的编码性能、编码速度和编码压缩比会直接影响整个流媒体传输的用户体验和传输成本。

本系列文章大纲如下,想复习之前文章的直接点击直达链接:

(一)采集

(二)处理

(三)编码和封装

(四)推流和传输

(五)延迟优化

(六)现代播放器原理

(七)SDK 性能测试模型


 

VP9

VP9 的开发从 2011 年第三季开始,目标是在同画质下,比 VP8 编码减少 50%的文件大小,另一个目标则是要在编码效率上超越 HEVC 编码。

2012 年 12 月 13 日,Chromium 浏览器加入了 VP9 编码的支持。Chrome 浏览器则是在 2013 年 2 月 21 日开始支持 VP9 编码的视频播放。

Google 宣布会在 2013 年 6 月 17 日完成 VP9 编码的制定工作,届时Chrome 浏览器将会把 VP9 编码默认引导。2014 年 3 月 18 日,Mozilla 在 Firefox 浏览器中加入了 VP9 的支持。

2015 年 4 月 3 日,谷歌发布了 libvpx1.4.0 增加了对 10 位和 12 位的比特深度支持、4:2:2 和 4:4:4 色度抽样,并 VP9 多核心编/解码。

VP9 是一个开放格式、无权利金的视频编码格式。

  • libvpx

libvpx 是 VP9 的唯一开源实现,由 Google 开发维护,里面有部分代码是 VP8 和 VP9 公用的,其余分别是 VP8 和 VP9 的编解码实现。

编码器的选择

前面梳理了一下编码器的原理和基本流程,编码器经历了数十年的发展,已经从开始的只支持帧内编码演进到现如今的 H.265 和 VP9 为代表的新一代编码器,就目前一些常见的编码器进行分析,带大家探索一下编码器的世界。

某些情况下,针对同一个码流,解码器可以自主决定临时解码层的数量。从低级子层到更高级子层切换的操作可以在临时子层帧(TSA)和步进临时子层帧(STSA)完成。

简介

VP9 的开发从 2011 年第三季开始,目标是在同画质下,比 VP8 编码减少 50%的文件大小,另一个目标则是要在编码效率上超越 HEVC 编码。

2012 年 12 月 13 日,Chromium 浏览器加入了 VP9 编码的支持。Chrome 浏览器则是在 2013 年 2 月 21 日开始支持 VP9 编码的视频播放。

Google 宣布会在 2013 年 6 月 17 日完成 VP9 编码的制定工作,届时Chrome 浏览器将会把 VP9 编码默认引导。2014 年 3 月 18 日,Mozilla 在 Firefox 浏览器中加入了 VP9 的支持。

2015 年 4 月 3 日,谷歌发布了 libvpx1.4.0 增加了对 10 位和 12 位的比特深度支持、4:2:2 和 4:4:4 色度抽样,并 VP9 多核心编/解码。

H.264

H.264/AVC 项目意图创建一种视频标准。与旧标准相比,它能够在更低带宽下提供优质视频(换言之,只有 MPEG-2,H.263 或 MPEG-4 第 2 部分的一半带宽或更少),也不增加太多设计复杂度使得无法实现或实现成本过高。另一目的是提供足够的灵活性以在各种应用、网络及系统中使用,包括高、低带宽,高、低视频分辨率,广播,DVD 存储,RTP/IP 网络,以及 ITU-T 多媒体电话系统。

H.264/AVC 包含了一系列新的特征,使得它比起以前的编解码器不但能够更有效的进行编码,还能在各种网络环境下的应用中使用。这样的技术基础让 H.264 成为包括 YouTube 在内的在线视频公司采用它作为主要的编解码器,但是使用它并不是一件很轻松的事情,理论上讲使用 H.264 需要交纳不菲的专利费用。

和 MPEG-2 第一部分、第二部分,MPEG-4第二部分一样,使用 H.264/AVC 的产品制造商和服务提供商需要向他们的产品所使用的专利的持有者支付专利许可费用。这些专利许可的主要来源是一家称为 MPEG-LA LLC 的私有组织,该组织和 MPEG 标准化组织没有任何关系,但是该组织也管理著 MPEG-2 第一部分系统、第二部分视频、MPEG-4 第二部分视频和其它一些技术的专利许可。

其他的专利许可则需要向另一家称为 VIA Licensing 的私有组织申请,这家公司另外也管理偏向音频压缩的标准如 MPEG-2 AAC 及 MPEG-4 Audio 的专利许可。

  • openh264
  • x264

openh264 是思科实现的开源 H.264 编码,虽然 H.264 需要交纳不菲的专利费用,但是专利费有一个年度上限,思科把 OpenH264 实现的年度专利费交满后,OpenH264 事实上就可以免费自由的使用了。

x264 x264是一个采用GPL授权的视频编码自由软件。x264 的主要功能在于进行 H.264/MPEG-4 AVC 的视频编码,而不是作为解码器之用。

除去费用问题比较来看:

  • openh264 CPU 的占用相对 x264低很多
  • openh264 只支持 baseline profile,x264 支持更多 profile

直播技术之编码和封装

视频编码是本系列一个重要的部分,如果把整个流媒体比喻成一个物流系统,那么编解码就是其中配货和装货的过程,这个过程非常重要,它的速度和压缩比对物流系统的意义非常大,影响物流系统的整体速度和成本。同样,对流媒体传输来说,编码也非常重要,它的编码性能、编码速度和编码压缩比会直接影响整个流媒体传输的用户体验和传输成本

由软件和硬件提供的不断加强的处理能力带动了视频压缩编码的发展。新兴的HEVC视频编码标准意在相对于H.264/AVC将其编码效率提高一倍,并且用一半的比特率就能传送相同质量的视频。HEVC解码器的复杂性与H.264/AVC解码器相比好像没有显著的不同,这使得HEVC解码软件在当前的硬件上非常实用。HEVC编码器/H.265编码器预计将会比H.264/AVC编码器复杂上数倍,并在未来的数年内成为一项研究主题。

VP9 的开源实现

  • libvpx

libvpx 是 VP9 的唯一开源实现,由 Google 开发维护,里面有部分代码是 VP8 和 VP9 公用的,其余分别是 VP8 和 VP9 的编解码实现。

图 3、图 4 两个流程,图 3 是帧内编码,图 4 是帧间编码,从图上看到的主要区别就是第一步不相同,其实这两个流程也是结合在一起的,我们通常说的 I 帧和 P 帧就是分别采用了帧内编码和帧间编码。

FFmpeg录制屏幕并直播

5、更低的码流。反复的质量比较测试已经表明,在相同的图象质量下,相比于H.264,通过H.265编码的视频码流大小比H.264减少大约39-44%。由于质量控制的测定方法不同,这个数据也会有相应的变化。通过主观视觉测试得出的数据显示,在码率减少51-74%的情况下,H.265编码视频的质量还能与H.264编码视频近似甚至更好,其本质上说是比预期的信噪比(PSNR)要好。

2) HEVC/H.265

图片 4图 2

VP9

简介

VP9 的开发从 2011 年第三季开始,目标是在同画质下,比 VP8 编码减少 50%的文件大小,另一个目标则是要在编码效率上超越 HEVC 编码。

2012 年 12 月 13 日,Chromium 浏览器加入了 VP9 编码的支持。Chrome 浏览器则是在 2013 年 2 月 21 日开始支持 VP9 编码的视频播放。

Google 宣布会在 2013 年 6 月 17 日完成 VP9 编码的制定工作,届时Chrome 浏览器将会把 VP9 编码默认引导。2014 年 3 月 18 日,Mozilla 在 Firefox 浏览器中加入了 VP9 的支持。

2015 年 4 月 3 日,谷歌发布了 libvpx1.4.0 增加了对 10 位和 12 位的比特深度支持、4:2:2 和 4:4:4 色度抽样,并 VP9 多核心编/解码。

专利许可

VP9 是一个开放格式、无权利金的视频编码格式。

VP9 的开源实现

libvpx 是 VP9 的唯一开源实现,由 Google 开发维护,里面有部分代码是 VP8 和 VP9 公用的,其余分别是 VP8 和 VP9 的编解码实现。

不同的码流之间切换可以通过断点连接帧(BLA)来拼接。简单的把需要切换的码流的RAP帧标记为BLA放到当前帧的下一个CRA帧的地方,然后传输新码流就可以完成码流拼接的工作。

视频编码的意义

  • 原始视频数据存储空间大,一个 1080P 的 7 s 视频需要 817 MB
  • 原始视频数据传输占用带宽大,10 Mbps 的带宽传输上述 7 s 视频需要 11 分钟

而经过 H.264 编码压缩之后,视频大小只有 708 k ,10 Mbps 的带宽仅仅需要 500 ms ,可以满足实时传输的需求,所以从视频采集传感器采集来的原始视频势必要经过视频编码。

 

但是帧和帧之间因为时间的相关性,后续开发出了一些比较高级的编码器可以采用帧间编码,简单点说就是通过搜索算法选定了帧上的某些区域,然后通过计算当前帧和前后参考帧的向量差进行编码的一种形式,通过下面两个图 2 连续帧我们可以看到,滑雪的同学是向前位移的,但实际上是雪景在向后位移,P 帧通过参考帧(I 或其他 P 帧)就可以进行编码了,编码之后的大小非常小,压缩比非常高。

视频编码的意义

原始视频数据存储空间大,一个 1080P 的 7 s 视频需要 817 MB
原始视频数据传输占用带宽大,10 Mbps 的带宽传输上述 7 s 视频需要 11 分钟
而经过 H.264 编码压缩之后,视频大小只有 708 k ,10 Mbps 的带宽仅仅需要 500 ms ,可以满足实时传输的需求,所以从视频采集传感器采集来的原始视频势必要经过视频编码。

当采用INTRA_MODE预测模式时需要编码luma/chroma intra direction,HEVC/H.265编码中采用了多达35种帧内预测模式,除了planar模式和DC模式外采用了33种基于方向的预测模式[6],精确地从更多的方向消除视频的空间冗余性,进一步提高帧内模式的编码效率。HEVC提出的planar模式能够更好得预测画面的平坦区域,对于高分辨率的大块区域可以取得较好的预测效果。split_flag, skip_flag, luma direction在HEVC熵编码中的上下文建模属于典型的运用空间相邻的同类语法元素作为依据的设计,上下文选择的依据是左侧CU和上侧CU的信息[2],但是在选择top direction时,HEVC并没有采用上面LCU的CU direction作参考,仅仅在LCU内部CU编码时会用到上面CU的direction作为参考[4],这和H.264中选择上面宏块的预测模式有所不同。当采用INTER_MODE模式进行编码时,需要编入ref_frame_idx,mvp_idx,mvd信息,因为prediction info是基于PU为单位进行编码的,所有针对不同的PU分割类型要对每一个PU块的mv信息进行编码。 当一个LCU中所有的CU数据信息编码完成之后要进行terminate标识位编码。

封装

介绍完了视频编码后,再来介绍一些封装。沿用前面的比喻,封装可以理解为采用哪种货车去运输,也就是媒体的容器。

所谓容器,就是把编码器生成的多媒体内容(视频,音频,字幕,章节信息等)混合封装在一起的标准。容器使得不同多媒体内容同步播放变得很简单,而容器的另一个作用就是为多媒体内容提供索引,也就是说如果没有容器存在的话一部影片你只能从一开始看到最后,不能拖动进度条(当然这种情况下有的播放器会话比较长的时间临时创建索引),而且如果你不自己去手动另外载入音频就没有声音,下面介绍几种常见的封装格式和优缺点:

目前,我们在流媒体传输,尤其是直播中主要采用的就是 FLV 和 MPEG2-TS 格式,分别用于 RTMP/HTTP-FLV 和 HLS 协议。

下一期我们将系统讲解视频直播的推流和传输,敬请期待~

 

 本文作者: 卜赫@七牛云布道师,更多云行业技术洞见请访问七牛云博客。

关于直播的技术文章不少,成体系的不多。我们将用七篇文章,更系统化地介绍当下大热的...

前面梳理了一下编码器的原理和基本流程,编码器经历了数十年的发展,已经从开始的只支持帧内编码演进到现如今的 H.265 和 VP9 为代表的新一代编码器,就目前一些常见的编码器进行分析,带大家探索一下编码器的世界。

HEVC 和 H.264 在不同分辨率下的比较

跟 H.264/MPEG-4 相比,HEVC 的平均比特率减低值为:

图片 5

可见码率下降了 60% 以上

  • HEVC (H.265) 对 VP9 和 H.264 在码率节省上有较大的优势,在相同 PSNR 下分别节省了 48.3% 和 75.8%
  • H.264 在编码时间上有巨大优势,对比 VP9 和 HEVC(H.265) ,HEVC 是 VP9 的6倍,VP9 是 H.264 的将近 40 倍

3)更多的考虑并行化设计。

H.265 的开源实现

  • libde265
  • x265

libde265 HEVC 由 struktur 公司以开源许可证 GNU LesserGeneral Public License (LGPL) 提供,观众可以较慢的网速下欣赏到最高品质的影像。跟以前基于H.264标准的解码器相比,libde265 HEVC 解码器可以将您的全高清内容带给多达两倍的受众,或者,减少 50% 流媒体播放所需要的带宽。高清或者 4K/8K 超高清流媒体播放,低延迟/低带宽视频会议,以及完整的移动设备覆盖。具有「拥塞感知」视频编码的稳定性,十分适合应用在 3/4G 和 LTE 网络。

FFmpeg 录制屏幕并直播

可以继续扩展例子1,直播当前屏幕的内容,向大家介绍一下怎么通过几行命令搭建一个测试用的直播服务:

Step 1:首先安装 docker:访问 Docker Download ,按操作系统下载安装。

Step 2:下载 nginx-rtmp 镜像:

docker pull chakkritte/docker-nginx-rtmp

Step 3:创建 nginx html 路径,启动 docker-nginx-rtmp

mkdir ~/rtmpdocker run -d -p 80:80 -p 1935:1935 -v ~/rtmp:/usr/local/nginx/html chakkritte/docker-nginx-rtmp

Step 4:推送屏幕录制到 nignx-rtmp

ffmpeg -y -loglevel warning -f avfoundation -i 2 -r 30 -s 480x320 -threads 2 -vcodec libx264 -f flv rtmp://127.0.0.1/live/test

Step 5:用 ffplay 播放

ffplay rtmp://127.0.0.1/live/test

总结一下,FFmpeg 是个优秀的工具,可以通过它完成很多日常的工作和实验,但是距离提供真正可用的流媒体服务、直播服务还有非常多的工作要做,这方面可以参考七牛云发布的 七牛直播云服务 。

介绍完了视频编码后,再来介绍一些封装。沿用前面的比喻,封装可以理解为采用哪种货车去运输,也就是媒体的容器。

所谓容器,就是把编码器生成的多媒体内容(视频,音频,字幕,章节信息等)混合封装在一起的标准。容器使得不同多媒体内容同步播放变得很简单,而容器的另一个作用就是为多媒体内容提供索引,也就是说如果没有容器存在的话一部影片你只能从一开始看到最后,不能拖动进度条(当然这种情况下有的播放器会话比较长的时间临时创建索引),而且如果你不自己去手动另外载入音频就没有声音,下面介绍几种常见的封装格式和优缺点:

  1. AVI 格式: 它的英文全称为 Audio Video Interleaved ,即音频视频交错格式。它于 1992 年被 Microsoft 公司推出。这种视频格式的优点是图像质量好。由于无损AVI可以保存 alpha 通道,经常被我们使用。缺点太多,体积过于庞大,而且更加糟糕的是压缩标准不统一,最普遍的现象就是高版本 Windows 媒体播放器播放不了采用早期编码编辑的AVI格式视频,而低版本 Windows 媒体播放器又播放不了采用最新编码编辑的AVI格式视频,所以我们在进行一些AVI格式的视频播放时常会出现由于视频编码问题而造成的视频不能播放或即使能够播放,但存在不能调节播放进度和播放时只有声音没有图像等一些莫名其妙的问题。

  2. DV-AVI 格式: DV的英文全称是 Digital Video Format ,是由索尼、松下、JVC 等多家厂商联合提出的一种家用数字视频格式。数字摄像机就是使用这种格式记录视频数据的。它可以通过电脑的 IEEE 1394 端口传输视频数据到电脑,也可以将电脑中编辑好的的视频数据回录到数码摄像机中。这种视频格式的文件扩展名也是 avi。电视台采用录像带记录模拟信号,通过 EDIUS 由IEEE 1394端口采集卡从录像带中采集出来的视频就是这种格式。

  3. QuickTime File Format 格式: 美国Apple公司开发的一种视频格式,默认的播放器是苹果的QuickTime。具有较高的压缩比率和较完美的视频清晰度等特点,并可以保存alpha通道。

  4. MPEG 格式(文件后缀可以是 .MPG .MPEG .MPE .DAT .VOB .ASF .3GP .MP4等) : 它的英文全称为 Moving Picture Experts Group,即运动图像专家组格式,该专家组建于1988年,专门负责为 CD 建立视频和音频标准,而成员都是为视频、音频及系统领域的技术专家。MPEG 文件格式是运动图像压缩算法的国际标准。MPEG 格式目前有三个压缩标准,分别是 MPEG-1、MPEG-2、和MPEG-4 。MPEG-1、MPEG-2 目前已经使用较少,着重介绍 MPEG-4,其制定于1998年,MPEG-4 是为了播放流式媒体的高质量视频而专门设计的,以求使用最少的数据获得最佳的图像质量。目前 MPEG-4 最有吸引力的地方在于它能够保存接近于DVD画质的小体积视频文件。

  5. WMV 格式(后缀为.WMV .ASF): 它的英文全称为Windows Media Video,也是微软推出的一种采用独立编码方式并且可以直接在网上实时观看视频节目的文件压缩格式。WMV格式的主要优点包括:本地或网络回放,丰富的流间关系以及扩展性等。WMV 格式需要在网站上播放,需要安装 Windows Media Player,很不方便,现在已经几乎没有网站采用了。

  6. Real Video 格式(后缀为 .RM .RMVB): Real Networks 公司所制定的音频视频压缩规范称为Real Media。用户可以使用 RealPlayer 根据不同的网络传输速率制定出不同的压缩比率,从而实现在低速率的网络上进行影像数据实时传送和播放。RMVB 格式:这是一种由RM视频格式升级延伸出的新视频格式,当然性能上有很大的提升。RMVB 视频也是有着较明显的优势,一部大小为700MB左右的 DVD 影片,如果将其转录成同样品质的 RMVB 格式,其个头最多也就 400MB 左右。大家可能注意到了,以前在网络上下载电影和视频的时候,经常接触到 RMVB 格式,但是随着时代的发展这种格式被越来越多的更优秀的格式替代,著名的人人影视字幕组在2013年已经宣布不再压制 RMVB 格式视频。

  7. Flash Video 格式:由 Adobe Flash 延伸出来的的一种流行网络视频封装格式。随着视频网站的丰富,这个格式已经非常普及。

  8. Matroska 格式:是一种新的多媒体封装格式,这个封装格式可把多种不同编码的视频及16条或以上不同格式的音频和语言不同的字幕封装到一个 Matroska Media 档内。它也是其中一种开放源代码的多媒体封装格式。Matroska 同时还可以提供非常好的交互功能,而且比 MPEG 的方便、强大。

  9. MPEG2-TS 格式 (Transport Stream“传输流”;又称MTS、TS)是一种传输和存储包含音效、视频与通信协议各种数据的标准格式,用于数字电视广播系统,如DVB、ATSC、IPTV等等。MPEG2-TS 定义于 MPEG-2 第一部分,系统(即原来之ISO/IEC标准13818-1或ITU-T Rec. H.222.0)。Media Player Classic、VLC 多媒体播放器等软件可以直接播放MPEG-TS文件。

目前,我们在流媒体传输,尤其是直播中主要采用的就是 FLV 和 MPEG2-TS 格式,分别用于 RTMP/HTTP-FLV 和 HLS 协议。

下一期我们将系统讲解视频直播的推流和传输,尽请期待~

基本原理

那为什么巨大的原始视频可以编码成很小的视频呢?这其中的技术是什么呢?在讲技术之前我们应先建立视频即连续图片的概念。

核心思想就是去除冗余信息:

  • 空间冗余:一张图片相邻像素之间有较强的相关性
  • 时间冗余:视频序列的相邻图片之间内容相似
  • 编码冗余:不同像素值出现的概率不同
  • 视觉冗余:人的视觉系统对某些细节不敏感
  • 知识冗余:规律性的结构可由先验知识和背景知识得到

视频本质上讲是一系列图片连续快速的播放,所以对视频压缩最简单的方式就是对每一帧图片进行压缩,例如比较古老的 MJPEG 编码就是对视频中每帧图片进行压缩,这种编码方式只有帧内编码,利用空间上的取样预测来编码。形象的比喻就是把每帧都作为一张图片,采用 JPEG 的编码格式对图片进行压缩,这种编码只考虑了一张图片内的冗余信息压缩,如图 1,绿色的部分就是当前待编码的区域,灰色就是尚未编码的区域,绿色区域可以根据已经编码的部分进行预测(绿色的左边,下边,左下等)。

图片 6

但是帧和帧之间因为时间的相关性,后续开发出了一些比较高级的编码器可以采用帧间编码,简单点说就是通过搜索算法选定了帧上的某些区域,然后通过计算当前帧和前后参考帧的向量差进行编码的一种形式,通过下面两个图 2 连续帧我们可以看到,滑雪的同学是向前位移的,但实际上是雪景在向后位移,P 帧通过参考帧(I 或其他 P 帧)就可以进行编码了,编码之后的大小非常小,压缩比非常高。

关于帧的参考连接

图片 7

可能有同学对这两张图片怎么来的感兴趣,这里用了 FFmpeg 的两行命令来实现,具体 FFmpeg 的更多内容请看后续章节:

  • 第一行生成带有移动矢量的视频
  • 第二行把每一帧都输出成图片

使用命令

ffmpeg  -flags2 +export_mvs -i tutu.mp4 -vf codecview=mv=pf+bf+bb tutudebug2.mp4

ffmpeg -i tutudebug2.mp4 'tutunormal-%03d.bmp'

   

除了空间冗余和时间冗余的压缩,主要还有编码压缩和视觉压缩,下面是一个编码器主要的流程图:

图片 8

图 3、图 4 两个流程,图 3 是帧内编码,图 4 是帧间编码,从图上看到的主要区别就是第一步不相同,其实这两个流程也是结合在一起的,我们通常说的 I 帧和 P 帧就是分别采用了帧内编码和帧间编码。

高效率痨视频编码器使网络更加灵活、适应性更强。编码器让模拟信号进入了IP系统,最大的好处就是节约了成本,弥补了技术差距。

3) VP8

除了空间冗余和时间冗余的压缩,主要还有编码压缩和视觉压缩,下面是一个编码器主要的流程图:

VP8

简介

VP8 是一个开放的视频压缩格式,最早由 On2 Technologies 开发,随后由 Google 发布。同时 Google 也发布了 VP8 编码的实做库:libvpx,以 BSD 授权条款的方式发行,随后也附加了专利使用权。而在经过一些争论之后,最终 VP8 的授权确认为一个开放源代码授权。

目前支持 VP8 的网页浏览器有 Opera、Firefox 和 Chrome。

专利许可

2013 年三月,Google 与 MPEG LA 及 11 个专利持有者达成协议,让Google 获取 VP8 以及其之前的 VPx 等编码所可能侵犯的专利授权,同时 Google 也可以无偿再次授权相关专利给 VP8 的用户,此协议同时适用于下一代 VPx 编码。至此 MPEG LA 放弃成立 VP8 专利集中授权联盟,VP8 的用户将可确定无偿使用此编码而无须担心可能的专利侵权授权金的问题。

VP8的开源实现

libvpx 是 VP8 的唯一开源实现,由 On2 Technologies 开发,Google 收购后将其开放源码,License 非常宽松可以自由使用。

H.265编码标准是否收费成焦点

FFmpeg 录制屏幕并直播

可以继续扩展例子1,直播当前屏幕的内容,向大家介绍一下怎么通过几行命令搭建一个测试用的直播服务:

Step 1:首先安装 docker:
访问 Docker Download ,按操作系统下载安装。

Step 2:下载 nginx-rtmp 镜像:

docker pull chakkritte/docker-nginx-rtmp

Step 3:创建 nginx html 路径,启动 docker-nginx-rtmp

mkdir ~/rtmp

docker run -d -p 80:80 -p 1935:1935 -v ~/rtmp:/usr/local/nginx/html chakkritte/docker-nginx-rtmp

Step 4:推送屏幕录制到 nignx-rtmp

ffmpeg -y -loglevel warning -f avfoundation -i 2 -r 30 -s 480x320 -threads 2 -vcodec libx264  -f flv rtmp://127.0.0.1/live/test

Step 5:用 ffplay 播放

ffplay rtmp://127.0.0.1/live/test

总结一下,FFmpeg 是个优秀的工具,可以通过它完成很多日常的工作和实验,但是距离提供真正可用的流媒体服务、直播服务还有非常多的工作要做,这方面可以参考七牛云发布的 七牛直播云服务 。

 

FFmpeg 视频转换成 gif

有一个特别有用的需求,在网上发现了一个特别有趣的视频想把它转换成一个动态表情,作为一个 IT 从业者,我第一个想到的不是下载一个转码器,也不是去找一个在线转换网站,直接利用手边的工具 FFmpeg,瞬间就完成了转码:

ffmpeg -ss 10 -t 10 -i tutu.mp4 -s 80x60 tutu.gif## -ss 指从 10s 开始转码,-t 指转换 10s 的视频 -s

FFmpeg录屏

通过一个小例子看一下怎么在 Mac OS 下面使用 FFmpeg 进行录屏:

输入:

ffmpeg -f avfoundation -list_devices true -i ""

输出:

[AVFoundation input device @ 0x7fbec0c10940] AVFoundation video devices:
[AVFoundation input device @ 0x7fbec0c10940] [0] FaceTime HD Camera
[AVFoundation input device @ 0x7fbec0c10940] [1] Capture screen 0
[AVFoundation input device @ 0x7fbec0c10940] [2] Capture screen 1
[AVFoundation input device @ 0x7fbec0c10940] AVFoundation audio devices:
[AVFoundation input device @ 0x7fbec0c10940] [0] Built-in Microphone

给出了当前设备支持的所有输入设备的列表和编号,我本地有两块显示器,所以 1 和 2 都是我屏幕,可以选择一块进行录屏。

HEVC在视频编码算法方面,还在不断的进行着扩展式的发展,以便应多应用需求的不断变化,这些扩展发展的主要研究方向包括:

H.264 的开源实现

  • openh264
  • x264

openh264 是思科实现的开源 H.264 编码,虽然 H.264 需要交纳不菲的专利费用,但是专利费有一个年度上限,思科把 OpenH264 实现的年度专利费交满后,OpenH264 事实上就可以免费自由的使用了。

x264 x264是一个采用GPL授权的视频编码自由软件。x264 的主要功能在于进行 H.264/MPEG-4 AVC 的视频编码,而不是作为解码器(decoder)之用。

除去费用问题比较来看:

  • openh264 CPU 的占用相对 x264低很多
  • openh264 只支持 baseline profile,x264 支持更多 profile

选择编码器

这里可以选择vp8或者h264

选用vp8编解码器

ffmpeg -r 30 -f avfoundation -i 1 -vcodec vp8 -quality realtime screen2.webm
# -quality realtime 用来优化编码器

选用h264做编解码器

ffmpeg -r 30 -f avfoundation -i 1 -vcodec h264 screen1.mp4

prediction mode包括MODE_INTRA和MODE_INTER两种模式,当slice type=I_Slice时,prediction mode=MODE_INTRA,当slice type=P_Slice/B_Slice时,prediction mode可以是MODE_INTER,也可以是MODE_INTRA,后者将采用intra的预测方式,编码预测方向信息。为了节省码字,slice type=I_Slice时预测信息不写入码流,只对P_Slice和B_Slice的prediction mode进行编码。

专利许可

2013 年三月,Google 与 MPEG LA 及 11 个专利持有者达成协议,让Google 获取 VP8 以及其之前的 VPx 等编码所可能侵犯的专利授权,同时 Google 也可以无偿再次授权相关专利给 VP8 的用户,此协议同时适用于下一代 VPx 编码。至此 MPEG LA 放弃成立 VP8 专利集中授权联盟,VP8 的用户将可确定无偿使用此编码而无须担心可能的专利侵权授权金的问题。

延迟优化

FFmpeg

谈到视频编码相关内容就不得不提一个伟大的软件包 -- FFmpeg。

FFmpeg 是一个自由软件,可以运行音频和视频多种格式的录影、转换、流功能,包含了 libavcodec ——这是一个用于多个项目中音频和视频的解码器库,以及 libavformat ——一个音频与视频格式转换库。

FFmpeg 这个单词中的 FF 指的是 Fast Forward。有些新手写信给 FFmpeg 的项目负责人,询问 FF 是不是代表 Fast Free 或者 Fast Fourier 等意思,FFmpeg 的项目负责人回信说:「Just for the record, the original meaning of FF in FFmpeg is Fast Forward...」

这个项目最初是由 Fabrice Bellard 发起的,而现在是由 Michael Niedermayer 在进行维护。许多FFmpeg的开发者同时也是 MPlayer 项目的成员,FFmpeg 在 MPlayer 项目中是被设计为服务器版本进行开发。

FFmpeg 下载地址是 :

新的纯随机读取(CRA)语法定义了如何使用处于随机读取点(RAP)位置的关键帧。

简介

高效率视频编码(High Efficiency Video Coding,简称HEVC)是一种视频压缩标准,被视为是 ITU-T H.264/MPEG-4 AVC 标准的继任者。2004 年开始由 ISO/IEC Moving Picture Experts Group(MPEG)和 ITU-T Video Coding Experts Group(VCEG)作为 ISO/IEC 23008-2 MPEG-H Part 2 或称作 ITU-T H.265 开始制定。第一版的 HEVC/H.265 视频压缩标准在 2013 年 4 月 13 日被接受为国际电信联盟(ITU-T)的正式标准。HEVC 被认为不仅提升视频质量,同时也能达到 H.264/MPEG-4 AVC 两倍之压缩率(等同于同样画面质量下比特率减少了 50%),可支持 4K 分辨率甚至到超高清电视(UHDTV),最高分辨率可达到 8192×4320(8K分辨率)。

SDK 性能测试模型

查看当前的编解码器

查看H.264

输入:

ffmpeg -codecs | grep 264

输出:

DEV.LS h264  H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 (decoders: h264 h264_vda ) (encoders: libx264 libx264rgb )

查看VP8

输入:

ffmpeg -codecs | grep vp8

输出:

DEV.L. vp8  On2 VP8 (decoders: vp8 libvpx ) (encoders: libvpx )

Dependentslice和WPP机制解决了以往H.264等编码技术中熵编码环节无法并行实现的问题,使得整个编解码过程中DCT、运动估计、运动补偿、熵编码等任务模块的划分更加均衡,显著提高并行加速比。

基本原理

那为什么巨大的原始视频可以编码成很小的视频呢?这其中的技术是什么呢?
核心思想就是去除冗余信息:

  • 空间冗余:图像相邻像素之间有较强的相关性
  • 时间冗余:视频序列的相邻图像之间内容相似
  • 编码冗余:不同像素值出现的概率不同
  • 视觉冗余:人的视觉系统对某些细节不敏感
  • 知识冗余:规律性的结构可由先验知识和背景知识得到

视频本质上讲是一系列图片连续快速的播放,最简单的压缩方式就是对每一帧图片进行压缩,例如比较古老的 MJPEG 编码就是这种编码方式,这种编码方式只有帧内编码,利用空间上的取样预测来编码。形象的比喻就是把每帧都作为一张图片,采用 JPEG 的编码格式对图片进行压缩,这种编码只考虑了一张图片内的冗余信息压缩,如图 1,绿色的部分就是当前待编码的区域,灰色就是尚未编码的区域,绿色区域可以根据已经编码的部分进行预测(绿色的左边,下边,左下等)。

图片 9

图1

但是帧和帧之间因为时间的相关性,后续开发出了一些比较高级的编码器可以采用帧间编码,简单点说就是通过搜索算法选定了帧上的某些区域,然后通过计算当前帧和前后参考帧的向量差进行编码的一种形式,通过下面两个图 2 连续帧我们可以看到,滑雪的同学是向前位移的,但实际上是雪景在向后位移,P 帧通过参考帧(I 或其他 P 帧)就可以进行编码了,编码之后的大小非常小,压缩比非常高。

图片 10

图 2

可能有同学对这两张图片怎么来的感兴趣,这里用了 FFmpeg 的两行命令来实现,具体 FFmpeg 的更多内容请看后续章节:

  • 第一行生成带有移动矢量的视频
  • 第二行把每一帧都输出成图片
ffmpeg  -flags2 +export_mvs -i tutu.mp4 -vf codecview=mv=pf+bf+bb tutudebug2.mp4

 

ffmpeg -i tutudebug2.mp4 'tutunormal-%03d.bmp'

   

除了空间冗余和时间冗余的压缩,主要还有编码压缩和视觉压缩,下面是一个编码器主要的流程图:

图片 11

图 3
图片 12

图 4

图 3、图 4 两个流程,图 3 是帧内编码,图 4 是帧间编码,从图上看到的主要区别就是第一步不相同,其实这两个流程也是结合在一起的,我们通常说的 I 帧和 P 帧就是分别采用了帧内编码和帧间编码。

 

HEVC/H.265

高效率视频编码(High Efficiency Video Coding,简称HEVC)是一种视频压缩标准,被视为是 ITU-T H.264/MPEG-4 AVC 标准的继任者。2004 年开始由 ISO/IEC Moving Picture Experts Group和 ITU-T Video Coding Experts Group作为 ISO/IEC 23008-2 MPEG-H Part 2 或称作 ITU-T H.265 开始制定。第一版的 HEVC/H.265 视频压缩标准在 2013 年 4 月 13 日被接受为国际电信联盟的正式标准。HEVC 被认为不仅提升视频质量,同时也能达到 H.264/MPEG-4 AVC 两倍之压缩率(等同于同样画面质量下比特率减少了 50%),可支持 4K 分辨率甚至到超高清电视,最高分辨率可达到 8192×4320。

  • libde265
  • x265

libde265 HEVC 由 struktur 公司以开源许可证 GNU LesserGeneral Public License 提供,观众可以较慢的网速下欣赏到最高品质的影像。跟以前基于H.264标准的解码器相比,libde265 HEVC 解码器可以将您的全高清内容带给多达两倍的受众,或者,减少 50% 流媒体播放所需要的带宽。高清或者 4K/8K 超高清流媒体播放,低延迟/低带宽视频会议,以及完整的移动设备覆盖。具有「拥塞感知」视频编码的稳定性,十分适合应用在 3/4G 和 LTE 网络。

HEVC Advance 要求所有包括苹果、YouTube、Netflix、Facebook、亚马逊等使用 H.265 技术的内容制造商上缴内容收入的 0.5%作为技术使用费,而整个流媒体市场每年达到约 1000 亿美元的规模,且不断增长中,征收 0.5%绝对是一笔庞大的费用。而且他们还没有放过设备制造商,其中电视厂商需要支付每台 1.5 美元、移动设备厂商每台 0.8 美元的专利费。他们甚至没有放过蓝光设备播放器、游戏机、录像机这样的厂商,这些厂商必须支付每台 1.1 美元的费用。最无法令人接受的是,HEVC Advance 的专利使用权追溯到了厂商的「」”,意思是之前已经发售的产品依然要追缴费用。

x265 是由 MulticoreWare 开发,并开源。采用 GPL 协议,但是资助这个项目的几个公司组成了联盟可以在非 GPL 协议下使用这个软件。

视频转换成gif

有一个特别有用的需求,在网上发现了一个特别有趣的视频想把它转换成一个动态表情,作为一个 IT 从业者,我第一个想到的不是下载一个转码器,也不是去找一个在线转换网站,直接利用手边的工具 FFmpeg,瞬间就完成了转码:

ffmpeg -ss 10 -t 10  -i tutu.mp4  -s 80x60  tutu.gif
## -ss 指从 10s 开始转码,-t 指转换 10s 的视频 -s

1、H.264编码弊端明显,但仍是市场主流

专利许可

HEVC Advance 要求所有包括苹果、YouTube、Netflix、Facebook、亚马逊等使用 H.265 技术的内容制造商上缴内容收入的 0.5%作为技术使用费,而整个流媒体市场每年达到约 1000 亿美元的规模,且不断增长中,征收 0.5%绝对是一笔庞大的费用。而且他们还没有放过设备制造商,其中电视厂商需要支付每台 1.5 美元、移动设备厂商每台 0.8 美元的专利费。他们甚至没有放过蓝光设备播放器、游戏机、录像机这样的厂商,这些厂商必须支付每台 1.1 美元的费用。最无法令人接受的是,HEVC Advance 的专利使用权追溯到了厂商的「」”,意思是之前已经发售的产品依然要追缴费用。

x265 是由 MulticoreWare 开发,并开源。采用 GPL 协议,但是资助这个项目的几个公司组成了联盟可以在非 GPL 协议下使用这个软件。

ffmpeg -flags2 +export_mvs -i tutu.mp4 -vf codecview=mv=pf+bf+bb tutudebug2.mp4ffmpeg -i tutudebug2.mp4 'tutunormal-%03d.bmp'

1、H.265/ HEVC编码标准建立在众多专利技术之上

VP8 的开源实现

  • libvpx

libvpx 是 VP8 的唯一开源实现,由 On2 Technologies 开发,Google 收购后将其开放源码,License 非常宽松可以自由使用。

图片 13图1

一个有前途的替代方法是在多视图三维视频的传播视频加上深度的显微)格式。MVD的格式,通常只有几个观点实际上是编码,但他们每视角都是与编码深度数据相关的,,代表基本几何捕获的视频场景。基于传输视频图像和深度地图,另外适合显示3D视频内容的自动立体显示可以使用基于深度图像生成呈现在接收机端(DIBR)技术。

编码器的选择

前面梳理了一下编码器的原理和基本流程,编码器经历了数十年的发展,已经从开始的只支持帧内编码演进到现如今的 H.265 和 VP9 为代表的新一代编码器,就目前一些常见的编码器进行分析,带大家探索一下编码器的世界。

如果把整个流媒体比喻成一个物流系统,那么编解码就是其中配货和装货的过程,这个过程非常重要,它的速度和压缩比对物流系统的意义非常大,影响物流系统的整体速度和成本。同样,对流媒体传输来说,编码也非常重要,它的编码性能、编码速度和编码压缩比会直接影响整个流媒体传输的用户体验和传输成本。

H.265编码在视频存储方面是一大难题,能否用大容量的蓝光光盘存储呢?理论上这是H.264格式编码的发展,但空间仍然是个难题。采用H.264视频编码的4K电影需具备至少100G空间蓝光碟片,那么在网络视频以及监控行业领域内又是否能找到100G支持可擦写的光盘呢?

VP9 和 H.264 和 HEVC 比较

CodecHEVCx264vp9HEVC-42.2%32.6%x26475.8%18.5%vp948.3%-14.6%CodecHEVC vs. VP9(in %)VP9 vs. x264 (in %)Total Average61239399

引用 Comparative Assessment of H.265/MPEG-HEVC, VP9, and
H.264/MPEG-AVC Encoders for Low-Delay Video Applications 这篇比较新的论文对,低延迟视频进行编码的测试结果。

  • 原始视频数据存储空间大,一个 1080P 的 7 s 视频需要 817 MB
  • 原始视频数据传输占用带宽大,10 Mbps 的带宽传输上述 7 s 视频需要 11 分钟

H.265/HEVC编码器产品化后,对安防各个行业架构都会产生影响。不仅仅是简单的视频编码器由H.264/AVC替换为H.265/HEVC,对前端成像采集、平台架构、存储、后端显示、都有明显的影响。浙江宇视科技有限公司从很早之前就已经在各个环节做好充分准备,已经推出了4KUHDV的IPC,型号为HIC5681-L。已经在镜头设计、ISP成像处理、网络传输、平台架构、矩阵存储等各个方面做好充足准备。

4) VP9

本系列文章大纲如下,想复习之前文章的直接点击直达链接:

内部访问单位,所谓的独立视图的视频图像传输第一次直接紧随其后的是深度映射关联。此后,其他视图的视频图片和深度地图直接传输,视频画面总是紧随其后的是深度映射关联。原则上每个组件使用HEVC-based编码器信号编码。相应的比特流数据包多路形成了三维视频比特流。独立的视频图像是使用非改编的HEVC编码器编码。

简介

H.264/AVC 项目意图创建一种视频标准。与旧标准相比,它能够在更低带宽下提供优质视频(换言之,只有 MPEG-2,H.263 或 MPEG-4 第 2 部分的一半带宽或更少),也不增加太多设计复杂度使得无法实现或实现成本过高。另一目的是提供足够的灵活性以在各种应用、网络及系统中使用,包括高、低带宽,高、低视频分辨率,广播,DVD 存储,RTP/IP 网络,以及 ITU-T 多媒体电话系统。

H.264/AVC 包含了一系列新的特征,使得它比起以前的编解码器不但能够更有效的进行编码,还能在各种网络环境下的应用中使用。这样的技术基础让 H.264 成为包括 YouTube 在内的在线视频公司采用它作为主要的编解码器,但是使用它并不是一件很轻松的事情,理论上讲使用 H.264 需要交纳不菲的专利费用。

  • 空间冗余:图像相邻像素之间有较强的相关性
  • 时间冗余:视频序列的相邻图像之间内容相似
  • 编码冗余:不同像素值出现的概率不同
  • 视觉冗余:人的视觉系统对某些细节不敏感
  • 知识冗余:规律性的结构可由先验知识和背景知识得到

2)使用新的MV(运动矢量)预测方式。

FFmpeg 录屏

通过一个小例子看一下怎么在 Mac OS 下面使用 FFmpeg 进行录屏:

输入:

ffmpeg -f avfoundation -list_devices true -i ""

输出:

[AVFoundation input device @ 0x7fbec0c10940] AVFoundation video devices:
[AVFoundation input device @ 0x7fbec0c10940] [0] FaceTime HD Camera
[AVFoundation input device @ 0x7fbec0c10940] [1] Capture screen 0
[AVFoundation input device @ 0x7fbec0c10940] [2] Capture screen 1
[AVFoundation input device @ 0x7fbec0c10940] AVFoundation audio devices:
[AVFoundation input device @ 0x7fbec0c10940] [0] Built-in Microphone

  给出了当前设备支持的所有输入设备的列表和编号,我本地有两块显示器,所以 1 和 2 都是我屏幕,可以选择一块进行录屏。

查看当前的 H.264 编解码器:

输入:

ffmpeg -codecs | grep 264

输出:

 DEV.LS h264                 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 (decoders: h264 h264_vda ) (encoders: libx264 libx264rgb )

查看当前的 VP8 编解码器:

输入:

ffmpeg -codecs | grep vp8

输出:

DEV.L. vp8                  On2 VP8 (decoders: vp8 libvpx ) (encoders: libvpx )

可以选择用 vp8 或者 h264 做编码器

ffmpeg -r 30 -f avfoundation -i 1 -vcodec vp8 -quality realtime screen2.webm
# -quality realtime 用来优化编码器,如果不加在我的 Air 上帧率只能达到 2

or

ffmpeg -r 30 -f avfoundation -i 1 -vcodec h264 screen.mp4

然后用 ffplay 播放就可以了

ffplay screen.mp4

or

ffplay screen2.webp

编码和封装

HEVCH.265编码器 —技术难点分析

视频本质上讲是一系列图片连续快速的播放,最简单的压缩方式就是对每一帧图片进行压缩,例如比较古老的 MJPEG 编码就是这种编码方式,这种编码方式只有帧内编码,利用空间上的取样预测来编码。形象的比喻就是把每帧都作为一张图片,采用 JPEG 的编码格式对图片进行压缩,这种编码只考虑了一张图片内的冗余信息压缩,如图 1,绿色的部分就是当前待编码的区域,灰色就是尚未编码的区域,绿色区域可以根据已经编码的部分进行预测(绿色的左边,下边,左下等)。

3、8K产品化的实现

处理

实时软件解码的HEVC比特流是非常可行的,目前的发电设备:1080p60的解码的笔记本电脑或台式机,移动设备上(包括合理的比特率范围内)和480p30解码。这样的性能是可以实现的,而无需依靠在解码过程中的多个内核。这是很重要的,因为它可提供快速,广泛采用HEVC软件路径。

视频编码是视频直播技术系列文章的第三篇,是本系列一个非常重要的部分,是移动开发必修的基础课程,本篇文章从理论到实践一网打尽主流编码器。

如今的视频内容平台是史无前例的数量,视频内容当然迎来了大丰富阶段,观众关注的不在是看不看得到内容,而是清晰度够不够高,因而视频质量的衡量标准清晰度就变得尤为重要。视频标准从标清480p、高清720p,到近两年大众已经习以为常的高清1080p,乃至超高清4K这迅速的演进,足以表明清晰度是大家对视频方面最迫切的需要。虽然从10年的《阿凡达》D转3D立体显示也曾风靡过一阵,但需要带眼镜,市场一直止步于电影院观看,受众也还是有限。

采集

保留下来用以参考的帧集合叫做参考帧集合(RPS)。

VP9 和 H.264 和 HEVC 比较

Codec HEVC x264 vp9
HEVC -42.2% 32.6%
x264 75.8% 18.5%
vp9 48.3% -14.6%
Codec HEVC vs. VP9 VP9 vs. x264
Total Average 612 39399

引用 Comparative Assessment of H.265/MPEG-HEVC, VP9, andH.264/MPEG-AVC Encoders for Low-Delay Video Applications 这篇比较新的论文对,低延迟视频进行编码的测试结果。

跟 H.264/MPEG-4 相比,HEVC 的平均比特率减低值为:

分辨率 480P 720P 1080P 4K UHD
HEVC 52% 56% 62% 64%

可见码率下降了 60% 以上。

  • HEVC 对 VP9 和 H.264 在码率节省上有较大的优势,在相同 PSNR 下分别节省了 48.3% 和 75.8%。
  • H.264 在编码时间上有巨大优势,对比 VP9 和 HEVC ,HEVC 是 VP9 的6倍,VP9 是 H.264 的将近 40 倍

谈到视频编码相关内容就不得不提一个伟大的软件包 -- FFmpeg。

FFmpeg 是一个自由软件,可以运行音频和视频多种格式的录影、转换、流功能,包含了 libavcodec ——这是一个用于多个项目中音频和视频的解码器库,以及 libavformat ——一个音频与视频格式转换库。

FFmpeg 这个单词中的 FF 指的是 Fast Forward。有些新手写信给 FFmpeg 的项目负责人,询问 FF 是不是代表 Fast Free 或者 Fast Fourier 等意思,FFmpeg 的项目负责人回信说:「Just for the record, the original meaning of FF in FFmpeg is Fast Forward...」

这个项目最初是由 Fabrice Bellard 发起的,而现在是由 Michael Niedermayer 在进行维护。许多FFmpeg的开发者同时也是 MPlayer 项目的成员,FFmpeg 在 MPlayer 项目中是被设计为服务器版本进行开发。

FFmpeg 下载地址是 : FFmpeg Download

  • 可以浏览器输入下载,目前支持 Linux ,Mac OS,Windows 三个主流的平台,也可以自己编译到 Android 或者 iOS 平台。
  • 如果是 Mac OS ,可以通过 brew 安装 brew install ffmpeg --with-libvpx --with-libvorbis --with-ffplay

我们可以用 FFmpeg 来做哪些有用有好玩的事情呢?通过一系列小实验来带大家领略 FFmpeg 的神奇和强大。

TSA点允许切换到比当前子层高的任意子层,STSA只允许切换到只比当前子层高一级的下一层(除非更高的层也包含TSA或者STSA帧)。

推流和传输

在编码器方面,需要大量的额外工作作出实时编码器,提供媲美的HM编码器的压缩效率。预计这将在今后几年里是一个活跃的研究领域。

关于直播的技术文章不少,成体系的不多。我们将用七篇文章,更系统化地介绍当下大热的视频直播各环节的关键技术,帮助视频直播创业者们更全面、深入地了解视频直播技术,更好地技术选型。

H.265初出茅庐,实力非前辈可比,在压缩效率、并行处理能力以及网络适应性方面的极大进步必然是顺应大势发展的,乘上windows10这场大船一定很快能进入一个全新的高度。

而经过 H.264 编码压缩之后,视频大小只有 708 k ,10 Mbps 的带宽仅仅需要 500 ms ,可以满足实时传输的需求,所以从视频采集传感器采集来的原始视频势必要经过视频编码。

2、8K身影在展览中的闪现

3、4K内容播放顺畅需要的网路宽带支持

评判一个视频硬件编码器的性能,主要考虑几点:

解码和显示顺序都在RAP帧之后的帧叫做后置帧,它们不可以将LP作为它们的参考。

众所周知,视频编码器用于实现视频源痨数字化和网络化,具体功能包括监控点模拟视音频信息和报警信息的接入、编码/压缩、传输以及外围设备的控制。

从目前市场状况和技术趋势上看H.265编码器在中国市场瞄准的应用与全球市场是一致的,甚至很多产品的市场趋势是由中国厂商在引导着的。随着4K面板的成本快速下跌,4K内容的需求将会逐渐上升。此外,由于屏幕品质提升,对于更高色彩逼真度的要求也会增加。消费者对于观看质量要求的日益提高对新产品的认可和买单将是对产品的唯一验证。

(4)优化视频图像的主客观质量评价方法,目前主要以峰值信噪比以及结构相似性指标作为评价标准,难以精确模拟人类视觉系统的功能,目前正在进一步提高和改进。

1、H.265是否收费暂无定论

显然,4K分辨率流媒体视频对网络环境的要求更高。Netflix、亚马逊的数据,至少需要15Mbps-20Mbps的带宽。不幸的是,即使用户拥有良好的网络环境,也不能完全保证4K流媒体的流畅,有时候还取决于平台服务器和互联网服务提供商(ISP)。比如目前即使我们家中达到了20Mbps的宽带连接,有时候播放1080P在线视频仍然不够流畅,这还需要平台服务商优化解码、提供更稳定的服务器以及ISP优化。

互联网在中国历经二十几年的发展已经影响了中国人生活的方方面面,现今商人的生意经无有不围绕互联网展开的。编码技术的进步使视频的传输一点一步的在互联网中占据越来越多的位置,H.265/HEVC编码的产生加快了网络视频的生活化进程。4K超清分辨率是电视行业的必然发展趋势,即将取代1080P,成为主流。当然,4K流媒体视频也会带来一系列的问题。比如都有哪些供应商、需要多少带宽、会被压缩吗、画质如何等等。

H.265/HEVC编码进行生活化

面对高质量视频内容,和宽带不足的矛盾,显然H.265/HEVC编码解码标准是解决之道,这自然得益于H.265/HEVC编码解码标准的极高性能。H.265新加入的压缩系统可以把传输1080p视频所需的带宽降低50%,实际数字大概在30%左右。这样就能增加视频传输的质量,而不会对网络带宽造成负担;而蓝光和电视节目,还可以因此体验到4K视频,或许还有更高质量的3D。

TAG标签:
版权声明:本文由必威发布于必威-操作系统,转载请注明出处:视频编码是视频直播技术系列文章的第三篇,x