简介 观看手游直播时,我们观众端看到的是选手的屏幕上的内容,这是如何实现的呢?这篇博客将手写一个录屏直播 Demo,实现类似手游直播的效果。 获取屏幕数据很简单,Android 系统有提供对应的服务,难点在于传输数据到直播服务器,我们使用 RtmpDump 来传输 Rtmp 数据。 实现效果 最终我们推流到 B 站直播间,在直播间能够实时看到我们手机屏幕上的画面。 ? 基本流程 获取录屏数据 对数据进行 h264 编码 Rtmp 数据包 上传到直播服务器推流地址 获取录屏数据 通过 Intent 获取到 MediaProjectionService,继而获取到 Mediaprojection 使用第三方库 Rtmpdump 来实现推流到直播服务器,由于 Rtmpdump 的代码量不是很多,我们直接拷贝源代码到 Android 的 cpp 文件,如果需要用到 Ffmpeg 不能才用该种调用方式了
代码地址 :https://github.com/deepsadness/MediaProjectionDemo 想法来源 上一边文章的最后说使用录制的Api进行录屏直播。 主要思路 直接使用硬件编码器进行录制直播。 使用rtmp协议进行直播推流 ? 这边文章使用了rtmp的流媒体协议,优点是只要支持该协议的播放器都可以直接播放我们的投屏流。 参考文章 Android实现录屏直播(一)ScreenRecorder的简单分析 直播推流实现RTMP协议的一些注意事项 投屏尝试系列文章 Android PC投屏简单尝试- 自定义协议章(Socket +Bitmap) Android PC投屏简单尝试(录屏直播)2—硬解章(MediaCodec+RMTP)
9.9元享100GB流量,1年有效,结合移动直播SDK、美颜特效SDK及小程序直播插件等,构建云+端一体化直播平台,支持电商带货,在线教育,游戏直播,社交直播等多场景
使用FFmpeg进行软件解码并通过RTMP进行推流 编译带有x264的FFmpeg 编写FFmpeg代码进行推流 通过ImageReader的回调,我们就可以得到截屏的数据了。 脚本放到ffmpeg的目录下进行运行就可以了。 这里需要修改的就是你自己的ndk路径了 #! /bin/bash NDK=/Users/Cry/Library/Android/sdk/android-ndk-r14b PLATFORM=$NDK/platforms/android-19/arch-arm FFMpeg不同的是,因为自己就有编码器,所以可以直接将头写到流里。完成publish 使用FFmpeg的必备套路。 注册编码器和网络。 FFmpeg的裁剪编译 直接编译出来的so文件巨大。在APK文件中6M大小。 定位裁剪需求 我们根据之前的文章,来分析和定位裁剪的脚本。 整个流程中,我们只需要libx264 的编码器。
(推屏) 、RTMP直播推送demo; SmartRelayDemoV2: RTMP|RTSP直播播放SDK、RTMP|RTSP转RTMP推送SDK、RTMP|RTSP实时录像、轻量级RTSP服务四合一 (推屏) 、RTMP直播推送demo,本地下载; SmartiOSRelayDemoV2: RTMP|RTSP直播播放SDK、RTMP|RTSP转RTMP推送SDK、RTMP|RTSP实时录像、 推流端使用说明 大牛直播Android后台推送摄像头、屏幕数据使用说明 大牛直播Android播放器使用说明 大牛直播iOS推流端使用说明 大牛直播 iOS端边推流边录像使用说明 大牛直播iOS推流端使用说明 大牛直播iOS播放器使用说明 大牛直播连麦使用说明(windows windows或windows与android/iOS) 上层源码目录 Windows/Android/iOS录像SDK"; [全屏]Windows平台双击画面进入全屏模式; [Windows本地FLV播放器]支持本地FLV文件播放(支持获取FLV文件的duration
主要议题有: 了解尖端分子技术,包括:单细胞染色质状态和转录因子整合分析,利用单细胞进行体内CRISPR筛选,并进行单细胞原位测序。 当晚,我在我们单细胞天地的各个交流群通知了大家记得录屏,毕竟按照往年惯例每次放出的recording都是不全的 , 今天终于在B站看到了全部的超高清录屏,真爽: 01 Rahul Satija Single-cell 第4阶段:高级目录管理:软硬链接,绝对路径和相对路径,环境变量。 第5阶段:任务提交及批处理,脚本编写解放你的双手。 第6阶段:软件安装及conda管理,让linux系统实用性放飞自我。 生信学习班起航,先送福利》 《96核心384G内存的超级服务器(共享)使用权一年》 如果你没有时间从头开始学编程,也可以委托专业的团队付费完成数据分析,参见: 明码标价之ATAC-seq 明码标价之转录组测序数据的可变剪切 明码标价之单细胞转录组的质控降维聚类分群和生物学注释 明码标价之普通转录组上游分析 明码标价之公共数据集的WGCNA 明码标价之公共数据库的生存分析
布局的xml文件位于layout目录下,这个目录存放了我们APP中使用的布局文件。通常我们不会针对不同的屏幕做多套布局,而是使用一套布局文件,添加各种约束来适应不同的屏幕。 ContentProvider可以看做是对底层数据的封装,提供了增、删、改、查的操作接口,避免了直接提供数据库权限带来的安全性问题。 可以直接将2x资源放在xhdpi目录下,3x资源放在xxhdpi目录下,如果对应的目录下没有资源,Android系统会自动根据当前屏幕的分辨率来选择最合适的资源加载,不会出现资源找不到的情况。 简单总结一下: 1、Android应用由四大组件(Activity、Broadcast、Service、ContentProvider)中的若干个组合而成,与用户直接交互的场景由Activity来实现 3、布局文件放在layout目录下,布局尽可能的保证控件的约束能够适应不同的屏幕尺寸。 4、资源文件可以复用iOS的资源,2x和3x分别放在xhdpi和xxhdpi目录下。
周末应机械工业出版社邀请,我直播了一场关于Python数据应用的分享,这里把录屏和课件分享给大家,希望多多交流学习! 直播时长一小时,讲解了Python历史、基础语法、数据科学生态、数据分析建模、自动化办公等内容,也回答了关于数据方向求职、职业规划的问题。 示例:
Android手机Chrome浏览器视频黑屏 关键词:Chrome,黑屏 需要支持H.264,不支持的手机会出现黑屏,建议使用微信或QQ内置TBS浏览器。 ---- 7.TRTC控制台 控制台启用旁路直播自动录制无法开启,响应是系统繁忙。 接口逻辑问题,确认客户已开通直播和点播功能,确认都开启后采用直播码方式接入直播,https://console.qcloud.com/live/livecodemanage,接入后再尝试设置旁路直播自动录制 ---- 10.关于直播,录制,点播混流等后续功能 channel_id是什么 直播码模式的channel_id是直播码 直播码的计算可以看下旁路直播的文档 https://cloud.tencent.com 录制只能自动录制吗?开自动录制要先开旁路直播吗? Web只能自动录制,录制的是旁路直播的流。
背景 Android 从 4.0 开始就提供了手机录屏方法,但是需要 root 权限。 试想一下,一套完整的屏幕采集流程应该是怎样的?屏幕数据源(生产者)在缓冲区产生数据,屏幕数据消费者从缓冲区提取数据使用。不同的消费者可以实现不同的功能,比如录屏保存和录屏直播(屏幕共享)。 (录屏直播),那么消费者可以是类似 MediaCodec 这样的编码器,相应地 Surface 由 MediaCodec 提供: Surface surface = mediaCodec.createInputSurface (录屏直播)时,高分辨率代表着清晰度,高帧率代表着流畅度。 六、横竖屏切换 横竖屏切换的场景在游戏直播中屡见不鲜。比如王者荣耀的主播切换账号时,需要先kill掉王者荣耀 APP 退到手机主界面,然后再打开王者荣耀重新登录,经历了从横屏到竖屏再回到横屏的切换。
1080P在 TX_Enum_Type_VideoResolution 定义是114,直接设置分辨率传枚举值即可。 10. TRTC 移动端怎么实现录屏(屏幕分享)? Android 端:Version 7.2 及以上版本支持手机录屏,具体实践方法请参见 实时屏幕分享(Android)。 iOS 端:Version 7.2 及以上版本支持 App 内录屏;Version 7.6 及以上版本支持手机录屏和 App 内录屏。具体实践方法请参见 实时屏幕分享(iOS)。 ; 音视频上行需要生成AAC的音频录制文件,可以在云直播配置录制模板加上AAC格式; 纯音频上行不支持录制成视频文件格式,配置了模板也录制不了; 云直播配置的录制模板是账号级别的。 如果这个账号下还有其它 sdkappid,并且没有在实时音视频配置模板的话就会选用直播的录制模板; 如果云直播录制模板配置了AAC和其它视频格式,刚开始上行只有音频,那也只会生成AAC格式一个录制文件。
contribute Bug Tracker: https://github.com/obsproject/obs-studio/issues SmartPublisher SmartPublisher是大牛直播 SDK (Github)的RTMP推流SDK,跨平台,支持Windows、Android、iOS平台,特别针对如在线教育、会议同屏等传统场景开发,以SDK开发包的形式提供,功能强大,可扩展性强,如可支持录像 格式外,Windows平台还支持MJPEG格式的摄像头采集; [麦克风/扬声器采集]Windows平台音频输入端支持麦克风、扬声器,或麦克风和扬声器混音输入; [RTMP推流]超低延时的RTMP协议直播推流 ,效果直逼传统H.265编码摄像头,Android/iOS平台支持H.265硬编码; [横竖屏推流]Android/iOS平台支持支持横屏、竖屏推流; [多分辨率支持]支持摄像头或屏幕多种分辨率设置 平台支持输出编码后的H264/AAC数据到上层,方便对接第三方平台(如GB28181)对接; [扩展录像功能]完美支持和录像SDK组合使用,录像相关功能,可参见”Windows/Android/iOS
近日,据外媒报道称,由于Android媒体播放功能存在漏洞,致使运行Lolipop,Marshmallow以及Nougat的Android智能手机很容易受到影响,从而导致用户手机屏幕被外人盗录而不自知。 Android MediaProjection服务中存在漏洞 这项漏洞出现在Android 5.0后加入Android Framework的MediaProjection服务之中,能够捕获用户屏幕内容以及记录系统音频 其实,该服务自诞生以来就一直存在于Android系统中,只是在Android5.0版之前,该服务需要具备根权限或是以系统密钥进行签名,才能利用录制屏幕上播放的影像,但5.0发布之后的MediaProjection 则让Android app开发商在无需上述条件下,就能收集用户的屏幕内容,或录下系统声音。 这项技术被称之为“tap-jacking”(触屏劫持),多年来一直被Android恶意软件开发者所滥用。
腾讯视频云 LiteAVSDK 升级到 5.4.6097 SDK 内核优化 iOS&Android:优化网络协议算法,直播推流抗 30% 丢包无压力; iOS&Android:优化网络Qos流控算法,视频通话卡顿率更低 ,流畅度更高; iOS&Android:优化 RTC 模式下的解码算法,降低部分Android手机连麦延迟高的问题; iOS&Android:优化了短视频上传的成功率。 BugFix iOS:录屏推流扩展,在某些情况下的CRASH问题(感谢Bilibili的反馈); iOS:录屏推流在 iOS 12.0 系统上的部分兼容问题(感谢Bilibili的反馈); iOS:图片转场合成功能的一些 CRASH问题; iOS:enableBFrame() 设置为 NO 之后依然编码出 B 帧的问题; iOS:背景音乐文件比较短时的一个循环播放问题;(感谢易方科技的反馈) Android:4.4 系统上的后台播放问题 (感谢河南国超的反馈); Android:华为荣耀部分机型上的蓝牙耳机的 CRASH 问题(感谢上海医米的反馈); iOS & Android:在强杀APP时会出现的一个底层库 CRASH(感谢知乎和企鹅电竞的反馈
采集的方式有两种,目前的安防监控流媒体服务器都用摄像头采集,而直播或者其他方面的采集则可以使用屏幕录制采集。 2.屏幕录制 屏幕录制采集的方式在游戏直播场景中非常常见。 而 iOS 则由于系统本身没有开放屏幕录制的权限而没法直接操作,但对于 iOS 9 以上的版本,是有个取巧的办法,可以通过模拟一个 AirPlay 镜像连接到(当前 App)自身,这样就可以在软件上捕获到屏幕上的任何操作 ,达到录制屏幕的效果。 在教育直播或者会场演讲场合,我们经常看见需要录制电脑桌面上 PPT 的场景,针对这种场景,目前市面上比较方便的方案是使用开源的桌面推流工具 OBS 来进行屏幕录制和推流:Open Broadcaster
架构图 支持录屏的抗遮挡能力( 限Windows 版本) 如要共享某一个窗口,即使该窗口被遮挡,也不影响屏幕分享。 ? 短视频(UGSV) & 移动直播(MLVB) 优化 android 版本的视频加载和生成速度 特别是在低分辨率下,新版本中一个视频的处理时间只有老版本的 17%。 ? 7、Android:增加音频耳返能力(采用了白名单策略,仅支持特定的几款机型) 8、Windows:录屏支持抗遮挡 9、windows:支持 socks5 代理 10、Windows:C# 修复移除某个用户的渲染回调后 5、iOS:短视频预览解决偶现黑屏的问题。 6、iOS:短视频合成时的内存占用较老版本降低了 300M。 7、iOS&Android:播放器支持新的时移播放规则。 移动直播 MLVB 1、iOS&Android:优化 iOS 13 上 QOS流控问题导致的画面模糊 BUG,解决 iOS 13 的主播画面很模糊的问题。
音视频的采集,采集阶段主要是对原始视频内容进行采集即直播内容的来源,根据应用场景的差别,我们可以分为五大类: 1.电视内的直播主要是采集已有的视频源 比如电视剧 综艺节目等都是预先录制好的; 2.演唱会直播主要是通过摄像机和麦克风分别录制演唱会的画面和音频 ; 3.端游直播,比如平常我们看到英雄联盟、吃鸡等游戏的直播, 主要是主播通过摄像头、话筒录制主播的直播画面 以及OBS等录屏软件录制游戏界面并合成直播画面; 4.户外直播,目前户外直播也比较流行,类似于真人秀的模式 ,主播主要依赖手机自带摄像头和话筒来录制内容; 5.手游直播,比如最近很火的王者荣耀,大仙、嗨氏等主播就是手游直播,android端主要是通过模拟器来录制,ios可以通过itools苹果录屏大师录制视频然后同步到 (3)播放协议自适应终端 目前直播流协议用的HLS,ios端均支持,android端不同的机型、不同的系统版本、不同的webview环境支持HLS协议不尽相同,对于不支持的再做降级处理,可以通过canPlayType 判断直播状态即直播是否在进行也是一个比较麻烦的事,由于android上对canplay canplaythrough playing事件支持程度不一样,触发时机也不尽相同,我们可以用一些hack技术,
直播系统聊天技术(三):微信直播聊天室单房间1500万在线的消息架构演进之路》 《直播系统聊天技术(四):百度直播的海量用户实时消息系统架构演进实践》 《直播系统聊天技术(五):微信小游戏直播在Android 小游戏直播本质上就是把主播手机屏幕上的内容展示给观众,自然而然地我们可以想到采用系统的录屏接口MediaProjection进行视频数据的采集。 (如下图),便于主播查看直播评论以及进行互动,录屏直播会让观众也看到这个组件,影响观看体验的同时会暴露一些只有主播才能看到的数据。 3.3 小游戏录屏时的情况 小游戏之前支持过游戏内容的录制,和直播原理上类似,都需要获取当前小游戏的画面内容。 可以看到,录屏方案中通过一个Renderer负责将游戏内容上屏,另一个Renderer将同样的纹理渲染到编码器上的方式实现了录制游戏内容,直播其实类似,是不是只要将编码器替换为直播的推流模块就可以了呢?
小游戏直播本质上就是把主播手机屏幕上的内容展示给观众,自然而然地我们可以想到采用系统的录屏接口MediaProjection进行视频数据的采集,这种方案有这些优点: 系统接口,实现简单,兼容性和稳定性有一定保证 后期可以扩展成通用的录屏直播 对游戏性能影响较小,经测试对帧率影响在10%以内 可以直接在主进程进行数据处理及推流,不用处理小游戏跨进程的问题 但是最终这个方案被否决了,主要出于以下考虑: 需要展示系统授权弹窗 需要谨慎处理切出小游戏后暂停画面推流的情况,否则可能录制到主播的其他界面,有隐私风险 最关键的一点:产品设计上需要在小游戏上展示一个评论挂件(如下图),便于主播查看直播评论以及进行互动,录屏直播会让观众也看到这个组件 小游戏录屏时的情况 小游戏之前支持过游戏内容的录制,和直播原理上类似,都需要获取当前小游戏的画面内容,录屏启用时小游戏会切换到如下的模式进行渲染: ? 可以看到,录屏方案中通过一个Renderer负责将游戏内容上屏,另一个Renderer将同样的纹理渲染到编码器上的方式实现了录制游戏内容,直播其实类似,是不是只要将编码器替换为直播的推流模块就可以了呢?
媒体组件 image(加载本地和网络图片); audio(播放音频); video(播放视频)。 ? 视频可以添加弹幕,用户也可以直接选择全屏播放。嗯,程序员哥哥又可以少写好多代码。 需要注意的是,选择全屏播放模式后,可以切换到竖向全屏播放,但是并不会退出全屏状态。 ? 地图 使用 map 组件,可以在小程序中打开一个地图。 视频接口,可以即时录制或选择已录制的视频。但选择录制新视频时,也是通过系统的相机应用进行拍摄。 ? 在小程序首次调用图片、录音、读写数据、文件等功能时,会出现权限确认框。 数据 和 Android 里 SharedPreferences 一样,小程序支持直接保存键值对,也是永久保存,在下次打开后可以进行读取。 ? 开发版的小程序可以直接在微信里开启调试模式,可以调出控制台,查看日志、报错等信息。 ?
云直播(CSS)为您提供极速、稳定、专业的直播云端处理服务,根据业务的不同直播场景需求,云直播提供了标准直播、慢直播、快直播三种服务,分别针对大规模实时观看、高并发推流录制、超低延时直播场景,配合移动直播 SDK,为您提供一站式的音视频直播解决方案。
扫码关注云+社区
领取腾讯云代金券