直播APP源码搭建简易直播平台及个人开发直播系统的难点
如何用直播APP源码搭建一个简易的直播平台
一.前端推流
1.推流可以采用命令: ffmpeg -i input -vcodec copy -acodec copy -f flv rtmp://127.0.0.1/live/cgstream0input 可以是实时流,也可以是文件,如果是文件 需要加上-re。运用中需要将127.0.0.1换成rtmp所在机器的ip地址。
用命令推流时间戳信息不能任意修改,想要达到一个满意的结果还是要用代码实现。
主要方法代码如下:
1.打开视频流,filename可以文件名称也可以是实时流url.
2.创建输出上下文以及输出流,输出流的格式需要设置成flv
- 从输入流中读取音视频包
二. 服务端
服务端可以选择crtmpserver,crtmpserver开源,在windows平台以及linux平台下都可以运行。
随着人们对视频质量要求的提高,基本上视频的分辨率都是高清(1080p),码率基本会在4M以上。试想如果服务器网卡选择千兆网卡,单个网卡最多也就支持两百多路。一般来讲,服务器的cpu配置会比普通电脑高很多,支持几百路并发是不会出现性能问题。
三. 播放端
如果在网页上播放(IE),可以选择JwPlayer,如果用插件的也是可以。Android端播放器如果底层基于ffmpeg,也可以播放CrtmpServer
转发的音视频流(ffmpeg需要引入librtmp库),IOS系统 同理。播放的url是rtmp:/
四. 如何搭建
1.首先 下载CrtmpServer服务,运行双击文件夹下的crtmpserver.exe,如果没有闪退,说明运行成功.
2.下载ffmpeg.exe,在命令行执行 ffmpeg -i input -vcodec copy -acodec copy -f flv rtmp://127.0.0.1/live/cgstream0 127.0.0.1改成crtmpserver.exe所在服务器的地址.如果你在linux下推流,需要linux版本的ffmpeg。cgstream0可以根据需要任意修改。在 windows平台下如果推流成功ffmpeg会一直打印信息,出错也会有相应的提示。
3.播放:播放可以用ffplayer.exe(这个工具对rtmp流支持不是很好 ,播放的地址是rtmp://127.0.0.1/live/cgstream0 live=1),还可以用CGPlayer播放器。
**个人开发直播系统的难点
**1、机型配适问题,网络直播系统至少需要面向全国观众,这样一来,系统与机型的广泛适配就成了非常痛苦的工作。移动电话系统大致可以分为Android和iOS。iOS还好,只有几个型号,因此,直播系统开发可以在规范和大小等编码问题上节省大量精力。有了一个,其他机型进行小的修改就可以被完全应用。Android市场上手机型号产品众多,买卖得火热的少说都有七八个,而且在安卓开源的基础上,每个品牌都有自己的手机系统,这使得产品应用程序开发人员更难开发,所以机型配置是一个非常令人头疼的问题。
2、网络不佳状况下保证直播质量,网络直播系统在运营时,非常怕的一点是在弱网情况下产生卡顿。同样是弱网络别人家的直播就能正常进行,而你家的系统就卡卡顿顿,那不是很尴尬嘛,这对于用户使用感也是非常大的打击。cdn分销网络对用户来说是不可见的,但用户的体验和清晰度与之密切相关。当然,随着5G网络的搭建部署完成,出现卡顿的情况会大大减少。
3、画面延迟状况,直播最主要的要求就是流畅快捷。主播开始直播后,直播视频数据就会及时被网络直播系统内置的编码器压缩编码并推流到服务器,待用户打开服务器就会进行拉流和解码,方可观看,在这时,如果解码时间过慢,画面延迟情况就会产生,所以如何优化解码器也考验着开发人员。
4、防盗链机制,平台运营期间,原创的唯一性是非常关键的,如果你随边让一个小平台链接到防盗,那么这个防盗机制就做得不算好了。
5、 美颜技术的好坏,通常我们会将美颜SDK嵌入网络直播系统,实现在直播过程中进行美颜。美颜SDK基于人脸识别技术,根据人脸关键点部位进行美颜、美型等操作。美颜的同时是否会影响画面清晰度以及美颜效果的稳定性、自然度都是判断美颜SDK好坏的标准。
最后,除上述问题之外,还有登录,权限管理,状态管理等,各种应用服务,消息推送,聊天,礼品系统,支付系统,操作支持系统,统计系统等,以及数据库,高速缓存,分布式文件存储,消息队列以及操作和维护系统。
由此可见,开发一个直播系统有着许多技术难点,一个程序员是很难搞定的,一般直播系统开发的团队都由十几到几十人间构成。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Elasticsearch大咖说 | Elasticsearch 在手机垂直搜索业务的应用创新
Elasticsearch 作为一个分布式、高扩展、实时的搜索与数据分析引擎,因其轻量级、稳定、可靠、快速等特性受到越来越多开发者的青睐,在搜索、日志分析、运维监控和安全分析等领域得到广泛应用。阿里云 Elasticsearch 技术团队,深度采访了来自阿里巴巴、vivo、携程、eBay 等知名公司的技术专家,推出了 Elasticsearch 大咖说系列专题,为广大开发者提供技术入门与进阶的经验分享,以及最佳应用实践参考。 分享嘉宾 杨振涛 vivo 互联网搜索引擎架构师 vivo 是一个专注于智能手机领域的知名品牌,而 vivo 互联网为 vivo 智能手机用户提供极致的互联网产品和服务。从 Elasticsearch 2.1.1版本开始,到目前,vivo 互联网已经使用了 200 多个 Elasticsearch 集群来支撑全球 2
- 下一篇
【微服务】如何做线上全链路压测?
云栖号资讯:【点击查看更多行业资讯】在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 1. 背景介绍 如今,在微服务架构盛行的互联网时代,微服务架构下模块(本文指可独立部署的服务)之间的关系错综复杂(哪怕是避免模块之间的直接循环依赖都很变得困难),评估一整套业务系统(集群)的容量已经不像评估单机系统那样容易,而系统的容量评估,是稳定性建设的核心内容之一,是我们绕不开的主题。 有了系统容量评估,配合今年的业务目标,我们才知道应该申请多少预算、什么时候需要扩容、系统瓶颈在哪、哪些服务(模块)需要扩容。评估系统容量或者准确的说 评估线上系统的容量现阶段最优效也是最准确的方式就是进行线上全链路压测。 2. 准备工作 你要问实现线上全链路压测难不难?当然难(现阶段稳定性工作哪一项不难?),但依然有迹可循。而且和当前技术体系的系统化建设程度以及各团队之间协作有关系。想实现线上全链路压测,我们需要做如下三个方面的准备工作(为了描述简单,本文的“全压”指的是线上全链路压测): 确定需要哪些团队参与 确定全压技术方案 设定全压目标和计划 3. 拆分详情 确定需要哪些团队参与全压绝对是一项耗...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8编译安装MySQL8.0.19
- MySQL8.0.19开启GTID主从同步CentOS8
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- CentOS7,CentOS8安装Elasticsearch6.8.6
- Red5直播服务器,属于Java语言的直播服务器
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- CentOS6,CentOS7官方镜像安装Oracle11G
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装