首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Android流媒体开发之路二:NDK开发Android端RTMP直播推流程序

h264视频编码和aac音频编码,并发送到RTMP服务器,从而实现Android摄像头直播。...对摄像头,通过Camera2接口,获取到更新的Surface,并转交给Opengl.EGL进行绘制,数据被绘制到TextureView的SurfaceTexture上,同时RGB原始数据回调给Activity...关于Camera2接口获取摄像头数据,可以参考之前的文章“Android流媒体开发之路一:Camera2采集摄像头原始数据并手动预览”,不同的是,那篇文章里直接使用ImageReader的Surface...交叉编译 这部分也是主要工作之一,c++代码要想在Android使用,必须编译成动态,然后让APP通过JNI来调用。...我在这里把我rtmp_enc_sdk.so动态Android.mk的主要内容贴出来,大家可作参考。 ? 模式基本是一样的,按照这个模板,修改成你自己项目里使用并不困难。

2.1K60
您找到你想要的搜索结果了吗?
是的
没有找到

Android流媒体开发之路一:Camera2采集摄像头原始数据并手动预览

Android Camera2采集摄像头原始数据并手动预览 最近研究了一下android摄像头开发相关的技术,也看了Google提供的Camera2Basic调用示例,以及网上一部分代码,但都是在TextureView...于是实现一下几个功能: 获取摄像头数据,并手动绘制图像 随时开启/关闭预览 随时保存当前摄像头图像,即使在关闭预览情况下 Android Camera2接口   查阅了一些资料,Android Java...相比Camera接口来说,第二代摄像头接口,调用复杂多了,但是灵活性也更高了,通过Google的Camera2Basic例子可以很清楚的了解到使用方式。...然而后来发现,android.graphics.Bitmap并不支持直接YUV数据存入,只能转为RGB数据格式,才能存入Bitmap,进而在TextureView上绘制。...编译的时候遇到JPEG没有指定的问题,如果不想依赖libjpeg,可以修改Android.mk,删除JPEG相关编译项就可以解决。

3K50

Android端实现1对1音视频实时通话

本文讲解 Android 端是如何使用WebRTC的,至于 P2P 穿越、STUN/TURN/ICE、RTP/RTCP协议、DTLS等内容不做讲解。...首先我们看一下如何引入 WebRTC (我这里使用的是最新 Android Studio 3.3.2)。...如果支持就使用 Camera2, 如果不支持就使用 Camera1. 在获到到具体的设备后,再看其是否有前置摄像头,如果有就使用 如果没有有效的前置摄像头,则选一个非前置摄像头。...通过上面的方法就可以拿到使用摄像头了,然后摄像头与视频源连接起来,这样从摄像头获取的数据就源源不断的送到 VideoTrack 里了。...小结 本文首先介绍了在 Android使用 WebRTC 要需申请的权限,以及如何引入 WebRTC

2.5K10

音视频直播技术--Android视频采集(Camera2)

Camera2 介绍 今天为大家介绍一下如何Android 上进行视频采集。在 Android 系统下有两套 API 可以进行视频采集,它们是 Camera 和 Camera2 。...Camera是以前老的 API ,从 Android 5.0(21)之后就已经放弃了。我今天主要给大家介绍一下如何使用 Camera2 进行视频的采集。...原码可以在这里获取 Camera2 整体工作结构 Camera2结构图 Camera Device:代表一个摄像头,在一部手机上有可能有多个摄像头,如前置摄像头,后置摄像头等。...使用 Camera2 基本流程 创建一个专门的线程用于Camera的具体操作。Android系统已经为我们提供了 HandlerThread类,以方便我们创建 Hander 类型的线程。...我们还可以通过Android的MediaRecorder类获取到的视频录制下来进行回看。对于MediaRecorder我会在另一篇文章中再做介绍。

1.8K20

Android AVDemo(9):视频封装,采集编码 H.264H.265 并封装 MP4丨音视频工程示例

在音视频工程示例这个栏目,我们通过拆解采集 → 编码 → 封装 → 解封装 → 解码 → 渲染流程并实现 Demo 来向大家介绍如何在 iOS/Android 平台上手音视频开发。...这里是 Android 第九篇:Android 视频封装 Demo。...Camera1 摄像头还是 Camera2 摄像头。...这里需要注意的是,我们通过开关 useCamera2 选择 Camera 或 Camera2。 参数配置 mCaptureConfig,可自定义摄像头方向、帧率、分辨率。...5、用工具播放 MP4 文件 完成 Demo 后,可以 sdcard 文件夹下面的 test.mp4 文件拷贝到电脑上,使用 ffplay 播放来验证一下效果是否符合预期: $ ffplay -i test.mp4

