整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

2019年底,web前端面试的你准备好了吗?

2019年底,web前端面试的你准备好了吗?

家看我之前总结了很多关于web前端的面试题,我是真心想帮助web前端的开发工程师可以找到工作,马上就2019年的年底了,肯定还有找工作的小伙伴,那么是否可以顺利在年底之前找到工作呢?我来帮助你,我来告诉你面试前的准备,面试的技巧,面试题都有哪些,另外如果你身边的人找工作,你也可以把文章分享给他,咱们一起帮助更多的人。

说起找工作就是很心酸的事情,面试过程大家都经历过。东跑西跑,来回找公司面试,不是没结果就是面试成功,剩下的干脆面试完连面试结果都不知道,这是为什么呢?我给大家一一来分析和总结一下,希望大家在2019年的年底都可以找到工作。

一、面试环节整理

准备简历==》接到面试电话邀请===》确定面试地点和时间===》进入面试公司===》填写表单申请===》HR接待假模假式的嘘寒问暖一番===》HR拿过来面试题===》答题完毕告诉HR===》面试官开始面试(自我介绍和项目介绍以及面试官要问的问题)===》over【一切完毕】。

知道了面试环节以后,那么我们可以把面试分为:面试前、面试中、面试后

二、面试前

1.简历准备

简历准备我想问一下,大家觉得什么样的简历好?你需要突出什么重点?

我相信大家肯定有大概率的答案,简历写的越多越详细越好,包括项目经验,就算没有项目经验,包装也要包装。

突出什么重点?面试官关系我们的喜好,爱好,和家庭成员等等吗?其实不怎么关系,他肯定最关系的是你可以不可以干活对吗?所以简历的介绍顺序也要有很清楚的认识。

给大家看一下我的学生的简历:(大家可以参考)

马圣杰 求职意向: web前端工程师
地点:北京
Tel:xxx
邮箱:xxx

个人技能:

1. 在公司项目中pc端页面制作采用html+css来完成,响应式采用media和bootstrap来完成,包括响应式图片,响应式组件等操作,有效的引入第三方css文件来解决统一浏览器标准的问题,熟练解决各种兼容问题;
2. 在公司里做项目采用CSS预处理器LESS或者SCSS进行项目样式单元的开发(normailz.css);
3. 在工作中熟练使用HTML5以及CSS3技术对于移动网站布局,并且熟练使用解决移动端各种工作问题和移动设备显示问题的hotcss进行网站开发;
4. 在工作中经常使用各种插件比如swiper,owlCarousel等等;
5. 在公司的项目管理方面我们采用git 版本管理工具,利用 gitHub 进行团队协作开发,提高工作效率,掌采用grunt 压缩工具,bower,和yeoman工 ; 
6. 随着web技术发展,在工作中使用过Es6中的语法,比如:字符串扩展,函数扩展,数组扩展和解构解析等等;
7. 在项目中pc端网页特效采用 Jquery 库,或者依赖于jquery的插件,移动端特效zepto.js比较完美;
8. 在工作中经常使用jquery中的$.ajax进行数据的交互和逻辑判断; 
9. 在这几年里前端开发经验里基本的 SEO知识; 
10. 在项目中能够熟练使用各种框架及插件。例如:Element-UI 、Mint-UI 、Mui 、Bootstrap,Swiper 、owlCarousel 、Iscroll等等;
11. 在项目中熟练运用微信小程序的开发 
12. 在工作中经常和后台人员配合来完成接口,并且使用fetch(或者axios 、ajax 、原生js)调用接口拿到数据,实现数据渲染和逻辑判断,验证等操作 , promise用来数据的异步处理;
13. 使用 过Node.js 的 express 框架完成常见的 业务逻辑,能链接 mysql 数据库能编写 sql 的增删改查; 
14. 了解PHP、Node.js等后台语言,可以良好的完成前后台交互;
15. 熟悉各种图表插件,如 Echarts 等,轻松实现饼图、柱状图等常见图表 ;
16. 在工作中使用vue2版本进行项目开发,公司项目基于webpack开发,使用vue-cli脚手架搭建项目,页面跳转使用vue-router进行单页面spa应用,采用组件式开发多模板开发形式,使用fetch,axios实现页面交互,利用vue生命周期赋值,使用mock数据进行数据模拟,大量使用es6语法使用babel进行语法转换编译,使用promise进行数据异步处理,使用vuex进行项目状态管理,实现数据调用统一化标准。Vue2中使用Mint-UI和Element-UI针对于pc或者移动实现快速开发 ;
17. 我在项目中移动端混合开发时的大致流程:mui+html5plus,使用mui快速搭建移动端项目,以及页面效果(组件)实现,使用html5plus实现设备调取(摄像头,电话,扫一扫,地理定位,相册,加速度传感器,访问麦克风,通讯录,手机的设备信息及配置,发邮件,支付…等等),使用 HBuilder 内置工具打包多端项目(ios,Android,原生);
18. 曾经使用微信小程序开发项目:全局app的配置,底部tabbar添加,pages多页面添加,页面跳转(wx.navigateTo)、template来定义模板实现复用 ,wx.request使用小程序交互页面数据的渲染和逻辑判断。测试阶段交互url定义在glabolData中。使用框架生命周期进行数据正确赋值 ;
19. 对Photoshop、WebStrom、Sublime、HBuilder、Atom、Adobe Dreamweaver、Brackets FSCapture等一些前端工具能够熟悉使用;
20. 有比较良好的沟通协作能力,拥有团队协作精神,严谨、踏实的工作态度;
工作经验
 
