android视频录制、另一部手机实时观看方案 -526294412-ChinaUnix博客

最近调研android视频录制、另一部手机实时观看,大致有以下几种思路。

1. android手机充当服务器,使用NanoHTTPD充当服务器,另一部手机或者pc通过输入http://手机的ip:8080网址观看。

这种方案可以参考 ipcamera-for-android开源项目,网址 http://code.google.com/p/ipcamera-for-android/source/checkout

可以运行的源代码可以在这下载 http://download.csdn.net/detail/xiaoliouc/4933558

缺点:android手机必须支持MP4+ARM_BN格式,有些手机不兼容,延时有点厉害

2.

android手机采用juv-rtmp-client.jar包,网上有收费的包,但可以搜索破解包,通过rtmp协议发布服务到red5服务器。服务

器当然是red5了,可以用red5自带的的OFLA Demo做测试。客户端代码可以参考ivideochat,下载地址 http://download.csdn.net/detail/xiaoliouc/4933594

电脑可以直接通过安装了flash player浏览器观看,手机呢,可以找一个支持rtmp协议的播放器了。

缺点:需要flash支持

3.android手机通过camera类拍摄视频。把一帧一帧的图像压缩通过socket发送到服务器,服务器可以直接观看。而要想让另一台手机也能观看,可以让服务器转发来实现。

例子网上有很多, http://download.csdn.net/detail/xiaoliouc/4933610

缺点:通过一帧一帧的发送数据,传输过程耗费大量流量。玩玩可以,但实际项目中不可取。

4.android手机通过camera类拍摄视频,把拍摄的视频通过h264编码,可以采用软编码(使用x264库或者opencore软件

库),java类通过jni调用编译后的so文件来实现。然后通过基于udp的rtp协议传输到服务器。为什么不使用tcp协议呢,因为tcp的重传机制

会产生延时和抖动,而单独使用udp传输协议本身是面向无连接的,不能提供质量保证,需要在udp协议只上采用rtp或者rtcp提供流量控制和拥塞控制

服务。服务器通过ffmpeg对接收的h264解码并播放。播放可以使用VLC media

player。如果对c++比较熟悉,可以看看live555这个开源项目。

缺点:需要懂得的知识很多,jni啊,h264编码解码 ,rtp协议等。使用软编码,效率比较低,耗cpu耗电啊。

5.android手机通过mediaRecorder类拍摄视频,其中当然包括音频了。把拍摄的视频通过h264编码,可以采用硬编码(面向手机的硬件直接操作),只能针对3gp,mp4视频格式。方法参考 http://blog.csdn.net/zblue78/article/details/6078040

这篇博客,里面讲的很详细,提取h264的sps,pps,可以参考 http://blog.csdn.net/peijiangping1989/article/details/6934317

winHex是一款好用的16进制查看工具,下载地址 http://download.csdn.net/detail/xiaoliouc/4928773

代码网上有很多,个人理解是:mediaRecorder录制视频(3gp,MP4),可以通过

mMediaRecorder.setPreviewDisplay(mSurfaceHolder<p>[NextPage][/NextPage]</p>.getSurface());预览视频,通过

localsocket发送到本地的localserversocket的h264实时视频流。

这个过程涉及到硬编码,硬编码个人理解是,在预览过程或者提前确定视频的sps,pps,head(一般为0x00000001),不同的手机硬件

不一样。把得到的这些参数写入h264,得到正确的h264视频流文件,然后把流通过rtp协议(或者其他)发送到服务器。服务器端对得到的h264用

ffmepg解码,播放。

貌似项目客户需要在苹果电脑,手机上播放。这个时候HLS协议就出来了,头疼的东西,服务器采用nginx,ffmpeg解码。nginx服务器搭建过程,ffmpeg安装过程 见我前几篇文章。

然后用ffmpeg对解码后的mp4文件进行ts切片,生成带有索引的m3u8文件,然后客户端就可以通过浏览器http://ip:port/ *.m3u8访问。

过程貌似是这样的,但自己由于刚接触不到一个周,还不太理解。

6.相对容易、且效果不错的方法,android手机上搭建rtsp服务器,另一台手机使用VLC播放器输入rtsp://ip:port/播放

视频。具体原理是,通过android手机对mediaRecorder录制视频,把localsocket传输到本地的流经过硬编码,添加rtp头,分

离NALU包,根据rtsp协议交互过程把数据发送到对方。

代码可以参考spydroid了,源代码可以通过svncheckout,能够正常运行,且效果不错。

http://code.google.com/p/spydroid-ipcamera/source/checkout 。网上还没有分析spydroid源码的文章,等自己空了有机会分析下源代码。

7.前面讲的都是单向视频,如果是双向视频,其实就是视频会议了,可以参考sipdroid开源源代码了,网址 http://code.google.com/p/sipdroid/source/checkout

由于没有时间,就不研究这个了。