53220

搭建直播教学系统的方法

之后直播教学系统如果有播放器请求某一个直播链接,服务器会使用RTMP或者hls协议流推送到播放器。那么我们该如果根据情况选择这两种协议呢。首先,我们需要明确一点,这两种协议各有利弊。...为了实现这一功能,我们使用了一个开源项目javacv ,它包含了一些在计算机视觉领域应用比较多的,我们主要使用的是它的FFMpeg。...使用FFMpeg的FFMpegFrameRecoder类,我们能够方便地将从android摄像头采集到的帧传输到服务器。...具体的通过Camera和FFMpeg推流到服务器的实现请看我们的另一篇文章Android使用FFMpeg实现推送视频直播流到服务器。另外FFMpeg也支持H.264和AAC编码。   ...播放器   我们在试验的过程中,使用多种播放器和在全平台实现了rtmp和hls的播放。在网页端使用了videojs,在安卓端使用vitamio。

1.8K30

Android 的多摄像头支持

这对 Android 开发者来说意味着什么? 多摄像头 一台设备有多个摄像头没什么新鲜的,但是直到现在,Android 设备仍然最多只有前后两个摄像头。...因此,Android 5.0(Lollipop)引进了 Camera2,适用于 API 21 及以上。...目前为止,我们讨论了如何基于应用程序的用途选择默认摄像头。...文档上是这样描述的: 如果系统中有逻辑多摄像头,为了保持应用程序的向后兼容性,这个方法仅为每个逻辑摄像头和底层的物理摄像头组公开一个摄像头使用 camera2 API 去查看所有摄像头。...通常来说,类似的建议适用于:使用 Camera.getCameraInfo() API 查询所有的摄像头方向, 在用户切换摄像头时,仅仅只为每个可用的方向提供一个摄像头

2.8K40

Android适配多摄像头

Android P 开始,Android添加对逻辑多摄像头和 USB 摄像头的支持。这意味着,除了前后两个摄像头外,Android手机的前置或者后置有两个及两个以上的摄像头。...对此,对于Android开发者来说,就需要完成这方面的适配工作。 多摄像头 一台设备有多个摄像头没什么新鲜的,但是直到现在,Android 设备仍然最多只有前后两个摄像头。...而新出的Android P系统打破这一常规,今后Android支持多个摄像头,用户想打开哪个就打开哪个。 在Android P出现之前,我们可以使用如下的一些方法来操作摄像头。...因此,Android 5.0(Lollipop)引进了 Camera2,适用于 API 21 及以上。在Camera2中,我们可以使用下面的方式来打开摄像头。...如果我们想要提供给用户切换不同摄像头的 UI,建议(按照文档)为每个可能的镜头配置选择第一个可用的摄像头。我们可以使用下面的代码来选择第一个可用的摄像头

86010

Android开发笔记(一百八十一)使用CameraX拍照

常言道,眼睛是心灵的窗户,那么相机便是手机的窗户了,主打美颜相机功能的拍照手机大行其道,可见对于手机App来说,如何恰如其分地运用相机开发至关重要。...Android的SDK一开始就自带了相机工具Camera,从Android5.0开始又推出了升级版的camera2,然而不管是初代的Camera还是二代的camera2,编码过程都比较繁琐,对于新手而言有点艰深...CameraX基于camera2开发,它提供一致且易用的API接口,还解决了设备兼容性问题,从而减少了编码工作量。...android:name="android.permission.READ_EXTERNAL_STORAGE" /> 由于CameraX来自Jetpack,因此要修改模块的build.gradle,...CameraSelector,指定使用前置摄像头还是后置摄像头; 5、构建图像捕捉器对象ImageCapture,分别设置捕捉模式、旋转角度、宽高比例、闪光模式等拍照参数; 6、调用相机提供器对象的

1.5K20

Android平台实现Camera2数据推送到RTMP服务器

