Android30分钟 DIY搭建局域网视频直播演示Demo
来源:互联网 发布:软件模块化设计 实例 编辑:程序博客网 时间:2024/04/29 13:03
现在移动直播如火如荼的一片大火。而直播技术也层出不穷,各种开源的,收费的直播SDK平台也不少。以上所有种种,虽然可以快速的实现直播功能,但对于自己技术的积累和学习并没有什么好处。本例子通过不借助任何框架。纯手打代码的模式。所有代码皆可编辑查看方便自己学习和积累。
手机直播的原理很简单。就是通过手机带有的Camera模块。获取到Camera的数据,然后通过网络,发送到服务器。服务器再通过广播,推送到其他客户端。主要涉及到采集数据,发送数据,广播数据,客户端接受数据,再显示数据。如下图所示,视频直播离不开视频采集,原始的视频数据太大了,需要进行视频处理,处理后再压缩,节省宝贵的宽带,最后进行推流,推出去。
以上,说的很简单。其实实际操作起来,有好多技术问题要处理。普通的手机如果打开数据录像,10s的数据就有100多兆。如何处理这样的数据就设计到编码问题。这是一个比较大的坑。另外,还有就是带宽问题了。无论你编码压缩的多好,用户量如果上去,其带宽使用是相当可观。不同地域,不同电信提供商的都要考虑。另外就是服务器并发推送的处理。10万个用户和500万的用户视频推送处理是个不小的挑战。而本文对于以上问题都不做讨论。仅仅是个局域网手机直播demo。
代码架构
先说下实现原理。通过调用Android Camera,通过onReviewListener进行数据的获取。
以上是一种获取预览信息的方式。除了此种方式,还有通过MediaRecorder的方式。获取视频信息。
还有一种直接把SurfaceView引用传下去,使用NDK调用Camera,直接获取数据源信息。
此种方式效率最高。但是这是Android工程师要求熟练NDK操作。
考虑过没,那个预览获得的数据是什么数据?
这个是大名鼎鼎的YUV数据。你搜索下这种数据格式。它算是各种视频流获取的第一手数据。原生数据。
对于YUV数据如何在客户端显示出来呢?这就是另一个问题了。理论上SurfaceView可以直接显示的。但是Java层并没有提供
相关接口。你需要调用NDK层里实现。
没写完,待续
代码工程:
http://download.csdn.net/detail/a315823806/9699223
- Android30分钟 DIY搭建局域网视频直播演示Demo
- 音视频直播技术--10分钟搭建好直播平台
- ios 视频播放/直播demo
- android30--
- Android30
- FMS视频直播系统搭建
- 视频直播linux环境搭建
- 快速搭建视频直播平台
- 5分钟搭建一个HTML5视频聊天Demo(WebRTC+NodeJS)
- 5分钟搭建一个HTML5视频聊天Demo(WebRTC+NodeJS)
- 5分钟搭建一个HTML5视频聊天Demo(WebRTC+NodeJS)
- 5分钟搭建一个HTML5视频聊天Demo(WebRTC+NodeJS)
- 1分钟搭建教学直播点播平台
- 我研制的操盘机器人在线直播操盘演示视频
- 视频直播--Mac上搭建直播服务器Nginx
- 使用VLC搭建视频直播服务器
- 基于SRS的视频直播服务器搭建
- 使用nginx-rtmp搭建视频直播服务器
- form 表单提交submit 和 ajax 混用可能导致后台 错误
- iOS怎么处理网络请求json中的null
- 在android view中写坦克大战
- 周总结-20161125
- 使用CSS3实现加载中动画
- Android30分钟 DIY搭建局域网视频直播演示Demo
- php 使用redis锁解决并发访问的问题
- 快速傅立叶变换FFT的实现
- android 设备信息的获取总结
- word表格替换为 excel 不换行
- Java中的线程的一点知识
- 郝斌的C语言基础 103 是否存在多维数组
- Android 使用AIDL跨进程通信(二)--传递自定义对象
- spring boot&&cloud干货系列