背景 本文主要讲的是基于Android平台实现RTMP的技术方案设计,基础架构图如下: 组网注意事项 1. Android端对接 推送分辨率如何设定或缩放? Android设备,特别是高分屏,拿到的视频原始宽高非常大,如果推原始分辨率,编码和上行压力大,所以,一般建议,适当缩放,比如宽高缩放至2/3,缩放一般建议等比例缩放,缩放宽高建议16字节对齐。
基于智慧教室或是会议的技术方案,一般主要是涉及到屏幕采集和推送,整体技术方案这块,一般建议走RTMP,说到这里,好人开发者提到,市面上也有RTSP的技术方案,甚至RTSP组播方案,这块,大牛直播SDK Android平台RTMP屏幕推送端 对应工程:SmartServicePublisherV2 需要注意的事项: 1. Android 8.0及以上版本设备,需要加入省电优化白名单,6.0以上版本,需要动态获取audio权限,具体代码如下: //加入省电优化白名单,以免8.0及以上版本设备后台运行超过一分钟被自动停掉 PackageManager.PERMISSION_GRANTED == ContextCompat.checkSelfPermission(this.getApplicationContext(), android.Manifest.permission.RECORD_AUDIO )) { } else { //提示用户开户权限音频 String[] perms = {"android.permission.RECORD_AUDIO
一、背景 为满足内网无纸化/电子教室等内网超低延迟需求,避免让用户配置单独的服务器,我们研发了轻量级RTSP服务开发包。 单播不再赘述,这里重点介绍下我们的组播技术方案: 组播解决的主要痛点是服务器部署和带宽占用问题,一般来说,内网电子教室/无纸化/实时同屏场景用RTMP推送+RTMP服务器,然后其他端从服务器拉取RTMP 但是,组播的劣势在于,高码率的无线网络环境体验很差,也就是说,如果是Windows或者Android平台推送,Android无线PAD播放,真正好用的,还是RTMP推拉流技术解决方案。
技术背景我们在做无纸化同屏的时候,好多开发者采集到屏幕、麦克风|扬声器数据,除了需要推RTMP出去,或者启动个轻量级RTSP服务,对外提供个拉流的RTSP URL,别的终端过来拉流(小并发场景),还有个技术需求 10及以上支持, Android10以下设备调用直接返回false * 需要有RECORD_AUDIO权限 * 要开启媒体投影 */ boolean start_audio_playback_capture 10及以上支持) */ boolean set_audio_output_type(int type); int get_audio_output_type(); void 平台无纸化同屏,如果需要本地录像的话,实现难度不大,只要复用之前开发的录像模块的就可以,对我们来说,同屏采集这块,只是数据源不同而已,如果是自采集的其他数据,我们一样可以编码录像。 以上是Android同屏录像设计,感兴趣的开发者,可以跟我单独沟通交流。
✳️ 引言:让每一块屏幕“同频”的核心技术无纸化会议与智慧教室,正在从“辅助工具”走向“核心基础设施”,成为政企数字化与教育信息化建设的标配。 以下四类痛点几乎是所有项目都会遇到的: 跨平台一致性难保障 不同终端(Windows 会议一体机、Android 触控大屏、iOS 平板、PC 客户端对推流协议与编码器支持差异大。 关键技术细节在无纸化会议与智慧教室的场景中,低延迟、稳定性、跨平台支持是三大技术核心。 政府机关无纸化会议系统场景需求: 总部与多个分会场之间,需要实时同步 PPT 汇报、领导批注及现场视频。 网络环境包含政务专网与公网混合,延迟要求低于 500ms。 总结与展望在无纸化会议与智慧教室的建设中,视频链路早已从“可有可无的辅助功能”转变为系统核心基础设施。它直接决定了会议能否顺畅进行、课堂能否自然互动、跨地域协作能否高效完成。
几年来,我们在做无纸化同屏或在线教育相关场景的时候,总是被一件事情困扰:如何实现Android平台的系统内录,并推送到其他播放端,常用的场景比如做无纸化会议或教育的时候,主讲人或老师需要放一个视频, 一般来说,做无纸化会议或教育同屏的公司,如果硬件是厂商定制的,可以跟厂商提出来,修改ROM,得到内录audio权限和数据。为此,我们专门设计了个接口,便于有这个权限的厂商使用。 10 已引入 AudioPlaybackCapture API。 我们考虑到,在做无纸化同屏或者教育投屏的时候,一般来说,主要还是采集麦克风音频为主,中间如果有视频播放或者类似需求的时候,我们把内录audio的打开即可(也可以做混音模式,或者推送过程中,实时静音麦克风或扬声器数据源 通过测试,方案3除了对Android版本要求比较高外,体验式最好的,感兴趣的开发者,可以尝试看看,如果是特定场景下,本身选用的设备,Android的版本就比较高,又有内录audio需求的话,无疑是非常不错的选择
技术背景在写这篇文章之前,实际上几年之前,我们就有非常稳定的无纸化同屏的模块,本文借demo更新,算是做个新的总结,废话不多说,先看图,本文以Android平台屏幕实时采集推送,Windows播放为例 我们在做无纸化同屏的时候,问的最多的是,能不能不要自建服务,直接主讲人或教师端,直接启动轻量级RTSP服务,其他终端拉流,如果是小并发,比如5人内的小范围的同屏,Windows平台走轻量级RTSP无可厚非 ,如果是30-60甚至100人的会议室,建议走RTMP。 Android横竖屏自动适配Android平台,如果是pad采集,基本就是横屏采集,如果手机端,需要确保横竖屏模式下都可以正常采集。4. 10. 能不能采集到扬声器的audio?
背景 最近在项目中着手做Android10和Android11 适配时候,期间遇到了不少的坑。之前有专门写过qq、微信分享的适配。但是此次在针对偏业务侧适配工作的时候还是碰到了一些新的问题。 在Android10 上公共目录下的图片无法通过file:// 格式去访问,提示找不到路径。如glide加载、图片选择库、裁剪框架等等都会收到影响。 但是,这里有个坑: 在Android10上不行,在Android11上又可以!!为什么? 因为Google改回来了,让Android11支持file://格式了。。。。 (wtf? 最后,我还想问两个问题: 1. targetSdk=30,android:requestLegacyExternalStorage="false"运行在Android10的设备上 会咋么样? 因为,Android10的设备还是以Android10的兼容模式运行的。所以要改成true。
Android Uri转File方法,适配android 10以上版本及android 10以下版本 博主在这里就不再做过多的阐述了,直接上代码,复制即用 public static File Uri uri, Context context) { File file = null; if (uri == null) return file; //android10
经过一年多的开发和长达数月的早期使用者测试,Android 10 终于准备好和您见面了! ? Android 10 聚焦移动创新、安全隐私和数字健康三大主题,全面打造最佳用户体验。 除了 Beta 项目以外,我们还通过文章专栏、社区讨论、用户调研和面对面会议等多种渠道聆听开发者心声,了解大家在应用适配方面遇到的挑战和困难。 如果您想为 Android 10 开发应用,请前往 developer.android.google.cn/10 Android 10 新特性 Android 10 引入了多项新特性和重要变更,等待各位开发者和用户前来探索 请下拉阅读,快速了解 Android 10 的出众之处,同时学习如何利用这些特性开发出更棒的应用。更多精彩内容,请阅读《Android 10 的十大技术创新》。 如果您有兴趣学习 Android 10 的源代码,请前往 Android 开源项目 (AOSP) 官网,并查看 Android 10 分支下的代码库。
操作系统作为智能设备的“核心”(Android系统从手表、手机覆盖到电视、汽车,去年有超过600款Android智能手机上市,目前有100款汽车支持Android系统),Android N依旧是I/O大会最为重要看点之一 Android N新功能汇总 本届I/O开发者大会上,Google发布的新一代的Android系统:Android N(7.0),今年的Android N重点关注了三个维度:分别是性能、安全和生产力。 但由于Android N内置了部分ICU4J API,如果Android应用只使用了这部分的API,那今后就可以不再集成庞大的高达10MB左右的ICU4J库了。 > <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent > <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent
Fedora Core 10下面用的JDK是OpenJDK,编译的时候出了个错误 Error occurred during initialization of VM Could
//frameworks/base/services/core/java/com/android/server/am/ActivityManagerService.java private final //frameworks/base/services/core/java/com/android/server/wm/ActivityTaskManagerService.java public //frameworks/base/services/core/java/com/android/server/wm/RootActivityContainer.java boolean //frameworks/base/services/core/java/com/android/server/wm/ActivityStackSupervisor.java boolean realStartActivityLocked
SharedPreferences,它是一个轻量级的配置文件类,用于保存软件配置参数. 采用xml文件形式存储在/data/data/包名/shared_prefs/下
智慧教室无纸化方案技术背景智慧教室无纸化方案是一种基于现代信息技术,旨在通过数字化手段实现教学过程的无纸化、智能化和高效化的解决方案。 以下是对智慧教室无纸化方案的详细阐述:一、方案概述智慧教室无纸化方案通过整合物联网、大数据、人工智能等先进技术,构建了一个集智能管理、智慧教学、环境便捷调节及资源制作于一体的新型现代化智慧教室。 三、实施步骤需求分析:根据学校的实际情况和需求,对智慧教室无纸化方案进行需求分析,明确建设目标和功能需求。方案设计:根据需求分析结果,设计智慧教室无纸化方案,包括系统架构、设备选型、平台开发等方面。 10及以上支持, Android10以下设备调用直接返回false * 需要有RECORD_AUDIO权限 * 要开启媒体投影 */ boolean start_audio_playback_capture 10及以上支持) */ boolean set_audio_output_type(int type); int get_audio_output_type(); void
[root@T-bagwell mydroid]# declare -x ANDROID_PRODUCT_OUT="/Work/mydroid/out/target/product/generic"
> <set xmlns:android="http://schemas.android.com/apk/res/android" > <alpha android > <set xmlns:android="http://schemas.android.com/apk/res/android"> <rotate android:interpolator > <set xmlns:android="http://schemas.android.com/apk/res/android"> <scale android:interpolator android:toXScale="1.4" android:fromYScale="0.0" android:toYScale="1.4" android > <set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:fromXDelta
前言: 视频会议是音视频通话的常见应用场景之一,TRTC对着这方面的支持必不可少,本次我们学习如何使用TRTC快速开发视频会议的功能。 android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE 主持人调用setDelegate可以进行事件调用createMeeting创建新的会议房间。 参会成员调用enterMeeting并传入会议房间号即可进入会议房间。 参会成员可以调用startCameraPreview进行视频画面的采集,调用startMicrophone进行声音的采集。 encParams.videoResolutionMode = TRTCCloudDef.TRTC_VIDEO_RESOLUTION_MODE_PORTRAIT; encParams.videoFps = 10
除了纽约大学即将推出的虚拟现实中心外,纽约市还将于今年晚些时候举办第一个以VR为主题的会议。这个将于10月26日至28日在Javits中心举办的NYVR博览会旨在成为东南海最大的VR会议。 于是,NYVR博览会与PhotoPlus博览会同时进行的方案诞生了,这两个会议预计将聚集大约2万名与会者。 ? 如你所预料的那样,这次的会议将对外展示VR在各个领域的实际应用,这些领域涉及保健,教育和娱乐。与此同时,NYVR博览还将利用纽约市作为各行业大熔炉的独特地理位置。 至于合作伙伴,该会议目前有HTC Vive、微软、Facebook的360 aboard,以及其他一些VR公司。 虽然像VRLA以及Augmented World Expo(增强世博会)这样的现有会议已经是非常成功了,但对于NYVR博览会来说,仍有机会取得成功。
《Android开发艺术探索》读书笔记 (10) 第10章 Android的消息机制 第10章 Android的消息机制 10.1 Android消息机制概述 (1)Android的消息机制主要是指Handler Android规定UI操作只能在主线程中进行,ViewRootImpl的checkThread方法会验证当前线程是否可以进行UI操作。 为什么不允许子线程访问UI呢? 10.2 Android的消息机制分析 (1)ThreadLocal的工作原理 1.ThreadLocal是一个线程内部的数据存储类,通过它可以在指定的线程中存储数据,数据存储以后,只有在指定线程中可以获取到存储的数据 public Handler(Looper looper){ this(looper, null, false); } 4.Android的主线程就是ActivityThread,主线程的入口方法就是