2016.9-2017.12 北京易驰互联科技有限公司 前端开发兼经理助理
 
● 负责公司网页布局,利用bootstrap做响应式。
 
● 使用vue2.x组织网站项目结构,基于webpack开发项目,组件式开发,路由的传值,钩子函数的使用。Npmjs引入第三方库,bootstrap,jquery等等。
 
● 解决网页在各大主流浏览器中的兼容问题。
 
● 负责网站的网页进行跳转链接,使用ajax、fetch、axios调取数据,实现前后台交互。
 
● 负责网页导航栏的效果实现,网页内容的整体布局、优化,实现网页搜索功能的实现。
 
● 根据项目要求,团队合作按时完成网站的开发、优化等。
 
● 对项目中BUG进行测试、分析、修改。
 
● 团队的沟通不足,导致后期进行网页的整合拼接出现漏洞,后经修复,才得以上线,所有沟通不到位是不可行的
 
 
2015.10-2016.7 三智慧通(北京)科技有限公司 前端开发
 
● 与UI设计人员做好充分沟通,确保网页特效的完美呈现。
 
● 负责web前端页面开发,与服务端后台开发人员配合进行数据展现运用rem弹性盒子媒体查询来完成移动端项目和响应式网站兼容各大浏览器;运用JS、Jquery等前端框架编写动态效果。
 
● AngularJs实现双向数据绑定;运用Ajax调取数据与后台交互。
 
● 运用Grunt自动化构建工具。
 
● 运用Git进行多人协同开发项目。
 
 
2015.3-2015.9 山西绿风电子商务有限公司 前端开发
 
● 配合 UI 人员完成效果的编写;并且根据 psd 或 App 原型,给出最优的前端解决方案,进行
前端模块化,以及代码规范等。
 
● 实现网站页面排版以及特效(JS、jQuery)效果。
 
● 设计及实现前后端的数据交互,对代码质量及进度负责。
 
● 对完成的页面进行维护和对网站前端性能做相应的优化。
 
● 对前端技术问题进行分析诊断,并提出解决方案。
 
项目经验:
 
响应式开发: 潮水、易驰Eb 、E-SHOPPER …(兼容PC端,iPad端,移动端)
 
● 负责该项目页面的排版、更新,其中涉及到:bootstrap框架的使用(效率快) 、插件swiper 、normalize.css的引入(统一规范标准)、iconfont字体的引入 、picturefill.js的引用(图片的兼容)、移动端hotcss的引用 、JQuery效果的加注 、$.ajax的后台数据渲染 ;
 
● 为网站的页面提供持续优化方案,前端兼容性代码调试;
 
● 通过媒体查询调整各 pc 端和移动端适配问题,以及测试页面,优化代码,解决部分用户体
验的 BUG,以达到最佳的用户体验;
 
● 使用 git 进行版本控制管理,使用 webpack 压缩代码。
 
移动端开发: 知吃氏 、好融金融 、闪电贷 、艾宝欣 、医药 ...(移动端)
 
