HLS-m3u8播放列表和ts切片(2)

HLS-m3u8播放列表和ts切片(2),第1张

闲话不多说,正题coming

11 先检查是否安装了Homebrew,在终端输入命令:brew help。如图说明安装了,并且你也可以查看它的其他常用命令:

12 如果未安装,则在终端输入安装命令:

在终端输入命令:

下图可清晰看到ffmpeg共47M(要耐心等待哦~),以及安装在本地的路径(usr/local/Cellar/ffmpeg/302)。

通过刚刚安装的ffmpeg,在终端输入命令(灵活变化):

首先在本地启用Apache搭建好WebServer(这里不做介绍了),然后将<步骤3>中的 XXXm3u8 放置于该服务器下的共享目录下,由此可得到m3u8的播放URL(http://localhost/richyleo/m3u8/war3m3u8),Richy的真实切片命令共大家参考替换:

打开Safari浏览器,或者在App中载入播放视频功能,传入播放地址即可完成。

其实所有的服务器建设资料全部都已经在COUNTER_SERVER给出,但是有很多朋友是初学者,对于太过技术或者英文的东西看上去就头大,所以我今天就在这里手把手地跟大家一起来建设一个CS服务器。

建立一个稳定的长期的服务器,首先你所需要的就是

1、硬件

对于只开一个游戏来说,服务器的硬件配置大概在PIII、内存在256M以上即可,最好能是一台专门的机器,你总不会想因为你一次误操作就让服务器出错吧?

2、连接线路

连接线路是越快越好,虽然CS在游戏中连续上传和下载的速度最大也才3K/s,但是如果PING高的话我想你的人玩起来也不会爽是不是。

3、耐心

维护一个服务器对你来说会是一个长期的过程,如果你决定开FriendlyFire对你来说更是一项考验。CS频繁的升级也让人无可奈何。所以,忍吧。

如果你觉得你可以符合上述的所有条件,恭喜你!你现在可以开始这个漫长的旅程了。

首先的是,你要安装HLserver,在HalfLife里本身就带了建立服务器的软件,但是如果你不会在服务器上玩的话,用HLserver可以减少很多的空间。然后升级HL到最新的版本,再安装CS的最新版本(就跟装一个本机的游戏一样)。作为服务器,必须要有很多设置,普通情况下你只需要在HLserver\cstrike\目录下建立servercfg、mapcycletxt、motdtxt这三个基本文件即可。servercfg是服务器的配置文件,mapcycletxt是地图循环的顺序,motdtxt是服务器的说明。下面就以的服务器的配置文件为例子做个大概说明:

servercfg

可用任何文本编辑器进行编辑。

0为No,1为Yes。

sv_aim0是否自动瞄准

pausable0是否客户端可暂停游戏

hostnameCS'Server服务器名字

mp_timelimit30更换地图时间

mp_c4timer45炸弹倒计时时间

mp_chasecam0是否固定镜头(如果选1,当人死了后就只能在固定的地点观看战局,为了防止死人告诉其他人战局设定)

mp_falldamage1高处落下杀伤

mp_flashlight1是否有战术手电

mp_footsteps1是否有脚步声

mp_freezetime4每局开始固定买物品时间

mp_friendly_grenade_damage1是否手雷友军伤害

mp_friendlyfire1是否友军伤害

mp_autoteambalance2自动调整双方人数差异最低限制

mp_roundtime4每回合最大时间数

rcon_password服务器密码

mp_limitteamsN双方超过N人即自动调整

mp_tkpunish1是否伤害友军惩罚

mp_mapvoteratio02投票比率

mp_logfile1是否服务器留下记录文件

logon开始记录

mp_hostagepenalty=3规定时间内伤害人质超过三人自动踢出

Logaddressxxxxxx设定在全国总排行榜的监听端口,IP改为自己的IP,端口请Email到上帝偏爱步兵取得。然后你的服务器上的所有成绩即自动取得全国服务器排行的认证。

mapcycletxt为地图文件名,不带后缀,如de_dustbsp,只取de_dust。地图在Hlserver\cstrike\maps目录下,将你想循环的地图挑出来,然后将文件名按上面所说的规则输入mapcycletxt中,每个地图之间用硬回车隔开。

motdtxt为服务器说明文件,当每个玩家进入服务器后看到的第一个窗口就是。可以随意按照自己喜欢写。最好注明服务器的基本设置。

有了上面这些一个服务器基本就算具备了,但是别急,可不是运行HLexe来进游戏哦,用的是HLSexe,而且要带上参数。下面再来说说服务器运行参数。还是以服务器为例子来介绍下:

F:\Hserver\hldsexe-gamecstrike-port27016+maxplayers22+mapcs_office

-gamecstrike指定运行游戏为CS

-port27016指定游戏连接端口为27016

+maxplayers22游戏最大人数22人(游戏只支持20人,多余两人为观众)

+mapcs_office指定第一张地图为cs_office

在居域网上建立服务器跟上面相同,不过可以在命令行里加上-nomaster让服务器不上WON认证,避免因为出国网络不通导致的服务器问题。同时加上+sv_lan1指定其为一个LANserver。其他人进服务器的时候进Internetgame,选择Addserver输入服务器的IP和上面你指定的端口即可。

HLS (HTTP Live Streaming)

Apple的动态码率自适应技术。主要用于PC和Apple终端的音视频服务。包括一个m3u(8)的索引文件,TS媒体分片文件和key加密串文件。

常用的流媒体协议主要有 HTTP 渐进下载和基于 RTSP/RTP 的实时流媒体协议,这二种基本是完全不同的东西,目前比较方便又好用的是用 HTTP 渐进下载方法。在这个中 apple 公司的 HTTP Live Streaming 是这个方面的代表。它最初是苹果公司针对iPhone、iPod、iTouch和iPad等移动设备而开发的流现在见到在桌面也有很多应用了,HTML5 是直接支持这个。

但是HLS协议的小切片方式会生成大量的文件,存储或处理这些文件会造成大量资源浪费。如果要实现数天的时移,索引量将会是个巨额数字,并明显影响请求速度。因此,HLS协议对存储I/O要求相当苛刻。对此,也有公司提出了非常好的解决方案。

新型点播服务器系统,独创了内存缓存数据实时切片技术,颠覆了这种传统实现方法,从根本上解决了大量切片的碎片问题,使得单台服务器的切片与打包能力不再是瓶颈。其基本原理如下:

不将TS切片文件存到磁盘,而是存在内存当中,这种技术使得服务器的磁盘上面不再会有“数以吨计”的文件碎片,极大减少了磁盘的I/O次数,延长了服务器磁盘的使用寿命,极大提高了服务器运行的稳定性。同时,由于使用这种技术,使得终端请求数据时直接从服务器的内存中获取,极大提高了对终端数据请求的反应速度,优化了视频观看体验。

RTSP协议,这应该是实时性最好的了,如果要想实时性要求很高,比如05s以内,这个是不错的选择。前阵子模仿spydroid写了个建议的rtsp 服务器,其实就是options,describe,setup,play,pause,teardown这几步了,这个协议用的最广泛,网上介绍也比较 多。要想真正深入了解rtsp协议,c++语言功底好的可以查看live555 。

移动直播行业的火热会在很长一段时间内持续,通过和各行业的整合,从而成为具有无限可能性的行业。主要因为以下三个原因:

第一,移动直播的UGC生产模式比PC端的直播更明显,人人都有设备,随时随地开播,完全顺应了互联网时代的开放性原则,能刺激更多人去创造和传播优质内容。

第二,网络带宽和速度在逐渐提高,网络成本在逐渐下降,为移动直播提供一个极佳的发展环境。文字、声音、视频、游戏等都会在移动直播中呈现,创造出更加丰富的用户体验。直播可以以SDK的形式接入到自己的应用中,比如,教育领域中的课后辅导完全可以以直播的形式开展业务、电商也可借助直播让用户挑选商品,促进销售。

第三,一个与VR/AR技术相结合的移动直播为整个行业的未来提供了新的发展空间。VR/AR直播能够让用户身临其境,带动主播与观众更贴切真实的互动,大大提高平台的用户参与度。

当下,有技术实力和流量优势的互联网从业者都不愿错过直播这个风口,如何快速搭建一个直播系统成了大家关心的问题,我想和大家分享下我的经验。我从事于一家直播产品开发商,我们的产品为了快速赶上市场,并没有自己完全去自己做,而是使用了趣拍云服务提供的直播SDK。

从业者都知道,一个完整直播产品应该包含以下环节:推流端(采集、前处理、编码、推流),服务端处理(转码、录制、截图、鉴黄),播放器(拉流、解码、渲染)、互动系统(聊天室、礼物系统、赞)。 下面我就一一讲述下直播SDK在各个环节所做的工作。

一、移动直播推流端需要做哪些工作?

直播推流端即主播端,主要通过手机摄像头采集视频数据和麦克风采集音频数据,经过一系列前处理、编码、封装,然后推流到CDN进行分发。

1、采集

移动直播SDK通过手机摄像头和麦克风直接采集音视频数据。其中,视频采样数据一般采用RGB或YUV格式、音频采样数据一般采用PCM格式。采集到的原始音视频的体积是非常大的,需要经过压缩技术处理来提高传输效率。

2、前处理

在这个环节主要处理美颜、水印、模糊等效果。美颜功能几乎是直播的标配功能。我们调研中发现太多case是因为没有美颜功能被抛弃使用的。另外国家明确提出了,所有直播都必须打有水印并回放留存15天以上。

美颜实际上是通过算法去识别图像中的皮肤部分,对皮肤区域进行色值调整。通过颜色对比找到皮肤区域,可以进行色值调整、添加白色图层或调整透明度等来等来达到美白效果。在美颜处理方面,最著名的GPUImage提供了丰富的效果,同时可以支持iOS和Android,支持自己写算法实现自己最理性的效果。GPUImage内置了120多种常见滤镜效果,添加滤镜只需要简单调用几行代码就可以了。

3、编码

为了便于手机视频的推流、拉流以及存储,通常采用视频编码压缩技术来减少视频的体积,现在比较常用的视频编码是H264。在音频方面,比较常用的是用AAC编码格式,其它如MP3、WMA也是可选方案。视频经过编码压缩大大提高了视频的存储和传输效率,当然,经过压缩后的视频在播放时必须进行解码。

相较于之前的H264,2012年诞生的H265编解码标准有了相当大的改善,做到了仅需要原来一半带宽即可播放相同质量的视频,低于15Mbps的网络也能传输1080p的高清视频。像阿里云、金山云都在推自己的H265编解码技术,随着直播的快速发展和对带宽的依赖,H265编解码技术已有全面取代H264的趋势。

H264和H265个模块技术差异:

另外,硬件编码已经成为移动直播的首选方案,软编码处理在720p以上的视频颓势非常明显。在iOS平台上硬件编码的兼容性比较好,可以直接采用,但在 Android 平台上,MediaCodec 编码器针对不同的芯片平台表现差异还是非常大的,要完全实现全平台兼容的成本还是非常高的。

4、推流

要想用于推流还必须把音视频数据使用传输协议进行封装,变成流数据。常用的流传输协议有RTSP、RTMP、HLS等,使用RTMP传输的延时通常在1_3秒,对于移动直播这种实时性要求非常高的场景,RTMP也成为移动直播中最常用的流传输协议。最后通过一定的Qos算法将音视频流数据推送到网络断,通过CDN进行分发。在直播场景中,网络不稳定是非常常见的,这时就需要Qos来保证网络不稳情况下的用户观看直播的体验,通常是通过主播端和播放端设置缓存,让码率均匀。另外,针对实时变化的网络状况,动态码率和帧率也是最常用的策略。

当然,在网络传输方面全部自己来做基本不现实,找提供推流服务的CDN服务商提供解决方案是最好的选择,可参考文章开头介绍的云视频服务商。据了解,阿里云是国内唯一能自研CDN缓存服务器的厂商,性能非常有保障。当然,大多数直播平台都会同时接入多个视频云服务提供商,这样可以做拉流线路互备,对推流后视频集群再进行优化也可提高直播的流畅性和稳定性。

二、服务端处理需要做哪些工作?

要想适配各终端和平台,服务端还需要对流进行转码,如支持RTMP、HLS、FLV等格式拉流,支持一路转多路适配不同网络和分辨率的终端设备。

1、截图、录制、水印

像阿里云等云服务商都提供了实时转码技术,将用户推流码率较高(比如720P)实时转化成较低清晰度(比如360P)的流以适应播放端的需求。如果要自己搭建实时转码系统,这个成本是极高的,一台8核设备只能实时转10路流,如果一个正常的直播平台有1000路流,就需要100台设备,加上后期的运维成本,一般公司就吃不消了。

2、鉴黄

2016年4月14日,文化部查出了斗鱼、虎牙、YY、熊猫TV、六间房、9158等涉嫌提供含宣扬*秽、暴力、教唆犯罪的网络直播平台,被列入查处名单。政府介入管制有利于直播行业打造健康的生态,进入良性发展。这也意味着为了安全直播产品鉴黄成了必需环节,使用技术手段去鉴黄是移动直播平台必然采用的方案。

市面上提供鉴黄服务的方案主要有两种,第一种是对视频进行截图,然后对进行鉴黄,返回鉴黄结果和分值。典型的企业有阿里(绿网)、图谱科技,他们目前都支持直接传入视频,经过服务端分析返回结果。通常由业务系统接入鉴黄服务,根据鉴黄结果对直播流进行控制,如切断直播流、封禁账号等。第二种是和CDN结合,直接对直播流进行分析,识别结果分为色情、疑似色情、性感和正常,业务系统根据识别结果直接控制直播流。典型的企业是Viscovery,这套方案的优点是实时性保证比较好,缺点是必须部署到CDN或自己的机房,使用成本相对高一些。

还有像趣拍云服务这种一站式直播解决方案提供商,他们的做法是,用户只需在控制台对鉴黄服务进行配置就可以针对每个应用、每一路直播流进行实时审核。在控制台中,趣拍视频云服务实时将鉴黄结果返回,用户可以直接查看色情直播和违规界面的截图,同时可以对直播流进行控制,切断问题直播流。该服务商还提供了短信、邮件和站内信功能,避免漏掉任何一个非法视频,给平台造成损失,我们就使用了这种方式。

三、播放器端需要做哪些工作?

在播放器端如何做到秒开,直播过程中保证画面和声音清晰度的同时,稳定、流程、无卡顿的直播流量,这些工作都需要播放器端配合服务端来做优化,做到精确调度。

1、拉流

拉流实际是推流的逆过程。首先通过播放端获取码流,标准的拉流格式有RTMP、HLS、FLV等。RTMP是Adobe的专利协议,开源软件和开源库都支持的比较好,如开源的librtmp库,播放端只要支持flashPlayer的就能非常简单的播放RTMP直播,直播延迟一般在1_3秒。HLS是苹果提出的基于HTTP的流媒体传输协议,HTML5可以直接打开播放,通过微信、QQ等软件分享出去,用户也可以直接观看直播,可以说移动直播app,HLS拉流协议是必须支持的,缺点是延迟通常大于10秒。FLV(HTTP-FLV)协议是使用HTTP协议传输流媒体内容的一个协议,也不用担心被Adobe的专利绑架,直播延迟同样可以做到1_3秒。

各拉流协议的差异:

我们使用的趣拍视频云服务的直播拉流技术提供了以上三种格式,满足不同业务场景的需求,如对即时性要求较高或有互动需求的可以采用RTMP或FLV格式进行直播拉流播放;对于有回放或跨平台需求的,推荐使用HLS。当然,三种协议是可以同时使用的,分别用到自己的场景就可以了。

2、解码和渲染

拉流获取封装的视频数据后,必须通过解码器解码、渲染后才能在播放器上播放。它是编码的逆过程,是指从音视频的数据中提取原始数据。前面介绍的H264和H265编码格式都是有损压缩,所以在提取后的原始数据,并非原始采样数据,存在一定的信息丢失。因此,在视频体积最小的情况下通过各种编码参数保留最好的原始画面,成为了各视频公司的核心机密。

考虑对高清的支持,解码肯定还是要选择硬解码的。前面介绍过,iOS系统由于硬件比较单一、比较封闭,支持的比较好,Android系统由于平台差异非常大,编解码要完全兼容各平台还需要很多工作要做。

四、移动直播中的交互系统

移动直播中最常见的交互有聊天室(弹幕)、点赞、打赏和礼物等,交互系统涉及消息的实时性和互动性,在技术实现上大多是使用IM的功能来实现的。对于在线人数比较多的房间,弹幕消息量是非常大,主播与用户其实都看不过来,为了缓解服务器压力,在产品策略需要做一些必要的优化。

1、聊天室

移动直播中的弹幕交互是用户和主播互动的主要方式,实际上就是IM中的聊天室功能。聊天室和群聊功能类似,但聊天室的消息是不需要分发给不在线的用户的,历史消息也不需要查看,用户只有进入聊天室后才能查看聊天消息和群成员信息。面对复杂多变的网络状况,还需要根据用户位置就近选择近对应运营商的单线机房接入弹幕消息服务,让弹幕更及时。

2、礼物系统

礼物系统更是绝大多数移动直播平台的标配了,它是这些平台主要的收入来源。送礼物的形式也增强了用户和主播之间的互动交流,也是主播依赖平台的最主要原因。

礼物的收发在技术实现上也是用聊天室接口做的,通常采用IM中的自定义消息实现,当用户收到或发送礼物时将自定义消息对应的礼物图形渲染出来。

以上就是我们在使用了第三方SDK服务后总结出来的直播产品经验,希望能帮助到创业者和从业者们。

蒋先生(微信号love-drunk-hard),直播行业老兵。

在server模块下加入以下内容: location /hls { alias /usr/local/media/hls; types { application/vndapplempegurl m3u8; video/mp2t ts; } add_header Cache-Control no-cache; expires -1; } location ~ flv$ { flv; root /usr/local/me如何访问nginx流媒体服务器

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » HLS-m3u8播放列表和ts切片(2)

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情