转载请保留出处:http://www.01yun.com/mobile_development/20130625/524170.html

安卓android视频录制、另一部手机实时观看方案相关推荐

  1. Android视频录制--屏幕录制

    上一篇介绍了MediaProjection,这个类可以用来实现安卓屏幕数据的采集,也就是手机一帧帧的截图,并输出成byte流的格式. 有兴趣的同学可以看这篇: Android视频录制--MediaPr ...

  2. Android视频录制并转GIF格式

    一.概述 我们在学习Android时候,往往需要查阅很多的资料教程,这时候经常会发现大神写的博客往往都是图文并茂的,充满可能性,效果直观的,所以自己个人记录一些日常工作中遇到的问题以及见解,也希望能够 ...

  3. Android视频录制从不入门到入门系列教程(一)————简介

    一.WHY Android SDK提供了MediaRecorder帮助开发者进行视频的录制,不过这个类很鸡肋,实际项目中应该很少用到它,最大的原因我觉得莫过于其输出的视频分辨率太有限了,满足不了项目的 ...

  4. 利用FFmpeg玩转Android视频录制与压缩(二)

    请尊重原创,转载请注明出处:http://blog.csdn.net/mabeijianxi/article/details/72983362 预热 时光荏苒,光阴如梭,离上一次吹牛逼已经过去了两三个 ...

  5. 利用FFmpeg玩转Android视频录制与压缩(三)

    请尊重原创,转载请注明出处http://blog.csdn.net/mabeijianxi/article/details/73011313 前言 上一回说到啊,这千秋月没是佳人离别,时逢枯枝落旧城, ...

  6. 用FFmpeg玩转Android视频录制与压缩

    [置顶] 利用FFmpeg玩转Android视频录制与压缩(二) 标签: Android视频采集Android视频编码Android FFmpegAndroid 视频压缩视频编码 2017-06-10 ...

  7. android 视频录制和上传,关于android实时视频录制与上传 .

    关于android的实时视频录制现在网上炒的很火,我想把自己学习研究的一个视频录制的demo 的心得与大家分享一下 使用的是MediaRecorder 以及使用SurfaceView进行录制的. 视频 ...

  8. android视频录制(调用系统视频录制)

    2019独角兽企业重金招聘Python工程师标准>>> 最近客户有一个视频录制的需求,于是,我就整理下可行的方案. 启动系统视频录制的代码: Intent mIntent = new ...

  9. android 视频录制小例子,android 录制视频实例 VideoRecordDemo

    [实例简介] [实例截图] [核心代码] package com.example.videorecorddemo; import java.io.IOException; import java.ut ...

  10. android 视频录制 保存到本地

    2021.1.19 更新: github下载地址. 有用的话麻烦点个星星 谢谢 下面贴一下 主要的代码 详细 请去下载我上传的dmeo /******************************* ...

最新文章

  1. 新闻智能分类练习赛开始报名啦!最先达到80分就可以领GPU,技术书籍!
  2. R语言构建文本分类模型并使用LIME进行模型解释实战:文本数据预处理、构建词袋模型、构建xgboost文本分类模型、基于文本训练数据以及模型构建LIME解释器解释多个测试语料的预测结果并可视化
  3. Nature:最强癌基因找到了,居然不在染色体上 | 华人领衔最新研究
  4. legend3---OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 10054
  5. Thinking in work
  6. Spring Boot【快速入门】
  7. java对cpu线程的要求_java-CPU份额对线程有什么影响
  8. python中的累乘积_Python中的连续元素最大乘积
  9. Linux系统配置静态IP地址步骤
  10. 这周学点变速不变调、变调不变速
  11. 智能校对的技术原理和实践
  12. MySQL高级篇知识点——锁
  13. 《九日集训》(第一讲)函数
  14. BUUCTF web(三)
  15. 数据安全运营体系建设
  16. linux 中 查看防火墙开放端口号 命令
  17. Spring MVC过滤器-超类 GenericFilterBean
  18. 博友的 编写高质量代码 改善java程序的151个建议
  19. 【区域经济学论文】基于区域经济背景下的茶叶资源发展研究(节选)
  20. 说说自己理解的web架构

热门文章

  1. Matlab textscan
  2. fid和is_【深度学习】生成式对抗网络(GAN)的常见评价指标:IS/FID/JS散度
  3. 如何快速找到微信支付的商户号和商户密钥?望相互转告!
  4. 矩阵乘法计算量估算/华为机试(C/C++)
  5. Android双目摄像头(带人脸检测)正确调用姿势
  6. 虚拟机您的计算机无法启动,一键解决win10虚拟机无法启动的问题
  7. Ubuntu 13.10 安装后配置
  8. C语言编程之一个最优美的图案
  9. Gxlcms有声小说系统/小说听书系统源码
  10. python-map()/reduce()/filter()/sorted()/排列组合