● 在开发该项目中涉及到 html5+CSS,rem单位以及新老弹性盒的运用,解决多端适配使用(hotcss可以),less/sass预处理器的使用 ,html5plus的设备调用;
● 在效果方面我们采用zepto、swiper、iscroll ;
● Mui、 mint-UI、Element-UI等等框架的调用(带来的效果不言而喻);
● 常用到$.ajax、XMLHTTPRequset(js原生) 、fetch 、axios调取数据进行渲染;
● 以上【艾宝欣】项目采用微信小程序:全局app的配置,底部tabbar添加,pages多页面添加,页面跳转(wx.navgarto)、template来定义模板实现复用 ,wx.rexxx使用小程序交互页面数据的渲染和逻辑判断。测试阶段交互url定义在glabolData中。使用框架生命周期进行数据正确赋值;
 
● 上述【医药】该项目使用vue2版本开发,基于webpack开发,使用vue-cli脚手架搭建项目,页面跳转使用vue-router进行单页面spa应用,采用组件式开发多模板开发形式,使用fetch,axios实现页面交互,利用vue生命周期赋值,使用mock数据进行数据模拟,大量使用es6语法使用babel进行语法转换编译,使用promise进行数据异步处理,使用vuex进行项目状态管理,实现数据调用统一化标准。
 
● 利用git、grunt完成上线前版本管理及打包压缩工具;
 
 
PC端开发: 万商贷、利金行 、 赛会 、爱燕子 …(PC端)
 
● 利用HTML+CSS(less和sass预处理器)配合bootstrap进行高质量的页面编写,实现页面布局的重构及优化,通过JQuery实现动态效果;
 
● 使用ajax 实现前后台的数据交互、渲染和逻辑判断;,
 
● 利用jQuery第三方插件时间页面动态效果将产品直接呈现在用户眼前;
 
● 通过正则验证配合调取后台数据进行匹配; 
 
 
教育背景
2011.09-2015.7 山西工商学院 本科 计算机与科学技术
自我评价 
为人真诚,谦虚好学,乐观开朗,能很好地处理人际关系,遇到问题不抱怨而是用行动去解决,有较强的责任心和团队合作精神;对自己要求严格,做事情讲究高质量;热衷于网页设计;服从安排,肯吃苦耐劳。在工作中,团队协作能力强具有较强的亲和力,协调沟通能力强,能够建立良好的合作氛围和客户关系。

2.自我介绍准备

自我介绍是要体现出来什么呢?是不是你这个人做了哪些项目?其实自我介绍不如直接改成项目介绍,大家这里重点自己比较牛的经历和做项目的过程和细节。千万别自我介绍不到1分钟就说完了,你可以想一下,如果自我介绍不到1分钟是不是我会觉得你这个人特别简单,没什么东西?所以自我介绍我建议大家准备5-15分钟的话术,可以提前写出来读一读,当然面试过程中不用说那么长时间,但是你要准备那么长时间,这个不用解释吧,台上一分钟台下十年功。

3.面试题准备

面试题准备这一块是必须的,就跟考试一样,如果你都知道考什么了,或者划一个重点的话,是不是特别好考?对的没错,所以一定要多看面试题,我在之前的文章整理了好多面试题html,css,移动端,兼容问题,vue,等等等等了,手都写烂了,大家一起要看。当然最少配合视频讲解,我这里打个广告,提供一个链接,大家可以学习,当然你也可以不学习,完全看你自己。

前端面试求职跳槽通关指南:https://www.3mooc.com/front/learning/routesecond?subjectid=1232

三、面试中

面试中可能会遇到很多突发事件,比如有些面试题不会了怎么办?等等吧,那么咱们是否可以形成一个面试联盟,当然我有这样的学生群,如果有一个人去面试碰到不会的题直接发出来,就会有群里的小伙伴进行回答,那么这样的话是不是很多人在帮助你,你并不孤独呢!

四、面试后

面试后不管面试结果什么样,咱们都要做复盘,面试不行?哪里出问题了,是不是应该进行一个复盘,这个复盘是当局者迷,那么我是不迷的,所以大家面试都可以找我,我来帮助大家。

当然这里再说一下,也是我之前很生气的地方,大家面试完以后,如果面试官说你回去等通知吧,“我会在几月几号的几点告诉你面试结果”,那么如果当天没有打电话,咱们作为面试者是不是可以打过去电话问问呢?反正跑都跑去面试了,那么远,干嘛不打个电话几分钟都事情做一个了解呢?

