技术背景我们在做Android端同屏的时候,开发者希望可以高版本的Android系统上,在设备支持的前提下,可以采集到扬声器输出的audio,并支持和麦克风采集的audio相互切换,实现无纸化|智慧教室同屏不同 audio_record = new NTAudioRecordV2(get_application_context());// audio_record.IsMicSource(true);//如音频采集声音过小 null) {old.close();Log.i(TAG, "stop_audio_playback_capture capture.close.");}}启动RTMP推送或轻量级RTSP服务过程中,切换采集扬声器或者麦克风 采集屏幕和麦克风|扬声器audio,然后推送到RTMP服务和轻量级RTSP服务),扬声器audio采集,特别是视频播放模式下,比如无纸化同屏过程中,需要放个宣传片,或者一些视频材料,非常方便:总结Android 平台扬声器播放声音的采集,在无纸化同屏等场景下,意义很大,早期低版本的Android设备,是没法直接采集扬声器audio的(从Android 10开始支持),所以,如果需要采集扬声器audio,需要先做系统版本判断
Android打开关闭手机扬声器 1.添加权限 <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" /> 2 AudioManager) getSystemService(AUDIO_SERVICE)); 3.设置几个属性 private boolean isSpeakerOpen = true;//默认开启手机扬声器 Exception e) { e.printStackTrace(); } Toast.makeText(MainActivity.this, "打开扬声器 ", Toast.LENGTH_SHORT).show(); } 6.关闭扬声器 public void CloseSpeaker() { try { Exception e) { e.printStackTrace(); } Toast.makeText(MainActivity.this, "关闭扬声器
Camera2 介绍 今天为大家介绍一下如何在 Android 上进行视频采集。在 Android 系统下有两套 API 可以进行视频采集,它们是 Camera 和 Camera2 。 Camera是以前老的 API ,从 Android 5.0(21)之后就已经放弃了。我今天主要给大家介绍一下如何使用 Camera2 进行视频的采集。 使用 Camera2 基本流程 创建一个专门的线程用于Camera的具体操作。Android系统已经为我们提供了 HandlerThread类,以方便我们创建 Hander 类型的线程。 创建一个预览view,它可以是GLSurfaceView或TextureView(这两个View的区别我也会再写一篇文章来介绍),用于视频采集时观看采集到的结果。 参考资料 google sample android-Camera2video http://blog.csdn.net/lushuo9156/article/details/58059516 ----
AudioManager.FX_FOCUS_NAVIGATION_UP; AudioManager am = (AudioManager) getSystemService(Context.AUDIO_SERVICE); if (扬声器模式 direction, flags); } return true; } return super.onKeyDown(keyCode, event); } 听筒、扬声器 AudioManager.STREAM_SYSTEM), AudioManager.FX_KEY_CLICK); } else { audioManager.setSpeakerphoneOn(false);//关闭扬声器 accessibility prompts */ public static final int STREAM_ACCESSIBILITY = AudioSystem.STREAM_ACCESSIBILITY; 参考: Android 听筒扬声器切换(多机型兼容、兼容5.0以上)
本篇介绍 Camera2相比Camera1,使用起来要复杂一些,不过也节省了一些逻辑,比如可以自动处理角度问题。本篇就按照流程介绍下Camera2的简单使用,更多细节会后续介绍。 使用Camera2 申请权限 静态申请: <uses-permission android:name="android.permission.CAMERA" /> 动态申请: if (ContextCompat.checkSelfPermission
Camera1还是Camera2?好多开发者纠结,Android平台采集摄像头,到底是用Camera1还是Camera2?实际上,Camera1和Camera2分别对应相机API1和相机API2。 如何使用Camera2进行相机操作使用Android的Camera2 API来进行相机操作,包括预览、拍照等功能,是一个相对复杂但功能强大的过程。 我们在做Android平台RTMP推送、轻量级RTSP服务、实时录像和GB28181设备对接模块的时候,都需要用到摄像头采集,早期,我们提供了Camera1的采集demo,后面碎渣Camera2的优势越来越明显 ,高版本设备已成主流,目前一般建议采用Camera2的采集。 Camera2实现摄像头采集技术诉求,以上是Camera1和Camera2技术扫盲和技术探讨,感兴趣的开发者,可以单独跟我沟通探讨。
Android Camera2Android Camera2 是 Android 系统中用于相机操作的一套高级应用程序接口(API),它取代了之前的 Camera API。 支持的版本和兼容性:Android Camera2 从 Android 5.0(API 级别 21)开始支持。 Android Camera2 RAW图像捕获要使用 Android Camera2 进行 RAW 图像捕获,你可以按照以下步骤进行操作:检查设备支持:首先,确保你的设备支持 Camera2 API 并且支持 Camera2大牛直播SDK前几年在做Android平台RTMP推送和轻量级RTSP服务的时候,实际上就已经支持了Camera2的采集和数据投递,考虑到,目前5.0以下版本的设备越来越少,后面的GB28181 ,优势非常明显,如果需要通过Android平台采集视频数据,在设备支持的前提下,建议尽可能用Camera2做数据采集。
java 从 架构层、屏幕采集层、音频采集层、传输层、稳定性优化层 五个维度,完整、系统地解析大牛直播 SDK 在 Android 端是如何做到“高画质 + 低延迟 + 高稳定”的。 3.1 麦克风采集(NTAudioRecordV2)对应代码:SmartPublisherOnPCMData()采集特点: 支持 44.1k/48k 采样率 支持单声道/双声道 自动适配不同厂商(OPPO (Android 10+) 自定义 AudioPlaybackCaptureConfiguration 与 MediaProjection 绑定 防止音频重复采集(手机扬声器回灌问题) 并最终将 2. 七、总结:SmartServicePublisherV2 在 Android 屏幕采集方向的工程优势综合全文可以看到,大牛直播 SDK的SmartServicePublisherV2 demo实例,在移动端屏幕采集链路上的优势并不是某一个点
方案2:REMOTE_SUBMIXAndroid中可以通过使用MediaRecorder.AudioSource.REMOTE_SUBMIX来实现系统声音的录制,这个属性只有系统应用能够使用,而且这个属性会截掉耳机和扬声器的声音 /采集扬声器,需要android 10.0+版本}private void CheckInitAudioRecorderSpeaker() { if (audioRecordSpeaker_ == null 我们考虑到,在做无纸化同屏或者教育投屏的时候,一般来说,主要还是采集麦克风音频为主,中间如果有视频播放或者类似需求的时候,我们把内录audio的打开即可(也可以做混音模式,或者推送过程中,实时静音麦克风或扬声器数据源 (publisherHandle, index, 0.0f);}无图无真相,Android平台RTMP推送端或者轻量级RTSP服务测,采集到屏幕画面和扬声器声音,打包传输,RTMP或RTSP播放端录制下来的同屏画面视频如下 :视频内容总结低版本的Android系统,方案1应该是相对可行但局限很大的选择,方案2大多时候,非定制设备,很难满足权限要求,方案3对Android系统版本要求比较高。
Android系统要求每一帧都要在 16ms 内绘制完成,平滑的完成一帧意味着任何特殊的帧需要执行所有的渲染代码(包括 framework 发送给 GPU 和 CPU 绘制到缓冲区的命令)都要在 16ms 这个词可以概括这个类的工作,如果android系统是一场芭蕾舞,他就是Android UI显示这出精彩舞剧的编舞,指挥台上的演员们相互合作,精彩演出。Google的工程师看来挺喜欢舞蹈的! observer.isDispatchBegin()) { observer.dispatchEnd(dispatchTimeMs[0], dispatchTimeMs[2] 相对来说我们可以借鉴大量的采集逻辑,然后只要在获取关键性数据进行调整就好了。 数据在子线程中采集,避免采集数据卡顿主线程。 以下是性能采集的工具类同时采集了cpu数据,各位可以直接使用。
整体架构大牛直播SDK跨平台RTMP直播推送模块,始于2015年,支持Windows、Linux(x64_64架构|aarch64)、Android、iOS平台,支持采集推送摄像头、屏幕、麦克风、扬声器 、启/停用Aero;[音频]采集麦克风;[音频]采集扬声器;[预览]支持推送端实时预览;支持实时静音、取消静音;[对接服务器]支持自建标准RTMP服务器或CDN;支持断网自动重连、网络状态回调;屏幕和摄像头合成 /多层合成;支持窗口采集(一般不建议使用);支持实时动态水印;支持实时快照;支持降噪处理、自动增益控制、VAD端点检测;支持扬声器和麦克风混音;支持外部编码前音视频数据对接;支持外部编码后音视频数据对接 ;支持部分V4L2摄像头设备采集;[屏幕/V4L2摄像头]支持帧率、关键帧间隔(GOP)、码率(bit-rate)设置;[V4L2摄像头]支持V4L2摄像头设备选择(设备文件名范围:[/dev/video0 、关键帧间隔(GOP)、码率(bit-rate)设置;支持RTMP推送 live|record模式设置;支持前置摄像头镜像设置;支持软编码、特定机型硬编码;支持横屏、竖屏推送;支持Android屏幕采集推送
It's distributed under the GNU General Public License v2 (or any later version) - see the accompanying [视频采集处理]Windows平台涵盖“Windows视频采集处理SDK”功能; [音频采集处理]Windows平台涵盖“Windows音频采集处理SDK”功能; [本地预览]Windows平台支持摄像头 ]除常规YUV格式外,Windows平台还支持MJPEG格式的摄像头采集; [麦克风/扬声器采集]Windows平台音频输入端支持麦克风、扬声器,或麦克风和扬声器混音输入; [RTMP推流]超低延时的 平台支持Speex推送、Speex编码质量设置; [音量调节]Windows/Android平台采集端支持实时音量调节(其中,Windows平台混音模式下支持单独控制麦克风、扬声器音量); [H.264 模式设置(需服务器支持); [镜像]Android/iOS平台支持前置摄像头实时镜像功能; [前后摄像头实时切换]Android/iOS平台支持采集过程中,前后摄像头切换; [复杂网络处理]支持断网重连等各种网络环境自动适配
本篇详细介绍一下基于 Android OpenSL ES 实现音频的采集与播放。 1. OpenSL ES 是什么? 在 Android 开发中,Google 官方从 Android 2.3 (API 9)开始,便支持了 OpenSL ES 标准 ,并且对其进行了扩展。 本文介绍的 OpenSL ES 是针对 Android NDK 开发来说。 2. 代码实现 以下代码主要实现音频数据的采集、保存和播放。 __android_log_print(ANDROID_LOG_INFO,"byteflow",FORMAT,##__VA_ARGS__); #define LOGE(FORMAT, ...)
平台,支持采集推送摄像头、屏幕、麦克风、扬声器、编码前、编码后数据对接,功能强大,性能优异,配合大牛直播SDK的SmartPlayer播放器,轻松实现毫秒级的延迟体验,满足大多数行业的使用场景。 、启/停用Aero;[音频]采集麦克风;[音频]采集扬声器;[预览]支持推送端实时预览;支持实时静音、取消静音;[对接服务器]支持自建标准RTMP服务器或CDN;支持断网自动重连、网络状态回调;屏幕和摄像头合成 ;支持部分V4L2摄像头设备采集;[屏幕/V4L2摄像头]支持帧率、关键帧间隔(GOP)、码率(bit-rate)设置;[V4L2摄像头]支持V4L2摄像头设备选择(设备文件名范围:[/dev/video0 , /dev/video63])、分辨率设置、帧率设置;[V4L2摄像头]支持水平反转、垂直反转、0° 90° 180° 270°旋转;[音频]支持基于alsa-lib接口的音频采集;[音频]支持基于libpulse 音频采集:音频输入端支持麦克风、扬声器,或麦克风和扬声器混音输入。在 Windows 平台混音模式下,还支持单独控制麦克风、扬声器音量。
前言 最近收到用户反馈直播录制文件在Android手机上播放声音异常,几乎听不到声音,只有滋滋的电流声,但是在ios、pc端播放却是正常的,是Android手机的问题还是视频本身的问题呢? 图片.png 我们先来了解下什么是声道:声道指声音在录制或者播放时不同空间位置采集或回放的相互独立的音频信号,所以声道数也就是声音录制时的音源数量或回放时扬声器的数量。 目前市面上大多数的Android手机都是单声道的(也就是只有一个扬声器),上面我们说到此视频是双声道的,那是否双声道音视频在单声道机型上播放都没有声音呢?非也! 在VLC上播放此视频,点击音频->可视化->波形 (如图2)可以观察下具体的波形(如图3,上方是左声道,下面是右声道),相位相差180度,当左声道声波处在波峰时,右声道声波处在波谷,两个声道声波叠加一起再输出到同一个扬声器 2、亡羊补牢 1)使用FFmpeg命令处理,音频流仅保留左声道,输出到新的文件(有声音.mp4)中,输出文件音频流声道类型为mono(即单声道),这种情况下,当设备有两个扬声器,两个扬声器依旧都能听到声音
前言 这篇文章简单介绍下移动端Android系统下利用OpenSL ES进行音频采集方法。 权限申请 想要使用 OpenSL ES,需要在AndroidManifest.xml的配置文件里面增加权限 <uses-permission android:name="android.permission.RECORD_AUDIO 创建录制器 主要是创建录制对象和获取录制相关的接口: SLObjectItf recorder_object; //录制对象,这个对象我们从里面获取了2个接口 结语 上一篇博客了介绍了Android利用AudioRecord进行录音导出PCM数据。 本文同步发布于简书、CSDN。 作者:码农叔叔 来源:https://www.jianshu.com/p/0cb2ba3171b8 -- END --
高分屏采集编码效率低怎么办高分屏,不管是Windows还是Android,采集后的数据,建议先压缩,再编码,Windows平台我们可以设置压缩比例(scale rate),Android平台亦可,比如采集原始屏幕 Android横竖屏自动适配Android平台,如果是pad采集,基本就是横屏采集,如果手机端,需要确保横竖屏模式下都可以正常采集。4. 为什么要考虑补帧Android的时候,一定的采集模式下,屏幕如果没有变化,不会一直有实时屏幕数据回调下来,这时候,为了保持帧率或数据采集的完整性,建议补帧。5. 能不能采集到扬声器的audio? Windows不在话下,Android平台需要高版本支持,高版本是可以采集到扬声器数据的,我们也实现了相关的demo,可以同时采集麦克风和扬声器的audio,单独推送或者同时混音输出。11.
SkeyeLive是OpenSKEYE开源流媒体团队开发的一款功能丰富的开源PC端流媒体推流拉流直播软件项目,目前支持Windows、Android版本,后续将支持ios版本,其中Windows版本的SkeyeLive 支持多种源接入,包括Windows摄像头、麦克风、扬声器、RTSP摄像机、屏幕桌面等,采集后经过264、265软硬件编码、推送到内置SkeyeLive流媒体服务进行转发;同时SkeyeLive还支持通过 SkeyeLive服务端调用接口头文件:skeyelive.h----------采集模块采集分为音频和视频采集,音频采集分为麦克风和扬声器采集,视频采集又分为摄像头和屏幕采集;摄像头采集接口API接口主要有 */ void stopCaptureAudioInput();开始采集音频输入(麦克风)停止采集音频输入开始采集音频输出(扬声器) /** * @brief 开始采集音频输出 x,y,宽,高为采集相机视频叠加到屏幕上的矩形位置; (2) 本地音频采样率默认为系统音频默认采样率,设置在SkeyeLive的采样率为经过重采样出来的,音频默认位宽为32位浮点(FLT); (3) 视频叠加
音视频基本原理 1.采集 音视频需要经过摄像头、麦克风上等硬件设备上通过其上的传感器采集传输转化,最终成为计算机数字信号的过程。其中双人视频和群视频中的播片,采集播放都是由ffmpeg插件完成。 2.前处理 采集完的音视频数据需要经过一些处理得到更好的效果,音频的前处理包括增益控制(AGC) 、噪声抑制(ANS)、回声抵消(AEC)、静音检测(VAD)等,视频的前处理包括视频降噪、缩放 等。 竞品数据 竞品主播手机平台帧率竞品AIOS Android竞品BIOS Android竞品CIOS Android 4. 设备:两条音频线,一台PC,两台手机 1.主播端的麦克风连接PC的扬声器,观众端的扬声器连接PC的麦克风; 2.PC循环播放48k语音样本(样本时长为10s); 3.打开adobe audition进行录制 测试方法 单讲:观众端开启扬声器,主播端说话,主观听是否有自己的回声;反过来观众端说话,听是否有回声。 双讲:双方都开启扬声器,并同时说话,主观听是否有回声,或声音断续有剪切。
camera1.jpg 前言 今天为大家介绍一下使用Camera1进行视频采集。之前我写过一篇文章介绍的是Camera2进行视频采集。那么有人会问,为什么有了Camera2还要介绍Camera1呢? 这里最主要的原因是因为Android版本众多,Camera2是Google新推出的视频采集架构,但很多老的机型还不支持,所以为了兼容性的问题,我们还不能放弃使用Camera1进行视频的采集。 <uses-permission android:name="android.permission.CAMERA" /> 第二步,动态申请Camera权限。 Android在Android 6.0后,对根限的管理更严格了,除了上面要静态申请权限外,还要通过调用 requestPermissions 函数动态申请Camera权限。 参考 视频渲染之EGL Android视频采集Camera2 http://www.jianshu.com/p/39a015f2996e ----