手机端与平台之间的视频直播功能,主要通过集成多种开源视频框架以及采购第三方视频直播服务器产品来实现预定业务需求。视频直播对话功能的实现,主要经历了三个阶段:利用开源视频框架实现视频直播、采购第三方视频服务器实现视频直播、系统平台集成开源框架实现视频互播。

图1.视频互播逻辑框架

1 利用开源视频框架实现视频直播

首先,视频流转播需要独立服务器软件构建视频流转播通道,经过框架调研与分析,我们选择SRS服务器软件作为视频转播服务器软件,而SRS是基于Linux操作系统的服务器软件。通过配置搭建CentOS服务器虚拟机作为SRS软件的基础系统环境,再安装配置开源SRS流媒体服务器软件作为推流和播流的服务软件,为视频直播模块的开发提供基础的测试环境。流媒体服务器(SRS)在视频流播放的过程中,起到建立视频流通道的作用,每个唯一的URL地址代表一个视频流通道,推流和拉流都是针对该视频流通道的操作。流媒体服务器同时可以担负起上千条视频流通道转发操作。

其次,手机端视频直播客户端采用开源的主流yaesa框架,实现了较好视频推流效果。依据业务需求把yaesa推流模块集成封装,顺利合并到原有的Android系统框架中,完成android客户端的视频推流功能,将rtmp格式视频流推送到流媒体服务器(SRS)的视频流通道地址。

再次,系统平台的视频画面播放功能采用video.js播放框架实现,video.js是基于html5的网络视频播放器,根据指定的视频流通道地址从流媒体服务器自动拉取rtmp格式视频流,并播放实时的视频画面。Web页面中嵌入多个video控件对象,从多个视频流通道读取视频流,实现了多视频直播画面窗口效果。

2 采购第三方视频服务器实现视频直播

为了保障视频流转发过程的稳定性,从硬件厂商采购了第三方视频服务器TFMS,包含硬件设备和流媒体服务器软件两个部分,替换开源流媒体服务器软件SRS产品,其发挥的视频流转发作用与SRS是一样。

对于系统功能实现来说,无需新增开发工作量,只需要修改视频流通道地址url即可实现流媒体服务器的切换。

3 系统平台集成开源框架实现视频互播

上述第一阶段实现了视频流从手机端到浏览器端的单向传播。根据业务需求的深入,需要再实现视频流从浏览器端到手机端的单向传播,构建两条双向视频流通道,从而达到视频播放互动对话的效果。

技术实现上,需要两个方面的技术准备。浏览器集成插件从摄像头和麦克风获取视频流和声音,并推流到指定的视频流通道url;手机端集成拉流框架,从指定视频流通道url拉取视频流和声音,并播流到播放窗口控件中。

系统平台的推流插件方面,通过市场产品调研和比较,选择了NodeMediaClient Web推流框架,该框架基于flash实现了连接PC的Camera和microphone硬件设备端口,直接获取Camera视频流和microphone声音,并以rtmp格式把视频流推送到流媒体服务器的指定视频流通道url。

手机端采用vitamio播流框架,从指定的视频流通道url拉取视频流,并在手机端弹出视频播放的浮动窗口,该窗口中实时播放拉取的rtmp格式视频流播放,从而完成从浏览器端到手机端的视频流的推流和拉流过程。

参考文献

1 https://github.com/ossrs/srs;

2 https://github.com/illuspas/NodeMediaClient-Web;

3 https://www.cnblogs.com/xiaoniuzai/p/7129036.html;

4 https://www.cnblogs.com/endv/p/7487685.html;

5 http://www.jq22.com/jquery-info404;

