close
当前位置: 物联网在线 > 技术文库 > android >

Android开源:SopCastComponent-来疯直播安卓控件

欢迎关注来疯手机安卓直播开源项目,这是一个由纯java编写的项目,但是性能方面依然不错。整个项目完成了采集、 视音频处理、编码、数据发送前处理、数据发送的功能。整个项目支持flv封包,rtmp上传,当然也向外面提供了封包和上传的相关接口。 整个项目是我们来疯安卓团队的努力结果,但是可能某些地方依然会有一些不足之处,欢迎您提出宝贵的意见和建议。

sopcast

技术文档

Android手机直播(一)总览

Android手机直播(二)摄像机

Android手机直播(三)声音采集

支持功能

硬编码

弱网络环境处理

动态码率调整

摄像头参数设置

音频参数设置

视频参数设置

支持不同窗口尺寸

支持基于Gpu的视频特处理

支持静音

支持rtmp上传

支持水印

支持截屏录制

支持摄像头切换

支持flv封包

支持摄像头自动对焦和手动对焦切换

支持摄像头缩放

支持闪光灯操作

支持音频回声消除

要求

摄像头相关操作: Android sdk 版本 14+

视频直播: Android sdk 版本 18+

如何使用 1. 下载

使用起来非常方便, Gradle:

compile 'com.laifeng:sopcast-sdk:1.0.4' 2. 权限

在使用前需要添加相应的权限:

<uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.FLASHLIGHT" /> <uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.RECORD_AUDIO"/> <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" /> <uses-permission android:name="android.permission.WAKE_LOCK" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-feature android:name="android.hardware.camera" /> <uses-feature android:name="android.hardware.autofocus" />

注意: 在Android 6.0以后很多权限需要动态申请. 如果你想快速使用,可以将项目的targetSdkVersion设置在23一下。

3. 预览窗口大小

CameraLivingView支持View固定大小(EXACTLY)的模式,当然也可以在xml中定义窗口的长宽比, 这样的话一个参数要设为固定大小,另外一个参数设为"wrap_content"。 参考代码如下:

<com.laifeng.sopcastsdk.ui.CameraLivingView android:id="@+id/liveView" android:layout_width="match_parent" android:layout_height="wrap_content" app:aspect_ratio="0.8"/> 4. 摄像头参数设置 CameraConfiguration.Builder cameraBuilder = new CameraConfiguration.Builder(); cameraBuilder.setOrientation(CameraConfiguration.Orientation.LANDSCAPE) .setFacing(CameraConfiguration.Facing.BACK).setPreview(720, 1280) .setFps(24).setFocusMode(CameraConfiguration.FocusMode.TOUCH); CameraConfiguration cameraConfiguration = cameraBuilder.build(); mLFLiveView.setCameraConfiguration(cameraConfiguration);

在Activity的onCreate方法中设置摄像头参数信息,那么摄像头就会按照你的设置进行打开。如果你在横屏界面,需要将摄像头设置为横屏模式。 你可以传入一个摄像头预览尺寸的大小,内部会找出和这个设置的大小最匹配的尺寸进行使用。如果摄像头预览大小和屏幕显示大小不一致,则会先泽中间部分进行缩放显示。 如果你使用默认的设置的话,则不需要进行任何设置。很多手机前置摄像头需要设置fps为15,否则在弱光下会很黑。

默认设置如下:

public static final int DEFAULT_HEIGHT = 1280; public static final int DEFAULT_WIDTH = 720; public static final int DEFAULT_FPS = 15; public static final Facing DEFAULT_FACING = Facing.FRONT; public static final Orientation DEFAULT_ORIENTATION = Orientation.PORTRAIT; public static final FocusMode DEFAULT_FOCUSMODE = FocusMode.AUTO; 5. 视频参数设置 VideoConfiguration.Builder videoBuilder = new VideoConfiguration.Builder(); videoBuilder.setSize(640, 360).setMime(DEFAULT_MIME) .setFps(15).setBps(300, 800).setIfi(2); mVideoConfiguration = videoBuilder.build(); mLFLiveView.setVideoConfiguration(mVideoConfiguration);