最后:我说了这么多,我想帮助很多web前端面试者成功就业,当然我个人也有一些渠道,可以帮助更多的人,我已经差不多帮助了2万多学生就业了,这里也包含我的学生。如果有各种问题,欢迎大家评论留言或者联系我,咱们一起来讨论一下。最后祝福大家在2019年的年底都可以找到很好的工作,顺利就业,加油!

给大家看看我辅导的学生就业吧(一俩个就好了,其他的我也没截图)。

网友找到我,我帮助他就业了。(西安俩个案例)

动设备和桌面电脑上的客户端API起初并不是同步的。最初总是移动设备上先拥有某些功能和相应的API,但慢慢的,这些API会出现在桌面电脑上。其中一个应用接口技术就是getUserMedia API,它能让应用开发者访问用户的摄像头或内置相机。下面就让我展示一下如何通过浏览器来访问你的摄像头,并提取截屏图形。下面的代码里我写了一部分注释,请阅读:

  1. <!--

  2. 理想情况下我们应该先判断你的设备上是否

  3. 有摄像头或相机,但简单起见,我们在这里直接

  4. 写出了HTML标记,而不是用JavaScript先判断

  5. 然后动态生成这些标记

  6. -->

  7. <videoid="video"width="640"height="480" autoplay></video>

  8. <buttonid="snap">Snap Photo</button>

  9. <canvasid="canvas"width="640"height="480"></canvas>

在写出上面这些标记前应该判断用户的客户端是否有摄像头支持,但这里为了不那么麻烦,这里直接写出了这些HTML标记,需要注意的是我们这里使用的长宽是640×480。

JavaScript代码

因为我们是手工写出的HTML,所以下面的js代码会比你想象的要简单了很多。

  1. // Put event listeners into place

  2. window.addEventListener("DOMContentLoaded", function() {

  3. // Grab elements, create settings, etc.

  4. var canvas=document.getElementById("canvas"),

  5. context=canvas.getContext("2d"),

  6. video=document.getElementById("video"),

  7. videoObj={ "video": true },

  8. errBack=function(error) {

  9. console.log("Video capture error: ", error.code);

  10. };

  11. // Put video listeners into place

  12. if(navigator.getUserMedia) { // Standard

  13. navigator.getUserMedia(videoObj, function(stream) {

  14. video.src=stream;

  15. video.play();

  16. }, errBack);

  17. } elseif(navigator.webkitGetUserMedia) { // WebKit-prefixed

  18. navigator.webkitGetUserMedia(videoObj, function(stream){

  19. video.src=window.webkitURL.createObjectURL(stream);

  20. video.play();

  21. }, errBack);

  22. }

  23. elseif(navigator.mozGetUserMedia) { // Firefox-prefixed

  24. navigator.mozGetUserMedia(videoObj, function(stream){

  25. video.src=window.URL.createObjectURL(stream);

  26. video.play();

  27. }, errBack);

  28. }

  29. }, false);

  30. 一旦判断出用户浏览器支持getUserMedia ,下面就非常简单了,只需要将那个video元素的src设置为用户的摄像头视频直播连接。这就是用浏览器访问摄像头需要做的所有的事情!

    拍照的功能只能说是稍微复杂一点点。我们在按钮上加入一个监听器,将视频画面画到画布上。

    1. // 触发拍照动作

    2. document.getElementById("snap")

    3. .addEventListener("click", function() {

    4. context.drawImage(video, 0, 0, 640, 480);

    5. });

    6. 当然,你还可以在图片上加一些滤镜效果….我还是把这些技术放到以后里再说吧。但至少你可以将这个画布图像转换成一张图片。

      以前我们需要使用第三方的插件才能从浏览器里访问用户的摄像头,这不免有些复杂。现在只需要HTML5的画布技术和javaScript,我们就能简单快速的操作用户的摄像头。不仅仅还是访问摄像头,而且是因为HTML5的画布技术及其强大,我们可以给图片上加入各种迷人的滤镜效果。现在,在浏览器里用自己的摄像头给自己拍张照片吧!

锋网按:本文作者蒋海兵,趣拍产品总监,直播行业老兵。

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

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


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


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

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

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

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

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

1、采集

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

2、前处理

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

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

3、编码

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

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

H264和H265个模块技术差异:

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

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、解码和渲染

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

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

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

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

1、聊天室

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

2、礼物系统

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

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

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