技术背景我们在做无纸化同屏的时候,好多开发者采集到屏幕、麦克风|扬声器数据,除了需要推RTMP出去,或者启动个轻量级RTSP服务,对外提供个拉流的RTSP URL,别的终端过来拉流(小并发场景),还有个技术需求 技术实现实际上,Android同屏,需要录像的话,和采集摄像头数据录像一样,只是数据源不同而已,鉴于不管什么格式的video数据,我们都是投递到模块底层做转换编码,所以本质上没啥差别。 ; void stop_audio_playback_capture(); /* * 输出的音频类型 * 0: 不输出音频 * 1: 输出麦克风 * 2: 平台无纸化同屏,如果需要本地录像的话,实现难度不大,只要复用之前开发的录像模块的就可以,对我们来说,同屏采集这块,只是数据源不同而已,如果是自采集的其他数据,我们一样可以编码录像。 以上是Android同屏录像设计,感兴趣的开发者,可以跟我单独沟通交流。
背景 本文主要讲的是基于Android平台实现RTMP的技术方案设计,基础架构图如下: 组网注意事项 1. Android端对接 推送分辨率如何设定或缩放? Android设备,特别是高分屏,拿到的视频原始宽高非常大,如果推原始分辨率,编码和上行压力大,所以,一般建议,适当缩放,比如宽高缩放至2/3,缩放一般建议等比例缩放,缩放宽高建议16字节对齐。 横竖屏状态下,采集的屏幕宽高不一样,如果横竖屏切换,这个时候,需要考虑到横竖屏适配问题,确保比如竖屏状态下,切换到横屏时,推拉流两端可以自动适配,横竖屏自动适配,编码器需要重启,拉流端,需要能自动适配宽高变化 width, int height, int clipedLeft, int clipedTop, int clipedWidth, int clipedHeight); 文字、图片水印 好多场景下,同屏者会把公司
display this help and exit [root@56-201 ~]# 这里不准备演示 scriptreplay 的使用方法,其实也很简单 这里接合重定向实现文本终端的同屏 preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: qlen 1000 link/ether 52:54:00:16:5e:11 brd ff:ff:ff:ff:ff:ff [root@56-201 ~]# ---- 目标 通过重定向实现文本终端同屏 通过跟踪日志实现文本终端同屏 ---- 创建日志 [root@56-201 jail]# ll total 0 drwxr-xr-x. 2 root root 30 7月 30 19:04 bin bin lib64 [root@56-201 jail]# 之后从客户端 terminal 中看到的就是服务端中的内容,这个方法客户端登录后要主动使用 tail 命令,服务端不用做什么别的操作 两种同屏效果
RK3588 芯片内置了 VOP 控制器,支持四路视频同显或异显,可有效提高行业定制的拓展性。 1.1 Android 多屏同显iTOP-RK3588 开发板支持以下屏幕迅为 MIPI 7 寸屏幕标准 HDMI 屏幕(通过 HDMI 线连接)迅为 LVDS 7 寸屏幕迅为 LVDS 10.1 寸 默认打开对应的宏定义为多屏同显。RK3588 VP 和各显示接口的连接关系如下图所示。 如果同样的屏幕情况下,应用支持异显,那么副屏会显示实际正常的分辨率。所以如果要支持双屏或者多屏同显并要求显示正常,双屏或者多屏的屏幕的分辨率比要一致。 两者主要区别在:1 前者的 acitivity 需要独立开发,把需要显示的内容投到副屏,后者可以不需要源码,调用命令行或者系统接口把第三方 app 的 acitivity 投送到副屏;2 .前者只有一个
为了提升unity2d的性能限制。这里使用surparaller.org制作的pelagia。他可以在单线程和多线程之间自由切换。像开发其他的单线程软件一样使用pelagia。 这种挑战来自2个方面。 第一, 使用恰当的技术,让游戏支持动态扩展。 第二, 将游戏分解到不同的线程,让系统资源使用最大化。 下面将用3个例子来说明如何进行操作。 2,不支持摄像头跟随。 3,碰撞检测会失败,导致npc的重叠。 所以针对上述3个问题我制作了Big Roguelike。 你可以在下面的链接找到它。 big_rouelike2.png 为什么说单线程,因为只有一个线程处于满负荷的工作状态。 high-performance2.jpg
投屏技术已经被大量用在身边的产品, 比如电视投屏, 投影仪, 视频会议产品中. 在iOS平台外的其他平台中都已经有非常成熟的标准和实现. 这样对第三方的开发有了非常大的限制. 2, Airplay Airplay是苹果提供的一种多屏互动技术, 可以将音频照片,视频, 屏幕从iOS设备或者Mac电脑上投射到支持airplay接受的设备上, Airplay Mirroring客户端的同屏交互过程,分为三个主要步骤: 1, 设备广播与发现 2, 信息交互与能力协商 3, 音视频数据接收与解扰 设备广播与发现: Airplay设备间的广播与发现通过 我们对Airplay相关协议的逆向工程已经封装成了跨平台的类库和框架, 支持windows/Mac/Android/iOS/linux, 在自己内部产品中使用已经非常稳定, 如果有需要可以联系我们. 我的邮箱leeoxiang#http://gmail.com 相关链接: 1)AirCast 2)Airplay Protocol 3)AirCast website
投屏技术已经被大量用在身边的产品,比如电视投屏,投影仪,视频会议产品中。 在iOS平台外的其他平台中都已经有非常成熟的标准和实现。 这样对第三方的开发有了非常大的限制. 2.Airplay Airplay是苹果提供的一种多屏互动技术, 可以将音频照片,视频, 屏幕从iOS设备或者Mac电脑上投射到支持airplay接受的设备上,如Apple 这中投屏方案使用了iOS原生的投屏能力,并且是完全的软件方案,非常方便进行集成和使用。 Airplay Mirroring客户端的同屏交互过程,分为三个主要步骤: 设备广播与发现 信息交互与能力协商 音视频数据接收与解扰 设备广播与发现 Airplay设备间的广播与发现通过Bonjour协议进行 我们对Airplay相关协议的逆向工程已经封装成了跨平台的类库和框架, 支持windows/Mac/Android/iOS/linux, 在自己内部产品中使用已经非常稳定, 如果有需要可以联系我们.
正常的比例.png 2. 对Android手机进行控制 我们知道在Android中有几种方式可以对手机的Android发起模拟按键。 通过AccessibilityService的方式。 最后的结果.gif 就和Vysor和scrcpy一样,我们可以通过投屏PC ,并操作手机了。而且在很低的延迟下。 源码地址:https://github.com/deepsadness/AppProcessDemo 还有更多的细节处理,可以参考scrcpy 总结 Android PC投屏简单尝试 这一系列文章,终于到了尾声 最后分成下面几个方面来进行一下总结 数据源 截屏数据的获取 Android的MediaProjection API 通过MediaProjection的权限的获取和调用其API就能创建一个屏幕的录制屏幕 但是在这个场景下,投屏的效果清晰,流畅,延迟很低。 暂时部分,因为直接发送H264数据,只要进行解码后,就可以进行播放了。(文章使用了SDL2的方式进行了方便的播放。)
想要做图片的分享功能,首先就需要抓屏,将当前屏幕保存为一个图片文件。 下面就是一个将当前的Activity直接保存为一个图片文件的类库,可以直接使用。需要的,直接拿来主义就好了。 package com.gaolei.framework.android.util; import java.io.File; import java.io.FileNotFoundException ; import java.io.FileOutputStream; import java.io.IOException; import android.app.Activity; import android.graphics.Bitmap; import android.graphics.Rect; import android.view.View; public
现在,市面上的屏幕尺寸和全面屏方案五花八门。这里我使用了小米的图来说明: ? 上述两种屏幕都可以统称为刘海屏,不过对于右侧较小的刘海,业界一般称为水滴屏或美人尖。 为便于说明,后文提到的「刘海屏」「刘海区」都同时指代上图两种屏幕。 刘海屏、水滴屏全面屏适配细节 当我们在谈屏幕适配时,我们具体谈什么呢? 适配方式2即为设置屏幕的最大长宽比,这是官方提供的设置方式。 如果设置了最大长宽比,必须android:resizeableActivity="false"。 否则最大长宽比没有任何作用。 适配刘海屏 Android9.0适配 Android P(9.0)开始,官方开始提供了官方的挖孔屏适配API,具体可以参考Support display cutouts。 flag api error"); } catch (Exception e) { Log.e("test", "other Exception"); } } 2.
2. 教师端设备配置如果教师有移动PAD或其他Android设备,可以直接将音视频流推送到RTMP服务器,实现实时授课。 2. 横竖屏适配在Android设备上,横竖屏切换时需要考虑屏幕宽高的变化,确保推拉流两端可以自动适配。编码器需要重启以适应新的分辨率设置,拉流端也需要能够自动播放适应变化后的视频流。3. 智慧教室方案选型本文以大牛直播SDK的Android的SmartServicePublisherV2的同屏demo为例,Android采集计时器,编码打包分别启动RTMP推送和轻量级RTSP服务,Windows ;import android.view.WindowMetrics;import com.eventhandle.NTSmartEventCallbackV2;import com.eventhandle.NTSmartEventID 竖屏推送;支持Android屏幕采集推送;支持自建标准RTMP服务器或CDN;支持断网自动重连、网络状态回调;支持实时动态水印;支持实时快照;支持降噪处理、自动增益控制;支持外部编码前音视频数据对接;支持外部编码后音视频数据对接
使用无线投屏技术原理:无线投屏技术允许设备通过Wi-Fi网络或其他无线连接方式,将屏幕内容实时投射到另一台设备上。 在需要投影的设备上打开“设置”或“投影”选项,选择“无线投屏”或“屏幕镜像”等类似功能。在手机上搜索并连接另一台设备,即可实现屏幕内容的实时共享。 2. 使用HDMI线连接原理:HDMI线是一种高清多媒体接口线,可以将一台设备的屏幕内容通过HDMI接口传输到另一台支持HDMI的设备上。 大牛直播SDK跨平台RTMP直播推送模块,始于2015年,支持Windows、Linux(x64_64架构|aarch64)、Android、iOS平台,支持采集推送摄像头、屏幕、麦克风、扬声器、编码前 无论是无线投屏、第三方应用、HDMI线连接还是即时通讯软件的屏幕共享功能,都能轻松实现屏幕内容的实时共享。
> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.ray.linkit 要避免在转屏时重启activity,可以通过在androidmanifest.xml文件中重新定义方向(给每个activity加上android:configChanges=”keyboardHidden |orientation”属性),并根据Activity的重写onConfigurationChanged(Configuration newConfig)方法来控制,这样在转屏时就不会重启activity R.layout.file_list_landscape); }else{ //竖向 setContentView(R.layout.file_list); } 在模拟器中,要使程序转屏可以使用快捷键 当然在用命令行启动模拟器时可以直接使用参数emulator.exe -skin HVGA-L来启动横屏的程序。
技术背景在写这篇文章之前,实际上几年之前,我们就有非常稳定的无纸化同屏的模块,本文借demo更新,算是做个新的总结,废话不多说,先看图,本文以Android平台屏幕实时采集推送,Windows播放为例 技术考量指标本文以大牛直播SDK前些年实现的Android同屏采集推送为例,大概介绍下一些技术考量指标。1. 轻量级RTSP服务还是RTMP? 我们在做无纸化同屏的时候,问的最多的是,能不能不要自建服务,直接主讲人或教师端,直接启动轻量级RTSP服务,其他终端拉流,如果是小并发,比如5人内的小范围的同屏,Windows平台走轻量级RTSP无可厚非 Android横竖屏自动适配Android平台,如果是pad采集,基本就是横屏采集,如果手机端,需要确保横竖屏模式下都可以正常采集。4. 同屏过程中,重点画面可以快照吗?当然可以,我们同屏采集端,支持采集编码png或jpg格式输出。
---- 获取屏幕的截屏 1. 当客户端收齐S0和S1后,开始发送C2。当服务器收齐C0和C1后,开始发送S2。 当客户端和服务器分别收到S2和C2后,握手完成。 ? PC投屏简单尝试 获取数据的方式 都是通过MediaProjection.createVirtualDisplay的方式来获取截屏的数据。 参考文章 Android实现录屏直播(一)ScreenRecorder的简单分析 直播推流实现RTMP协议的一些注意事项 投屏尝试系列文章 Android PC投屏简单尝试- 自定义协议章(Socket +Bitmap) Android PC投屏简单尝试(录屏直播)2—硬解章(MediaCodec+RMTP)
现在通用的多屏适配有如下三种 1.match_parent 2.weight 3.多个文件夹(small,normal,large,and extra large),然后分别给出(计算)控件大小 第一个和第二个比较好理解 用GenerateValueFiles.java(Java工程)生成对应的values文件夹 这个文件我是从参考文章中拿下来并且修改过的.为了区分横屏还是竖屏,我把竖屏的文件夹名字添加了land标记 输入一次w和h 输出两个文件夹values-h*w(竖屏专用)和values-land-w*h(横屏),每次只要选一个就行 3.把values文件夹copy进android工程 接下来我用虚拟机演示一下 (1)横屏 ? 由于这是横屏,所以只需要values-land-2560x1504这个文件夹 (2)竖屏 ctrl+F11切换竖屏 ?
android的实现非常简单,使用Handler对象的postDelayed方法就可以实现。在这个方法里传递一个Runnable对象和一个延迟的时间。 该方法实现了一个延迟执行的效果,延迟的时间由第2个参数指定,单位是毫秒。第一个参数是Runnable对象,里面包含了延迟后需要执行的操作。
一个平凡而乐于分享的小比特,中南民族大学通信工程专业研究生在读,研究方向无线联邦学习 擅长领域:驱动开发,嵌入式软件开发,BSP开发 作者主页:一个平凡而乐于分享的小比特的个人主页 文章收录专栏:RK3568_Android11 _驱动开发,此专栏为RK3568开发板Android11系统开发,学习记录 欢迎大家点赞 收藏 ⭐ 加关注哦! 永不息屏 \android11\device\rockchip\rk356x\overlay\frameworks\base\packages\SettingsProvider\res\values\defaults.xml 在这个文件中修改 关闭锁屏 \android11\frameworks\base\packages\SettingsProvider\res\values\defaults.xml 在这个文件下修改
EasyDSS能支持多屏播放,可兼容Windows、Android、iOS、Mac等操作系统,还能支持CDN转推,具备较强的可拓展性与灵活性。 今天和大家分享一个技术干货,如何使用OBS推流到EasyDSS平台实现同屏播放。 操作步骤如下:1)首先,打开OBS:2)打开设置,选择推流:3)按照rtmp://{ip}:{port}/{application}/id这个规则,配置相关参数后,即可推送流成功,实现视频直播同屏的效果 ,如图:我们在此前的文章也分享过如何使用OBS进行推流录屏与直播,感兴趣的用户可以翻阅我们往期的文章进行了解。
一、Android 截屏攻击 针对 Android 应用的 " 截屏攻击 " 是 恶意应用程序 或者 攻击者利用某些漏洞或技术手段 , 非法获取用户屏幕上的敏感信息 , 会导致用户 隐私泄漏 或者 造成安全风险 来执行 未授权的截屏操作 ; 屏幕录制 : 屏幕录制技术 也可能被用于窃取用户的屏幕信息 ; 二、Android 系统的截屏方式 在 Android 系统中 , 用户可以 通过 特定的键盘组合触发 截屏 ; 电源键 + 音量减小键 : Android 设备上触发截屏的组合键 , 系统会触发截屏操作 , 并将当前屏幕内容保存为图片文件 ; 手势操作: 滑动手势 : 在特定的 Android 设备上 , 可以使用手势或者滑动手势来触发截屏操作 ; 通知栏快捷方式: 通知栏菜单 : 有些 Android 设备 在通知栏中提供了截屏的快捷方式按钮 , 用户可以通过点击该按钮来执行截屏操作 ; 系统设置中的截屏选项 Studio 中的截图功能 , 就是这么实现的 ; 四、Android 截屏代码 在 Android 应用程序中 , 通过代码进行截屏 , 需要如下几个步骤 : 首先 , 获取 Activity 的