软件工程师能力认证C1任务01-进制与信息编码

挑战


RTC(Real-time Communications,实时通信)技术在这次新冠肺炎疫情的全球大爆发中,为视频会议、直播连麦、远程协助提供了有力的支撑。但是如果让一个普通的软件工程师来做这方面的开发,有可能是一头雾水。即使是一些有多年开发经验的工程师,如果不了解底层数据编码的原理,也将无从下手,仅仅是因视频转码和多媒体切割这两项技术会难到一大批人。为什么会这样呢?因为如果想在尽可能减小文件体积的同时还能传输高保真音视频文件,必须对文件数据编码非常熟悉才行,而它的底层技术基础就是计算机进制。

说明


数据编码技术背后的计算机二进制知识是软件工程师必备的基础技能,也是C1阶段的计算机通识模块之一,大厂开发中的多媒体数据采集、分割、压缩、编解转码、传输、纠错、合并工作,都和它息息相关。

任务一:用「0」和「1」绘图


  • 在code.org上注册账号,完成与计算机像素相关的系列任务( https://studio.code.org/s/pixelation
  • 注册账户时需要注意
    • 账号角色选择学生
    • 选择最大年龄21+(有些任务会以年龄太小为由被拒绝执行)
  • 先通过二进制的0和1 「画」出你喜欢的图形
  • 再试着画出自己的名字或昵称
  • 理解用计算机二进制存储图片文件的底层原理
    绘制图像如下:
    在这里插入图片描述

任务二:掌握进制编辑器


  • 修改文本内容

  • 在Windows Mac/Linux上使用文本编辑器并创建文件并输入内容
    在这里插入图片描述

  • 用进制编辑器结合字符编码,输入一整段二/十六进制数据,再用文本编辑器验证输入的内容是否符合预期
    在这里插入图片描述

  • 修改图片内容

    • 全白图片
      在这里插入图片描述
      在这里插入图片描述

    • 全黑图片
      在这里插入图片描述
      在这里插入图片描述

  • 掌握规律后, 用进制编辑器创建出—幅图bmp/png图片
    把黑色图片变白

扩展:修改游戏存档

修改关卡

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

修改金币

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

解锁模式

在这里插入图片描述
在这里插入图片描述

自测题

  • 110101010001转十六进制是多少?有什么快速方法?
    Answer: D51 从低位4位看作1位
  • 101011.101011对应的十进制是多少?
    Answer: 43.671875
  • 常见的音频编码格式有哪些?
    按波形编码、参数编码和混合编码三类编码技术分类,从编码率(码率)、语音质量和应用领域方面比较一些典型的编码方法,具体参见下表。
    表 1 典型音频编码技术比较
    在这里插入图片描述
    上表中各种算法、应用领域中缩略语的中文和英文全称参见下面说明。
    PCM:Pulse Code Modulation,脉冲编码调制。
    ADPCM:Adaptive Differential Pulse Code Modulation,自适应差分脉冲编码调制。
    SB-ADPCM:Subband Adaptive Differential Pulse Code Modulation,子带-自适应差分脉冲编码调制。
    LPC:Linear Predictive Coding,线性预测编码。
    CELPC:Code Excited Linear Predictive Coding,码激励线性预测编码。
    VSELPC:Vector Sum Excited Linear Predictive Coding,矢量和激励线性预测编码。
    RPE-LTP:Regular Pulse Excited-Long Term Predictive,规则脉冲激励长时预测。
    LD-CELP:Low Delay-Code Excited Linear Predictive,低时延码激励线性预测。
    MPE:Multi-Pulse Excited,多脉冲激励。
    PSTN:Public Switched Telephone Network,公共交换电话网。
    ISDN:Integrated Services Digital Network,综合业务数字网。

PCM编码
PCM 脉冲编码调制是Pulse Code Modulation的缩写。前面的文字我们提到了PCM大致的工作流程,我们不需要关心PCM最终编码采用的是什么计算方式,我们只需要知道PCM编码的音频流的优点和缺点就可以了。PCM编码的最大的优点就是音质好,最大的缺点就是体积大。我们常见的Audio CD就采用了PCM编码,一张光盘的容量只能容纳72分钟的音乐信息。
WAV格式
这是一种古老的音频文件格式,由微软开发。WAV是一种文件格式,符合RIFF (Resource Interchange File Format) 规范。所有的WAV都有一个文件头,这个文件头包含了音频流的编码参数。WAV对音频流的编码没有硬性规定,除了PCM之外,还有几乎所有支持ACM规范的编码都可以为WAV的音频流进行编码。很多朋友没有这个概念,我们拿AVI做个示范,因为AVI和WAV在文件结构上是非常相似的,不过AVI多了一个视频流而已。我们接触到的AVI有很多种,因此我们经常需要安装一些Decode才能观看一些AVI,我们接触到比较多的DivX就是一种视频编码,AVI可以采用DivX编码来压缩视频流,当然也可以使用其他的编码压缩。同样,WAV也可以使用多种音频编码来压缩其音频流,不过我们常见的都是音频流被PCM编码处理的WAV,但这不表示WAV只能使用PCM编码,MP3编码同样也可以运用在WAV中,和AVI一样,只要安装好了相应的Decode,就可以欣赏这些WAV了。
在Windows平台下,基于PCM编码的WAV是被支持得最好的音频格式,所有音频软件都能完美支持,由于本身可以达到较高的音质的要求,因此,WAV也是音乐编辑创作的首选格式,适合保存音乐素材。因此,基于PCM编码的WAV被作为了一种中介的格式,常常使用在其他编码的相互转换之中,例如MP3转换成WMA。
MP3编码
MP3作为目前最为普及的音频压缩格式,为大家所大量接受,各种与MP3相关的软件产品层出不穷,而且更多的硬件产品也开始支持MP3,我们能够买到的VCD/DVD播放机都很多都能够支持MP3,还有更多的便携的MP3播放器等等,虽然几大音乐商极其反感这种开放的格式,但也无法阻止这种音频压缩的格式的生存与流传。MP3发展已经有10个年头了,他是MPEG(MPEG:Moving Picture Experts Group) Audio Layer-3的简称,是MPEG1的衍生编码方案,1993年由德国Fraunhofer IIS研究院和汤姆生公司合作发展成功。MP3可以做到12:1的惊人压缩比并保持基本可听的音质,在当年硬盘天价的日子里,MP3迅速被用户接受,随着网络的普及,MP3被数以亿计的用户接受。MP3编码技术的发布之初其实是非常不完善的,由于缺乏对声音和人耳听觉的研究,早期的mp3编码器几乎全是以粗暴方式来编码,音质破坏严重。随着新技术的不断导入,mp3编码技术一次一次的被改良,其中有2次重大技术上的改进。
关于VBR
VBR:MP3格式的文件有一个有意思的特征,就是可以边读边放,这也符合流媒体的最基本特征。也就是说播放器可以不用预读文件的全部内容就可以播放,读到哪里播放到哪里,即使是文件有部分损坏。虽然mp3可以有文件头,但对于mp3格式的文件却不是很重要,正因为这种特性,决定了MP3文件的每一段每一帧都可以单独的平均数据速率,而无需特别的解码方案。于是出现了一种叫VBR(Variable bitrate,动态数据速率)的技术,可以让MP3文件的每一段甚至每一帧都可以有单独的bitrate,这样做的好处就是在保证音质的前提下最大程度的限制了文件的大小。这种技术的优越性是显而易见的,但要运用确实是一件难事,因为这要求编码器知道如何为每一段分配bitrate,这对没有波形分析的编码器而言,这种技术如同虚设。正是如此,VBR技术并没有一出现就显得光彩夺目。
专家们通过长期的声学研究,发现人耳存在遮蔽效应。声音信号实际是一种能量波,在空气或其他媒介中传播,人耳对声音能量的多少即响度或声压最直接的反应就是听到这个声音的大小,我们称它为响度,表示响度这种能量的单位为分贝(dB)。即使是同样响度的声音,人们也会因为它们频率不同而感觉到声音大小不同。人耳最容易听到的就是500Hz的频率,不管频率是否增高或降低,即使是响度在相同的情况下,大家都会觉得声音在变小。但响度降到一定程度时,人耳就听不到了,每一个频率都有着不同的值。
可以看到这条曲线基本成一个V字型,当频率超过15000Hz时,人耳的会感觉到声音很小,很多听觉不是很好的人,根本就听不到20000Hz的频率,不管响度有多大。当人耳同时听到两个不同频率、不同响度的声音时,响度较小的那个也会被忽略,例如:在白天我们很难听到电脑中散热风扇的声音,晚上却成了噪声源,根据这种原理,编码器可以过滤掉很多听不到的声音,以简化信息复杂度,增加压缩比,而不明显的降低音质。这种遮蔽被称为同时遮蔽效应。但声音A被声音B遮蔽,如果A处于B为中心的遮蔽范围内,遮蔽会更明显,这个范围叫临界带宽。每一种频率的临界带宽都不一样,频率越高的临界带宽越宽。
频率(Hz) 临界带宽(Hz) 频率(Hz) 临界带宽(Hz)
根据这种效应,专家们设计出人耳听觉心理模型,这个模型被导入到mp3编码中后,导致了一场翻天覆地的音质革命,mp3编码技术一直背负着音质差的恶名,但这个恶名现在已经逐渐被洗脱。到了此时,一直被埋没的VBR技术光彩四射,配合心理模型的运用便现实出强大的诱惑力与杀伤力。
长期来,很多人对MP3印象不好,更多人认为WMA的最佳音质要好过MP3,这种说法是不正确的,在中高码率下,编码得当的MP3要比WMA优秀很多,可以非常接近CD音质,在不太好的硬件设备支持下,没有多少人可以区分两者的差异,这不是神话故事,尽管你以前盲听就可以很轻松区分MP3和CD,但现在你难保证你可以分辨正确。因为MP3是优秀的编码,以前被埋没了。
OGG编码
网络上出现了一种叫Ogg Vorbis的音频编码,号称MP3杀手!Ogg Vorbis究竟什么来头呢?OGG是一个庞大的多媒体开发计划的项目名称,将涉及视频音频等方面的编码开发。整个OGG项目计划的目的就是向任何人提供完全免费多媒体编码方案!OGG的信念就是:OPEN!FREE!Vorbis这个词汇是特里·普拉特柴特的幻想小说《Small Gods》中的一个"花花公子"人物名。这个词汇成为了OGG项目中音频编码的正式命名。目前Vorbis已经开发成功,并且开发出了编码器。
Ogg Vorbis是高质量的音频编码方案,官方数据显示:Ogg Vorbis可以在相对较低的数据速率下实现比MP3更好的音质!Ogg Vorbis这种编码也远比90年代开发成功的MP3先进,它可以支持多声道,这意味着什么?这意味着Ogg Vorbis在SACD、DTSCD、DVD AUDIO抓轨软件(目前这种软件还没有)的支持下,可以对所有的声道进行编码,而不是MP3只能编码2个声道。多声道音乐的兴起,给音乐欣赏带来了革命性的变化,尤其在欣赏交响时,会带来更多临场感。这场革命性的变化是MP3无法适应的。
和MP3一样,Ogg Vorbis是一种灵活开放的音频编码,能够在编码方案已经固定下来后还能对音质进行明显的调节和新算法的改良。因此,它的声音质量将会越来越好,和MP3相似,Ogg Vorbis更像一个音频编码框架,可以不断导入新技术逐步完善。和MP3一样,OGG也支持VBR。
MPC编码
MPC是又是另外一个令人刮目相看的实力派选手,它的普及过程非常低调,也没有什么复杂的背景故事,她的出现目的就只有一个,更小的体积更好的音质!MPC以前被称作MP+,很显然,可以看出她针对的竞争对手是谁。但是,只要用过这种编码的人都会有个深刻的印象,就是她出众的音质。
mp3PRO编码
2001年6月14日,美国汤姆森多媒体公司(Thomson Multimedia SA)与佛朗赫弗协会(Fraunhofer Institute)于6月14日发布了一种新的音乐格式版本,名称为mp3PRO,这是一种基于mp3编码技术的改良方案,从官方公布的特征看来确实相当吸引人。从各方面的资料显示,mp3PRO并不是一种全新的格式,完全是基于传统mp3编码技术的一种改良,本身最大的技术亮点就在于SBR(Spectral Band Replication 频段复制),这是一种新的音频编码增强算法。它提供了改善低位率情况下音频和语音编码的性能的可能。这种方法可在指定的位率下增加音频的带宽或改善编码效率。SBR最大的优势就是在低数据速率下实现非常高效的编码,与传统的编码技术不同的是,SBR更像是一种后处理技术,因此解码器的算法的优劣直接影响到音质的好坏。高频实际上是由解码器(播放器)产生的,SBR编码的数据更像是一种产生高频的命令集,或者称为指导性的信号源,这有点駇idi的工作方式。我们可以看到,mp3PRO其实是一种mp3信号流和SBR信号流的混合数据流编码。有关资料显示,SBR技术可以改善低数据流量下的高频音质,改善程度约为30%,我们不管这个30%是如何得来的,但可以事先预知这种改善可以让64kbps的mp3达到128kbps的mp3的音质水平(注:在相同的编码条件下,数据速率的提升和音质的提升不是成正比的,至少人耳听觉上是这样的),这和官方声称的64kbps的mp3PRO可以媲美128kbps的mp3的宣传基本是吻合的。
WMA格式
WMA就是Windows Media Audio编码后的文件格式,由微软开发,WMA针对的不是单机市场,是网络!竞争对手就是网络媒体市场中著名的Real Networks。微软声称,在只有64kbps的码率情况下,WMA可以达到接近CD的音质。和以往的编码不同,WMA支持防复制功能,她支持通过Windows Media Rights Manager 加入保护,可以限制播放时间和播放次数甚至于播放的机器等等。WMA支持流技术,即一边读一边播放,因此WMA可以很轻松的实现在线广播,由于是微软的杰作,因此,微软在Windows中加入了对WMA的支持,WMA有着优秀的技术特征,在微软的大力推广下,这种格式被越来越多的人所接受。
RA格式
RA就是RealAudio格式,这是各位网虫接触得非常多的一种格式,大部分音乐网站的在线试听都是采用了RealAudio,这种格式完全针对的就是网络上的媒体市场,支持非常丰富的功能。最大的闪烁点就是这种格式可以根据听众的带宽来控制自己的码率,在保证流畅的前提下尽可能提高音质。RA可以支持多种音频编码,包括ATRAC3。和WMA一样,RA不但都支持边读边放,也同样支持使用特殊协议来隐匿文件的真实网络地址,从而实现只在线播放而不提供下载的欣赏方式。这对唱片公司和唱片销售公司很重要,在各方的大力推广下,RA和WMA是目前互联网上,用于在线试听最多的音频媒体格式。
APE格式
APE是Monkey’s Audio提供的一种无损压缩格式。Monkey’s Audio提供了Winamp的插件支持,因此这就意味着压缩后的文件不再是单纯的压缩格式,而是和MP3一样可以播放的音频文件格式。这种格式的压缩比远低于其他格式,但能够做到真正无损,因此获得了不少发烧用户的青睐。在现有不少无损压缩方案种,APE是一种有着突出性能的格式,令人满意的压缩比以及飞快的压缩速度,成为了不少朋友私下交流发烧音乐的唯一选择。

  • 常见的视频编码格式有哪些
    音频视频编码方案有很多,用百家争鸣形容不算过分,常见的音频视频编码有以下几类
    MPEG系列
    由ISO(国际标准组织机构)下属的MPEG(运动图象专家组)开发 视频编码方面主要是Mpeg1(vcd)、Mpeg2(DVD)、Mpeg4(DVDRIP使用的都是它的变种,如:divx,xvid等)、Mpeg4 AVC;音频编码方面主要是MPEG Audio Layer 1/2、MPEG Audio Layer 3(mp3)、MPEG-2 AAC 、MPEG-4 AAC等。注意:DVD音频没有采用Mpeg的。MPEG是运动图像专家组(Moving Picture Experts Group)的缩写,于1988年成立,是为数字视/音频制定压缩标准的专家组,已拥有300多名成员,包括IBM、SUN、BBC、NEC、INTEL、AT&T等世界知名公司。MPEG组织最初得到的授权是制定用于“活动图像”编码的各种标准,随后扩充为“及其伴随的音频”及其组合编码。后来针对不同的应用需求,解除了“用于数字存储媒体”的限制,成为制定“活动图像和音频编码”标准的组织。MPEG组织制定的各个标准都有不同的目标和应用,已提出MPEG-1、MPEG-2、MPEG-4、MPEG-7和MPEG-21标准。
    H.26X系列
    由ITU(国际电传视讯联盟)主导,侧重网络传输,(注只是视频编码),ITU-T 的标准包括 H.261、H.263、H.264,主要应用于实时视频通信领域,如视频会议;MPEG 系列标准是由ISO/IEC制定的,主要应用于视频存储(DVD)、广播电视、互联网或无线网络的流媒体等。两个组织也共同制定了一些标准,H.262标准等同于 MPEG-2的视频编码标准,而H.264标准则被纳入 MPEG-4的第10部分。 [1]
    如今广泛使用的 H.264 视频压缩标准可能不能够满足应用需要,应该由另一种更高的分辨率、更高的压缩率以及更高质量的编码标准所替代。ISO/IEC 动态图像专家组和ITU-T视频编码的专家组共同建立了视频编码合作小组,出台了H.265/HEVC标准。H.265的压缩有了显著提高,一样质量的编码视频能节省40%至50%的码流,还提高了并行机制以及网络输入机制 [2] 。
  • 一个尺寸8×8大小的png全黑图片前四个字节的的十六进制是什么?
    8×8大小的png全黑图片
    在这里插入图片描述

在这里插入图片描述

  • 如果要提供给一个实时的流媒体服务器,除了ffmpeg,还需要哪个组件?

常用的两个协议
RTMP是流媒体协议。 它是Adobe的私有协议,未完全公开。 一般传输的是flv,f4v格式流。在TCP1个通道上传输命令和数据。

RTSP 是流媒体协议 ,它是共有协议,并有专门机构做维护。它的传输的是ts、mp4格式的流。它的传输一般需要 2-3 个通道,命令和数据通道分离。

实现方案
先说一下目前主流开源流媒体服务器:Live555,EasyDarwin,DarwinStreamingSrvr,jrtplib,ffmpeg,Libav,Red5,Open Streaming Server,FMS,Wowza,FreeCast,Ngix+RTMP模块等。如果使用rtsp协议目前用的比较流行的是live555、vlc、DarwinStreamingSrvr等开源软件。

如果使用rtmp协议可以使用Ngix+RTMP插件模块来搭建服务端。这次我们选用DSS(Darwin Streaming Server),DSS是Apple公司提供的开源实时流媒体播放服务器程序。采用C++编写, 并且DSS是一个开放源代码的,基于标准的流媒体服务器,可以运行在Windows NT和Windows 2000,以及几个UNIX实现上,包括Mac OS X,Linux,FreeBSD,和Solaris操作系统上的。 采用obs做推流,

用vlc拉流播放。

安装DSS
首先下载Darwin Streaming Server:
在这里插入图片描述

下载完成后解包DarwinStreamingSrvr.tar.gz文件,进入dss目录启动shell中输入

sudo /usr/local/sbin/DarwinStreamingServer
sudo /usr/local/sbin/streamingadminserver.pl
确认dss服务启动,服务运行可以通过RTSP访问流媒体了,打开浏览器http://127.0.0.1:1220/,访问Darwin Streaming Server WEB界面默认端口1220.看到如下界面:
在这里插入图片描述

OBS 推送
obs (OBS Studio)是 windows 系统端开源的推流软件,编码使用H264(X264)和AAC ,它一款非常好用的开源直播推流软件,为用户提供了视频、文本、图像等的捕获录制功能。基于GPU的高性能游戏流媒体游戏捕获。支持DirectShow的捕获设备(摄像头,采集卡,等),双线性或lanczos3重采样。当然选择它主要是开源,免费。也比较好用。

在这里插入图片描述

在这里插入图片描述

VLC拉流观看直播
首先打开VLC media player,然后点左上角"媒体"——“打开网络串流”,然后输入网络URL输入rtsp://ip/xxx, 就可以播放了

在这里插入图片描述

Ok~~

附上一份音视频大纲给大家

在这里插入图片描述

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

有出路Coding

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值