浏览器与android移动端视频互播技术实现的更多相关文章

  1. 揭秘盒马鲜生 Android 短视频秒播优化方案

    短视频作为内容重要的承载方式,是吸引用户的重点,短视频的内容与体验直接关系到用户是否愿意长时停留.因此,体验的优化就显得尤为重要.上一篇我们分享了 iOS 短视频秒播优化,这篇我们来聊聊 Androi ...

  2. Android开发工程师文集-Fragment,适配器,轮播图,ScrollView,Gallery 图片浏览器,Android常用布局样式

    Android开发工程师文集-Fragment,适配器,轮播图,ScrollView,Gallery 图片浏览器,Android常用布局样式 Fragment FragmentManager frag ...

  3. android上传图片、视频、文件,服务端使用wcf接收

    最近一直在搞android上传图片.视频.文件,服务端使用wcf接收,本文对调试中的遇到的问题进行记录. 首先android上传一些小图片是比较容易的一天下来差不多就能调试出来,但是上传一些大的文件时 ...

  4. Tomcat双向Https验证搭建,亲自实现与主流浏览器、Android/iOS移动客户端超安全通信

    紧接着<Tomcat单向Https验证搭建,亲自实现与主流浏览器.Android/iOS移动客户端安全通信>,此处演示下更安全的双向Https认证的通信机制,为了清晰明了,以下进行单独描述 ...

  5. Tomcat单向Https验证搭建,亲自实现与主流浏览器、Android/iOS移动客户端安全通信

    众所周知,iOS9已经开始在联网方面默认强制使用Https替换原来的Http请求了,虽然Http和Https各有各的优势,但是总得来说,到了现在这个安全的信息时代,开发者已经离不开Https了. 网上 ...

  6. Android中直播视频技术探究之---基础知识大纲介绍

    一.前言 最近各种视频直播app到处都是,各种霸屏,当然我们也是需要体验的,关于视频直播的软件这里就不介绍了,在不是技术的人来看,直播是一种潮流,是一种娱乐方式,但是作为一个高技术的,我们除了看看,更 ...

  7. Chrome浏览器如何调试移动端网页信息

    Chrome浏览器如何调试移动端网页信息 2017年08月12日 12:42:20 阅读数:835 最近在弄项目,用WebView加载一个页面,想追踪页面中一个按钮的点击事件.这个可能就需要调试这个页 ...

  8. Android手机间无线互传功能探索及实现

    年前研究了一下Android如何实现无线互传的功能,写了个小demo,最近无事,遂整理一下,与各位共享.前期调研发现,Android想要实现无线互传有以下几种技术:1,Bluetooth通行已久,简单 ...

  9. erlang-百度云推送Android服务端功能实现-erlang

    百度云推送官方地址http://developer.baidu.com/wiki/index.php?title=docs/cplat/push 简单的介绍下原理: 百度云推送支持IOS和Androi ...

随机推荐

  1. java并发编程(2) --Synchronized与Volatile区别

    Synchronized 在多线程并发中synchronized一直是元老级别的角色.利用synchronized来实现同步具体有一下三种表现形式: 对于普通的同步方法,锁是当前实例对象. 对于静态同 ...

  2. 『审慎』.Net4.6 Task 异步函数 比 同步函数 慢5倍 踩坑经历

    异步Task简单介绍 本标题有点 哗众取宠,各位都别介意(不排除个人技术能力问题) —— 接下来:我将会用一个小Demo 把 本文思想阐述清楚. .Net 4.0 就有了 Task 函数 —— 异步编 ...

  3. 基于promise对小程序http请求方法封装

    原因是我不想每次请求都复制粘贴那么长的请求地址,所以我把前边那一坨请求地址作为基础地址,只传后台给的路由就ok,而且,并不是每次请求都要显示正在加载,这对小程序体验很差,所以,我加了个形参,用来判断是 ...

  4. CopyOnWriteArrayList你都不知道,怎么拿offer?

    前言 只有光头才能变强 前一阵子写过一篇COW(Copy On Write)文章,结果阅读量很低啊...COW奶牛!Copy On Write机制了解一下 可能大家对这个技术比较陌生吧,但这项技术是挺 ...

  5. Java并发——CAS

    什么是CAS? CAS是Compare And Swap的简称.在Java中有很多实现,比如compareAndSwapObject()方法,或者compareAndSwapInt()方法等.多用在包 ...

  6. 2018-08-20 中文代码之Spring Boot集成H2内存数据库

    续前文: 中文代码之Spring Boot添加基本日志, 源码库地址相同. 鉴于此项目中的数据总量不大(即使万条词条也在1MB之内), 当前选择轻量级而且配置简单易于部署的H2内存数据库比较合理. 此 ...

  7. 一文了解腾讯云数据库SaaS服务

    本文由云+社区发表 作者:邵宗文,2009年加入腾讯,现为腾讯云数据库专家产品经理.之前曾负责为OMG事业群构建数据库平台,部署,规划及运维支持,为腾讯网,新闻客户端,快报,视频,财经,体育等提供了稳 ...

  8. C语言中的位段(位域)知识

    在结构体或类中,为了节省成员的存储空间,可以定义某些由位组成的字段,这些字段可以不需要以byte为单位. 这些不同位长度的字段实际存储于一个或多个整形变量.位段成员必须声明为int, signed i ...

  9. 今年开搞了,搭建一下vue开发环境

    首先-->搞了几天的SpringBoot玩的差不多了,领导直接说, 别项目组需要做前后端分离,说前端缺少人手,没有办法咯,只能硬着头皮去了, 说先学一下'vue',给我个文档让我学学,说是前半年 ...

  10. eclipse代码提示设置过常用字符还是不起作用的解决方法

    问题:重装eclipse之后发现没有了代码提示,一般情况下在设置中添加自动提示的字符之后就可以了,设置如下 如上图,初始的时候是只有一个点号,并没有字符,输入26个字母的大小写后点击Apply and ...