本Demo是在作者Yrom的项目 [ScreenRecorder](https://github.com/yrom/ScreenRecorder) 的基础上额外增加了悬浮窗和通知栏等特性,详情见我的博文[Android实现录屏直播(二)需求才是硬道理之产品功能调研](http://blog.csdn.net/zxccxzzxz/article/details/54254244),而后又参考了 LakeinChina 作者的 [librestreaming](https://github.com/lakeinchina/librestreaming) 实现推流,目前正在逐步完善中。
## Updated 7.12
年初买的阿里云的ECS服务器**已经到期**了,所以大家无法使用之前的IP进行测试了,请大家自行搭建服务器使用吧~
## Updated 5.31
工作较忙,一直没时间接着干活,终于抽了一晚上来凑合集成了音频,大家可以试试。
## Updated 4.25
目前只实现了录屏的 Video 推流,有朋友提到音频迟迟没有,还有摄像头采集也将纳入计划。
### TODO LIST
- 加入摄像头采集及推流(包含拍摄直播、录屏直播两种功能,目前 Camera 还不能用,需要完善)
- 代码重构,改善代码的可读性,并且往 SDK 的方向推进
- [x] 加入音频采集及推流 (原谅我直接用的 librestreaming 里面的音频采集及软解码的代码,太忙了没时间自己搞)
- [x] 修复视频端对端延迟过长的问题(目前测试 3~6 s 左右,如果还有问题的可以 M 我)
------
## Updated 3.12
Demo 中集成了录屏直播推流的功能,内含个人自己搭建的 Nginx + rtmp 流媒体服务器,去掉了录屏存入本地文件的部分代码,之后会重新建项目完全移植过去,并且计划拥有滤镜和OpenGL来控制帧率等功能。
需要的朋友可以自行使用,推流格式:[rtmp://59.130.110.19:1935/live/yourstreamingkey](rtmp://59.130.110.19:1935/live/yourstreamingkey)
### 仿Bilibili悬浮窗与通知栏
![效果图](https://raw.githubusercontent.com/eterrao/ScreenRecorder/master/images/screenRecorderDemo.gif)
### 录屏推流直播
![推流效果图](https://raw.githubusercontent.com/eterrao/ScreenRecorder/master/images/ScreenRecorderDemo.jpeg)
Screen Recorder
=====
> 这是个 DEMO APP 主要是实现了屏幕录制功能。
>
> 通过使用 [MediaProjectionManager](https://developer.android.com/reference/android/media/projection/MediaProjectionManager.html), [VirtualDisplay](https://developer.android.com/reference/android/hardware/display/VirtualDisplay.html), [MediaCodec](http://developer.android.com/reference/android/media/MediaCodec.html) 以及 [MediaMuxer](http://developer.android.com/reference/android/media/MediaMuxer.html) 等API,故而这个项目仅支持Android 5.0。
>
>
>
> # 原理
>
> - `Display` 可以“投影”到一个 `VirtualDisplay`
> - 通过 `MediaProjectionManager` 取得的 `MediaProjection`创建`VirtualDisplay`
> - `VirtualDisplay` 会将图像渲染到 `Surface`中,而这个`Surface`是由`MediaCodec`所创建的
>
> ```
> mEncoder = MediaCodec.createEncoderByType(MIME_TYPE);
> ...
> mSurface = mEncoder.createInputSurface();
> ...
> mVirtualDisplay = mMediaProjection.createVirtualDisplay(name, mWidth, mHeight, mDpi, DisplayManager.VIRTUAL_DISPLAY_FLAG_PUBLIC, mSurface, null, null);
> ```
>
> - `MediaMuxer` 将从 `MediaCodec` 得到的图像元数据封装并输出到MP4文件中
>
> ```
> int index = mEncoder.dequeueOutputBuffer(mBufferInfo, TIMEOUT_US);
> ...
> ByteBuffer encodedData = mEncoder.getOutputBuffer(index);
> ...
> mMuxer.writeSampleData(mVideoTrackIndex, encodedData, mBufferInfo);
> ```
>
> 所以其实在**Android 4.4**上可以通过`DisplayManager`来创建`VirtualDisplay`也是可以实现录屏,但因为权限限制需要**ROOT**。 (see [DisplayManager.createVirtualDisplay()][1])
>
> [1]: https://developer.android.com/reference/android/hardware/display/DisplayManager.html
>
>
没有合适的资源?快使用搜索试试~ 我知道了~
录屏直播,游戏直播。手机录屏
共983个文件
xml:347个
png:259个
json:128个
需积分: 11 13 下载量 167 浏览量
2017-12-04
18:27:58
上传
评论
收藏 20.61MB RAR 举报
温馨提示
对Android屏幕的监听录制,尤其游戏直播。其原理是,首先获取对手机屏幕的录制监听,在直播的放里面加载录制的视频
资源推荐
资源详情
资源评论
收起资源包目录
录屏直播,游戏直播。手机录屏 (983个子文件)
librtmp.3 7KB
IScreenRecorderAidlInterface.aidl 323B
DanmakuBean.aidl 145B
resources-debug.ap_ 280KB
resources-debug-androidTest.ap_ 770B
gradlew.bat 2KB
fileSnapshots.bin 469KB
fileHashes.bin 133KB
taskArtifacts.bin 47KB
rtmp.c 139KB
amf.c 26KB
hashswf.c 15KB
parseurl.c 7KB
log.c 4KB
screenrecorderrtmp.c 4KB
R$styleable.class 27KB
R$style.class 20KB
R$styleable.class 20KB
R$style.class 20KB
R$attr.class 11KB
CameraActivity.class 9KB
R$attr.class 9KB
ScreenRecordActivity.class 8KB
ScreenFloatingWindow.class 8KB
RESSoftAudioCore.class 8KB
ScreenRecorder.class 7KB
R$styleable.class 7KB
CameraActivity$VideoEncoderThread.class 6KB
R$drawable.class 5KB
R$dimen.class 5KB
RtmpStreamingSender.class 5KB
RESAudioClient.class 5KB
R$dimen.class 5KB
R$drawable.class 4KB
R$id.class 4KB
R$color.class 4KB
R$color.class 4KB
RESSoftAudioCore$AudioFilterHandler.class 4KB
ScreenRecordListenerService.class 4KB
AudioSenderThread.class 4KB
ScreenFloatingWindow$DanmakuListAdapter.class 4KB
FLvMetaData.class 4KB
R$id.class 4KB
RESCoreParameters.class 4KB
MyWindowManager.class 3KB
IScreenRecorderAidlInterface$Stub.class 3KB
LaunchActivity.class 3KB
LaunchActivity_ViewBinding.class 3KB
CameraActivity_ViewBinding.class 3KB
R$layout.class 2KB
IScreenRecorderAidlInterface$Stub$Proxy.class 2KB
R$layout.class 2KB
R$attr.class 2KB
LogTools.class 2KB
ScreenRecordListenerService$1.class 2KB
DanmakuBean.class 2KB
ScreenRecordActivity$3.class 2KB
RESAudioClient$AudioRecordThread.class 2KB
ScreenFloatingWindow$DanmakuListAdapter$ViewHolder.class 2KB
R$string.class 2KB
ScreenRecordActivity$1.class 1KB
R$string.class 1KB
DanmakuListView.class 1KB
YuvUtil.class 1KB
Packager$H264Packager.class 1KB
Packager$FLVPackager.class 1KB
R$styleable.class 1KB
MyWindowManager$1.class 1KB
ScreenFloatingWindow$1.class 1KB
DanmakuBean$1.class 1KB
ScreenRecordActivity$2.class 1KB
LaunchActivity_ViewBinding$1.class 1KB
LaunchActivity_ViewBinding$2.class 1KB
CameraActivity_ViewBinding$1.class 1KB
CameraActivity$1.class 1KB
RESFrameRateMeter.class 1KB
R.class 1015B
R.class 996B
RESFlvData.class 979B
R$bool.class 872B
R$bool.class 857B
R$attr.class 847B
R$anim.class 813B
R$anim.class 798B
MyApplication.class 769B
BaseSoftAudioFilter.class 767B
BuildConfig.class 726B
ScreenRecordActivity$RESAudioBuff.class 672B
ByteArrayTools.class 666B
R$integer.class 657B
R$integer.class 642B
R.class 598B
R$color.class 587B
RtmpStreamingSender$STATE.class 556B
IScreenRecorderAidlInterface.class 545B
R$dimen.class 539B
R$style.class 534B
RESAudioBuff.class 500B
Packager.class 486B
RtmpClient.class 474B
共 983 条
- 1
- 2
- 3
- 4
- 5
- 6
- 10
资源评论
wjpSqlite999
- 粉丝: 0
- 资源: 5
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功