在直播之前可以进行视频参数设置,可以通过setSize()方法来设置视频输出的尺寸大小,如果设置的尺寸比例不符合预览尺寸比例,则会选择中间区域进行缩放输出。 在直播之前可以设置视频的最大和最小码率,直播的时候先使用最大码率,后来根据网络环境进行调整,但是码率始终在最大和最小码率之间。mime参数将会设置到硬编 编码器,请确保mime的正确性,ifi参数也会传递到硬编编码器。如果你使用默认参数,则不需要进行任何设置。


(责任编辑:ioter)

用户喜欢...

CN0398开发板和ADuCM360_demo_cn0398开源软件包解决了土壤测量系统设

保持适当的土壤湿度和pH值是植物健康的基本要求,无论是用于大规模农业还是简单的家庭菜园。然而,为了测量这些土壤特性,开发人员需要设计出具有成本效益的高精度模拟信号链,能够将...


创新的组合:开源和众筹

开源已经被称为力量倍增器,这是使公司的员工,融资和资源更为有效的一个因素。但是,在过去的几年里,开源已经开始与另一个力量倍增器 - 众筹相提并论。现在,这种结合的结果正在出...


Android开发者选项之GPU过度绘制

GPU过度绘制定义 如果你粉刷过一个房间或一所房子,就会知道给墙壁涂上颜色需要做大量的工作。假如你还要重新粉刷一次的话,第二次粉刷的颜色会覆盖住第一次的颜色,第一次的颜色就...


推荐 10 个饱受好评且功能独特的开源人工智能项目

关于人工智能的项目,相信大家都看过或者用过不少了,但它们的大多数看上去都十分“高大上”,让人感觉要掌握他们犹如习屠龙之术一样。事实上,有很多关于人工智能的项目还是十分实...


“开源”为何对于IoT如此重要?

物联网、开源、操作系统是目前IT业界的热门词汇,也正是这三个词汇构成了物联网开源操作系统。 对于物联网发展而言,“碎片化”是主要的问题,其中芯片、传感器、通信协议、应用场景...


PowerVR让用户使用Android TV访问OTT(互联网内容)

一位智者曾经说过“未来的电视发展是一个难题”,这句话引用自我们之前的博客文章,我能够像我的前辈一样向大家清楚的描述这个问题,他去年曾也阅读过一篇文章“电视和机顶盒芯片组...


基于Zedboard的开源软件定义无线电(SDR)设备:Panoradio!

软件定义无线电(Software Defined Radio, SDR)是一种现代无线电广播通信技术,它采用软件定义的无线通信协议而非“纯硬件电路”实现各种通信和信号采集功能,这种方式打破了有史以来设备...


Android Weekly #276 安卓开发周刊 中文版

您是否了解过Android的Lifecycle-Aware库?(android.jlelse.eu) 我们如何了解Lifecycle-Aware库代码? Nishant Srivastava展示了可以跟踪活动或Lifecycle-Aware的Lifecycle Arch组件的片段,并相应地调整其行为。 为Mos...


Android Weekly #275 安卓开发周刊 中文版

MapMe — Android地图适配器 (medium.com) Josh Burton介绍MapMe,是一个用Kotlin编写的Android库,可以将适配器模式带到地图上。 赞助 CloudRail - 连接到API 10x更快 (cloudrail.com) 当我们用单一的界面连接到所...


使用Android Studio开发可独立运行(runnable)混淆过的Jar程序

之前开发Java程序一直都是使用Eclipse 开发Jar程序,现在开发基本上都已经弃用Eclipse了,但是有时偶尔开发个小的Jar程序,还要切换回去好麻烦,刚好前几天有人问几个相关的问题,就顺便整...