Camera2架构 在Google 推出Android 5.0的时候, Android Camera API 版本升级到了API2(android.hardware.camera2), 之前使用的API1...在API架构方面, Camera2和之前的Camera有很大区别, APP和底层Camera之前可以想象成用管道方式连接, 如下图: ​ 这里引用了管道的概念安卓设备和摄像头之间联通起来,系统向摄像头发送...如何实现camera2数据对接RTMP推送: 通过OnImageAvailableListenerImpl 获取到原始数据,推送端以大牛直播SDK https://github.com/daniulive...填0忽略这个参数,一般根据android.media.Image.getCropRect() 填充 * * @param y_plane 对应android.media.Image.Plane...建议在android.control.aeMode设置为OFF之前使用android.control.afTrigger锁定AF,或者在AE关闭时AF模式设置为OFF。

1.2K70

从今天开始,用对 Android 新老 Camera APIs

Camera2 引用管道的概念安卓设备和摄像头之间联通起来,系统向摄像头发送一个个 Capture 请求,而摄像头会返回包含一些图像的元数据 CameraMetadata 和一系列的图像缓冲 image...使用时间范围较广的前置摄像头(其实这一点是我没有想到的),我们总的曝光(ISO * Exposure_Time(ns))控制在 200000000000(2 E 11),改变 ISO 为 100、800...暗环境下,Pixel 前置摄像头,自动模式下曝光补偿开到最大,同手动模式下调节 ISO、曝光时间的效果比较 四排照片,每一排中间(那张相同)的完整图像是 aeMode 打开 、相机曝光补偿开到最大时...我的结论是,目前还不到升级到 Camera2 的时候。 原因如下: 只有 Android 5.0 Lollipop(API Level 21)以上的设备才可以使用 Camera2。...Camera 2 其他注意事项 权限问题:Camera2使用权限,5.0 的 Android 设备在配置文件申明即可,6.0 以上的系统需要考虑动态权限问题。

7.5K126

视频直播解决方案

之后如果有播放器请求某一个直播链接,服务器会使用RTMP或者hls协议流推送到播放器。那么我们该如果根据情况选择这两种协议呢。首先,我们需要明确一点,这两种协议各有利弊。...为了实现这一功能,我们使用了一个开源项目javacv 它包含了一些在计算机视觉领域应用比较多的,我们主要使用的是它的FFMpeg。...使用FFMpeg的FFMpegFrameRecoder类,我们能够方便地将从android摄像头采集到的帧传输到服务器。...具体的通过Camera和FFMpeg推流到服务器的实现请看我们的另一篇文章Android使用FFMpeg实现推送视频直播流到服务器。另外FFMpeg也支持H.264和AAC编码。...播放器 我们在试验的过程中,使用多种播放器和在全平台实现了rtmp和hls的播放。在网页端使用了videojs,在安卓端使用vitamio。

1.3K20

视频直播技术--Android视频采集(Camera1)

camera1.jpg 前言 今天为大家介绍一下使用Camera1进行视频采集。之前我写过一篇文章介绍的是Camera2进行视频采集。那么有人会问,为什么有了Camera2还要介绍Camera1呢?...这里最主要的原因是因为Android版本众多,Camera2是Google新推出的视频采集架构,但很多老的机型还不支持,所以为了兼容性的问题,我们还不能放弃使用Camera1进行视频的采集。...Camera1 使用步骤 camera1使用步骤.jpeg 如图所示,使用 Camera1 的步骤包括下面几大步: 设置Camera权限 检查Camera是否可用 打开摄像头 设置摄像头参数 设置预览...生成的纹理设置到Camera中。 4. 开启预览。5. 当有视频帧到达后,使用OpengGL ES绘制图片。 .........参考 视频渲染之EGL Android视频采集Camera2 http://www.jianshu.com/p/39a015f2996e ----

5.2K41

Android Camera2 实现预览功能

网上查阅相关资料后,发现 Android 5.0 及以后的版本中,原有的 Camera API 已经被 Camera2 API 所取代。...全新的 Camera2 在 Camera 的基础上进行了改造,大幅提升了 Android 系统的拍照功能。...它通过以下几个类与方法来实现相机预览时的工作过程: •CameraManager :摄像头管理器,主要用于检测系统摄像头、打开系统摄像头等; •CameraDevice : 用于描述系统摄像头,可用于关闭相机...相机预览 下面通过源码来讲解如何使用 Camera2 来实现相机的预览功能。...参考 • https://github.com/googlesamples/android-Camera2Basic 总结 以上所述是小编给大家介绍的Android Camera2 实现预览功能,希望对大家有所帮助

1.5K20
领券