yrom / screenrecorder Goto Github PK
View Code? Open in Web Editor NEWImplement screen capture without root on Android 5.0+ by using MediaProjectionManager, VirtualDisplay, AudioRecord, MediaCodec and MediaMuxer APIs
Implement screen capture without root on Android 5.0+ by using MediaProjectionManager, VirtualDisplay, AudioRecord, MediaCodec and MediaMuxer APIs
2020-07-09 14:42:19.943 8163-8216/net.yrom.screenrecorder E/AndroidRuntime: FATAL EXCEPTION: AudioSenderThread
Process: net.yrom.screenrecorder, PID: 8163
java.lang.IllegalStateException: Deque full
at java.util.concurrent.LinkedBlockingDeque.addLast(LinkedBlockingDeque.java:335)
at java.util.concurrent.LinkedBlockingDeque.add(LinkedBlockingDeque.java:633)
at net.yrom.screenrecorder.task.RtmpStreamingSender.sendFood(RtmpStreamingSender.java:141)
at net.yrom.screenrecorder.ui.activity.ScreenRecordActivity$2.collect(ScreenRecordActivity.java:112)
at net.yrom.screenrecorder.task.AudioSenderThread.sendRealData(AudioSenderThread.java:112)
at net.yrom.screenrecorder.task.AudioSenderThread.run(AudioSenderThread.java:70)
how to add watermark on video file ?
This API can capture the audio being played by other apps.
See https://developer.android.com/preview/features/playback-capture
and https://developer.android.com/reference/android/media/AudioPlaybackCaptureConfiguration.html.
我是动态拿的当前手机的分辨率做为宽高 当codecName 为 OMX.google.h264.encoder 宽高为width=1440, height=2560
时必现,当codecName为其他的时候 是正常的 但是 其他的 没有h264的清晰度好 使用我默认 优先使用 h264,如何解决 还是说 h264 对某种分辨率有限制?
代码报错,解析不了格式
java.lang.IllegalArgumentException: Failed to initialize OMX.qcom.video.encoder.avc, error 0xfffffffe
at android.media.MediaCodec.native_setup(Native Method)
at android.media.MediaCodec.(MediaCodec.java:1776)
at android.media.MediaCodec.createByCodecName(MediaCodec.java:1757)
at net.yrom.screenrecorder.BaseEncoder.createEncoder(BaseEncoder.java:112)
at net.yrom.screenrecorder.BaseEncoder.prepare(BaseEncoder.java:80)
at net.yrom.screenrecorder.ScreenRecorder.prepareVideoEncoder(ScreenRecorder.java:402)
at net.yrom.screenrecorder.ScreenRecorder.record(ScreenRecorder.java:202)
at net.yrom.screenrecorder.ScreenRecorder.access$000(ScreenRecorder.java:42)
at net.yrom.screenrecorder.ScreenRecorder$CallbackHandler.handleMessage(ScreenRecorder.java:150)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:185)
at android.os.HandlerThread.run(HandlerThread.java:61)
This project always trying to call intent and set MediaProjection when you start recording
I don't think it's a good algorithm, please make call to intent only once and then just reuse the same instance of MediaProjection
private void release() {
/*if (mMediaProjection != null) {
mMediaProjection.unregisterCallback(mProjectionCallback);
}*/
if (mVirtualDisplay != null) {
mVirtualDisplay.release();
mVirtualDisplay = null;
}
mVideoOutputFormat = mAudioOutputFormat = null;
mVideoTrackIndex = mAudioTrackIndex = INVALID_INDEX;
mMuxerStarted = false;
if (mWorker != null) {
mWorker.quitSafely();
mWorker = null;
}
if (mVideoEncoder != null) {
mVideoEncoder.release();
mVideoEncoder = null;
}
if (mAudioEncoder != null) {
mAudioEncoder.release();
mAudioEncoder = null;
}
/*if (mMediaProjection != null) {
mMediaProjection.stop();
mMediaProjection = null;
}*/
if (mMuxer != null) {
try {
mMuxer.stop();
mMuxer.release();
} catch (Exception e) {
// ignored
}
mMuxer = null;
}
mHandler = null;
}
大神,能留个联系方式嘛? 有个关于录制时屏幕旋转,录制后的视频上下或左右黑边,就是没有全屏的问题,而百度的录屏App有个横竖屏设置自动就可以全屏录制的功能,希望大佬能帮忙界面,可以有偿解决,多谢
录屏时如何动态改变原来设置的分辩(宽高)
画质差的离谱,请问如何设置
Media projection requires a foreground service of type serviceinfo.
Getting this error when try to run the app. ANY IDEA?????
录屏直播的时候。延迟比较严重。这种有方法解决么。
我的目的是,通过这种方式,实现视频会议中,发送录屏辅流,而不是保存到本地MP4;
我应用的框架是webrtc的,涉及到很多的格式转换,但我获取的ByteBuffer不懂如何转换成对应Frame的构造函数参数,最终是要变成I420格式的;
之所以需要选用您的思路,是因为您提供了帧数切换和分辨率的切换,这个很关键;
在使用的时候如果有混淆,需要加上googlemp4 parser的混淆文件
你好 感谢你贡献的代码。发现录制进度回调的实现有点小瑕疵:
private void writeSampleData(int track, MediaCodec.BufferInfo buffer, ByteBuffer encodedData) {
...
if (!eos && mCallback != null) {
mCallback.onRecording(buffer.presentationTimeUs);
}
...
}
也就是说在写入音频和视频数据都会导致回调,音视和视频各自的时间是线性递增,但是一起回调就有可能有时间交错
我试过在弹出的权限框选择不再提醒后,再一次录屏就会报系统界面已停止的问题,有大佬知道这个是什么引起的吗?
没有root情况下实时传输到服务器怎么写呢
设置宽高后,竖屏开始录屏,中间应用转屏到横屏,视频变形,没有监测转屏。
When you record something on your screen using screen recording apps, you are able to watch those videos as they are saved on your device.
While the screen recorder shows that it is recording a video but in reality there is no way to watch that video.
It is not saved anywhere on the device as there is no path for saving the video.
Now I cannot record a gif or video to show the above bug so let me show a picture
As can be seen from the above picture that there is no path to save your recorded videos.
存在延迟3秒至10秒的情况
在华为M3 平板12001920分辨率上,只能录制1280720的大小,即使将所有的视频参数调到最高还是很模糊,但是用自己写的代码录制1080*1920却很清晰。
E: hongxu transact start
E: hongxu transact end
E: setParameter(1:google.h264.encoder, ??(0x7f000022)) ERROR: UnsupportedIndex(0x8000101a)
E: getParameter(1:google.h264.encoder, ??(0x7f000040)) ERROR: UnsupportedIndex(0x8000101a)
E: getParameter(1:google.h264.encoder, ??(0x7f200406)) ERROR: UnsupportedIndex(0x8000101a)
E: Video frame size 1920x1080 must be a multiple of 16
Failed to initialized encoder params
E: [OMX.google.h264.encoder] ERROR(0x80001001)
signalError(omxError 0x80001001, internalError -2147483648)
E: Codec reported err 0x80001001, actionCode 0, while in state 6
E: Justin. gLoadComplete = true.....
E: signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 00000008
*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
Build fingerprint: 'Meizu/meizu_mx5/mx5:5.1/LMY47I/1532418776:user/release-keys'
Revision: '22355'
pid: 2513, tid: 2734, name: MediaCodec_loop >>> com.berui.firsthouse:arProcess <<<
r0 cde5fb94 r1 00000001 r2 00000000 r3 00000000
r4 cde5fbac r5 cde5fb94 r6 cde5fc20 r7 d0c03828
r8 cde5fc20 r9 00000000 sl 00000000 fp 00000016
ip f5ef4ac0 sp cde5fb60 lr f5ee9657 pc f5ee9656 cpsr dc379c90
backtrace:
E: VideoEncoder ran into an error!
android.media.MediaCodec$CodecException: Error 0x80001001
E: GraphicBufferSource queueBuffer: BufferQueue has been abandoned
E: #00 pc 0000d656 /system/lib/libstagefright_foundation.so (android::AMessage::debugString(int) const+29)
#1 pc 0000d869 /system/lib/libstagefright_foundation.so (android::AMessage::debugString(int) const+560)
#2 pc 000c8afd /system/lib/libstagefright.so (android::MediaCodec::onMessageReceived(android::spandroid::AMessage const&)+3904)
#3 pc 0000cd89 /system/lib/libstagefright_foundation.so (android::ALooperRoster::deliverMessage(android::spandroid::AMessage const&)+164)
#4 pc 0000c6f1 /system/lib/libstagefright_foundation.so (android::ALooper::loop()+216)
#5 pc 0001093f /system/lib/libutils.so (android::Thread::_threadLoop(void*)+110)
#6 pc 00063475 /system/lib/libandroid_runtime.so (android::AndroidRuntime::javaThreadShell(void*)+72)
#7 pc 000170a3 /system/lib/libc.so (__pthread_start(void*)+30)
#8 pc 0001510f /system/lib/libc.so (__start_thread+6)
A: * Assertion: should not be reached at mini.c:2215
这是魅族手机的错误,三星也会出现
现在市面多数需求肯定是只录的系统声音,希望大佬加下这个功能
没有发现暂停与继续录屏功能?如何实现?有提示一下吗?
我只想录制应用内UI区域,怎么定义
大佬,能不能帮忙提供个思路
this demo create the video but when is play give the message this video can't be played in lolipop device please give a solution .
你好 我想询问一下 关于录屏可以暂停之后再录制的话合并视频吗?
点击开始录屏之后 会返回桌面 有没有办法让他不返回桌面
想保证一定的清晰度 然后网络传输给另一端播放 但是通过无线传输 传输速率太高.每帧都发送的话 差不多2Mbps 请问有什么建议吗
Fatal signal 11 (SIGSEGV), code 1, fault addr 0x10 in tid 27082 (MediaCodec_loop)
机型:mx6 android7.0
Fatal Exception: java.lang.IllegalStateException
at android.media.MediaCodec.native_queueInputBuffer(MediaCodec.java)
at android.media.MediaCodec.queueInputBuffer(MediaCodec.java:2178)
at net.yrom.screenrecorder.BaseEncoder.setCallback(BaseEncoder.java)
at net.yrom.screenrecorder.MicRecorder.release(MicRecorder.java)
at net.yrom.screenrecorder.MicRecorder.setCallback(MicRecorder.java)
at net.yrom.screenrecorder.MicRecorder$RecordHandler.handleMessage(MicRecorder.java)
at android.os.Handler.dispatchMessage(Handler.java:111)
at android.os.Looper.loop(Looper.java:207)
at android.os.HandlerThread.run(HandlerThread.java:61)
在有些手机上会出现录屏花屏,该怎么解决,一般会手机配置比较低的出现频率比较高,但是高配置的也会偶尔出现
OS Version: 9_28
Vendor: Xiaomi
Model: MI 9
CPU ABI: armeabi-v7a
java.lang.IllegalStateException: writeSampleData returned an error
at android.media.MediaMuxer.nativeWriteSampleData(Native Method)
at android.media.MediaMuxer.writeSampleData(MediaMuxer.java:682)
at com.wl.screenrecorder.ScreenRecorder.writeSampleData(ScreenRecorder.java:287)
at com.wl.screenrecorder.ScreenRecorder.signalEndOfStream(ScreenRecorder.java:176)
at com.wlscreenrecorder.ScreenRecorder.access$300(ScreenRecorder.java:42)
After starting the recording we should be able to stop it somewhere.
I recently installed screen recorder app and started a recording and the app did start and while I was done recording, I wanted to finish it so I started looking for stop option but to my surprise I didn't find any.
How are we supposed to record something if we can't stop the recording.
App should be able to capture screen activities when start recorder is selected or launched.
Application crashes and locks device screen when start recorder is selected or launched.
Download Screen Recorder (v 2.4) from play store here, launch it, select without audio then start recorder.
RT!
大佬,我继承了你的项目,但是在有些设备录制的视频不能播放,跪求大佬提示
运行后不能选resolution bitrate等,点录制后闪退。
12-21 16:33:44.388 32318-32318/? I/art: Late-enabling -Xcheck:jni
12-21 16:33:44.467 32318-32318/net.yrom.screenrecorder.demo W/System: ClassLoader referenced unknown path: /data/app/net.yrom.screenrecorder.demo-2/lib/arm
12-21 16:33:44.582 32318-32356/net.yrom.screenrecorder.demo D/OpenGLRenderer: Use EGL_SWAP_BEHAVIOR_PRESERVED: true
12-21 16:33:44.615 32318-32356/net.yrom.screenrecorder.demo I/Adreno-EGL: <qeglDrvAPI_eglInitialize:379>: QUALCOMM Build: 10/21/15, 369a2ea, I96aee987eb
12-21 16:33:44.619 32318-32356/net.yrom.screenrecorder.demo I/OpenGLRenderer: Initialized EGL, version 1.4
12-21 16:33:44.630 32318-32355/net.yrom.screenrecorder.demo W/VideoCapabilities: Unrecognized profile 2130706433 for video/avc
12-21 16:33:44.674 32318-32355/net.yrom.screenrecorder.demo I/VideoCapabilities: Unsupported profile 4 for video/mp4v-es
12-21 16:33:44.677 32318-32355/net.yrom.screenrecorder.demo W/VideoCapabilities: Unrecognized profile 2130706433 for video/avc
12-21 16:33:44.699 32318-32318/net.yrom.screenrecorder.demo W/VideoCapabilities: Unrecognized profile 2130706433 for video/avc
12-21 16:33:44.705 32318-32318/net.yrom.screenrecorder.demo I/@@@: Encoder 'OMX.qcom.video.encoder.avc'
supported : [video/avc]
Video capabilities:
Widths: [96, 3840]
Heights: [64, 2160]
Frame Rates: [0, 960]
Bitrate: [1, 100000000]
Profile-levels:
AVCProfileBaseline-AVCLevel52
AVCProfileMain-AVCLevel52
AVCProfileHigh-AVCLevel52
2130706433-AVCLevel52
Color-formats:
0x7fa30c04
COLOR_FormatSurface
COLOR_FormatYUV420Flexible
COLOR_FormatYUV420SemiPlanar
12-21 16:33:44.707 32318-32318/net.yrom.screenrecorder.demo I/@@@: Encoder 'OMX.google.h264.encoder'
supported : [video/avc]
Video capabilities:
Widths: [16, 1920]
Heights: [16, 1088]
Frame Rates: [0, 960]
Bitrate: [1, 12000000]
Profile-levels:
AVCProfileBaseline-AVCLevel1
AVCProfileBaseline-AVCLevel1b
AVCProfileBaseline-AVCLevel11
AVCProfileBaseline-AVCLevel12
AVCProfileBaseline-AVCLevel13
AVCProfileBaseline-AVCLevel2
AVCProfileBaseline-AVCLevel21
AVCProfileBaseline-AVCLevel22
AVCProfileBaseline-AVCLevel3
AVCProfileBaseline-AVCLevel31
AVCProfileBaseline-AVCLevel32
AVCProfileBaseline-AVCLevel4
AVCProfileBaseline-AVCLevel41
AVCProfileMain-AVCLevel1
AVCProfileMain-AVCLevel1b
AVCProfileMain-AVCLevel11
AVCProfileMain-AVCLevel12
AVCProfileMain-AVCLevel13
AVCProfileMain-AVCLevel2
AVCProfileMain-AVCLevel21
AVCProfileMain-AVCLevel22
AVCProfileMain-AVCLevel3
AVCProfileMain-AVCLevel31
AVCProfileMain-AVCLevel32
AVCProfileMain-AVCLevel4
AVCProfileMain-AVCLevel41
Color-formats:
COLOR_FormatYUV420Flexible
COLOR_FormatYUV420Planar
COLOR_FormatYUV420SemiPlanar
COLOR_FormatSurface
12-21 16:33:44.713 32318-32318/net.yrom.screenrecorder.demo I/@@@: Encoder 'OMX.google.aac.encoder'
supported : [audio/mp4a-latm]
Audio capabilities:
Sample Rates: [8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000]
Bit Rates: [8000, 510000]
Max channels: 6
12-21 16:36:05.031 32318-32318/net.yrom.screenrecorder.demo D/AndroidRuntime: Shutting down VM
--------- beginning of crash
12-21 16:36:05.033 32318-32318/net.yrom.screenrecorder.demo E/AndroidRuntime: FATAL EXCEPTION: main
Process: net.yrom.screenrecorder.demo, PID: 32318
java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1, result=-1, data=Intent { (has extras) }} to activity {net.yrom.screenrecorder.demo/net.yrom.screenrecorder.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String[] java.lang.String.split(java.lang.String)' on a null object reference
at android.app.ActivityThread.deliverResults(ActivityThread.java:3699)
at android.app.ActivityThread.handleSendResult(ActivityThread.java:3742)
at android.app.ActivityThread.-wrap16(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1393)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String[] java.lang.String.split(java.lang.String)' on a null object reference
at net.yrom.screenrecorder.MainActivity.getSelectedWithHeight(MainActivity.java:669)
at net.yrom.screenrecorder.MainActivity.createVideoConfig(MainActivity.java:229)
at net.yrom.screenrecorder.MainActivity.onActivityResult(MainActivity.java:144)
at android.app.Activity.dispatchActivityResult(Activity.java:6456)
at android.app.ActivityThread.deliverResults(ActivityThread.java:3695)
at android.app.ActivityThread.handleSendResult(ActivityThread.java:3742)
at android.app.ActivityThread.-wrap16(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1393)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
在Android 5.1系统上会出现绿屏问题
Logcat:
2019-07-30 15:04:57.215 909-3862/? E/InputDispatcher: Window handle Window{7faca60 u0 Sys2003:com.android.systemui/com.android.systemui.media.MediaProjectionPermissionActivity} has no registered input channel
2019-07-30 15:04:57.233 28983-28983/? D/AndroidRuntime: Shutting down VM
2019-07-30 15:04:57.241 28983-28983/? E/AndroidRuntime: FATAL EXCEPTION: main
Process: net.yrom.screenrecorder.demo, PID: 28983
java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1, result=-1, data=Intent { (has extras) }} to activity {net.yrom.screenrecorder.demo/net.yrom.screenrecorder.MainActivity}: java.lang.SecurityException: Media projections require a foreground service of type ServiceInfo.FOREGROUND_SERVICE_TYPE_MEDIA_PROJECTION
at android.app.ActivityThread.deliverResults(ActivityThread.java:4843)
at android.app.ActivityThread.handleSendResult(ActivityThread.java:4884)
at android.app.servertransaction.ActivityResultItem.execute(ActivityResultItem.java:51)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2016)
at android.os.Handler.dispatchMessage(Handler.java:107)
at android.os.Looper.loop(Looper.java:214)
at android.app.ActivityThread.main(ActivityThread.java:7343)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:933)
Caused by: java.lang.SecurityException: Media projections require a foreground service of type ServiceInfo.FOREGROUND_SERVICE_TYPE_MEDIA_PROJECTION
at android.os.Parcel.createException(Parcel.java:2071)
at android.os.Parcel.readException(Parcel.java:2039)
at android.os.Parcel.readException(Parcel.java:1987)
at android.media.projection.IMediaProjection$Stub$Proxy.start(IMediaProjection.java:231)
at android.media.projection.MediaProjection.(MediaProjection.java:58)
at android.media.projection.MediaProjectionManager.getMediaProjection(MediaProjectionManager.java:104)
at net.yrom.screenrecorder.MainActivity.onActivityResult(MainActivity.java:148)
at android.app.Activity.dispatchActivityResult(Activity.java:8110)
at android.app.ActivityThread.deliverResults(ActivityThread.java:4836)
at android.app.ActivityThread.handleSendResult(ActivityThread.java:4884)
at android.app.servertransaction.ActivityResultItem.execute(ActivityResultItem.java:51)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2016)
at android.os.Handler.dispatchMessage(Handler.java:107)
at android.os.Looper.loop(Looper.java:214)
at android.app.ActivityThread.main(ActivityThread.java:7343)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:933)
Caused by: android.os.RemoteException: Remote stack trace:
at com.android.server.media.projection.MediaProjectionManagerService$MediaProjection.start(MediaProjectionManagerService.java:476)
at android.media.projection.IMediaProjection$Stub.onTransact(IMediaProjection.java:135)
at android.os.Binder.execTransactInternal(Binder.java:1021)
at android.os.Binder.execTransact(Binder.java:994)
Whenever i try to run this code on samsung cynogen 12.1 (5.1 lollipop) or on the emulator i always get this exception which seems to be cased by some problems with the timestamps:
E/MPEG4Writer﹕ timestampUs 126037 < lastTimestampUs 266235 for Video track
04-17 11:43:28.597 6475-6502/net.yrom.screenrecorder I/ScreenRecorder﹕ dequeue output buffer index=-1
04-17 11:43:28.597 6475-6502/net.yrom.screenrecorder D/ScreenRecorder﹕ retrieving buffers time out!
04-17 11:43:28.618 6475-6502/net.yrom.screenrecorder I/ScreenRecorder﹕ dequeue output buffer index=-1
04-17 11:43:28.618 6475-6502/net.yrom.screenrecorder D/ScreenRecorder﹕ retrieving buffers time out!
04-17 11:43:28.629 6475-6502/net.yrom.screenrecorder I/ScreenRecorder﹕ dequeue output buffer index=3
04-17 11:43:28.629 6475-6502/net.yrom.screenrecorder D/ScreenRecorder﹕ got buffer, info: size=115, presentationTimeUs=9115790746, offset=0
04-17 11:43:28.630 6475-6508/net.yrom.screenrecorder E/MPEG4Writer﹕ timestampUs 126037 < lastTimestampUs 266235 for Video track
04-17 11:43:28.716 6475-6502/net.yrom.screenrecorder D/MPEG4Writer﹕ Video track stopping
04-17 11:43:28.716 6475-6502/net.yrom.screenrecorder D/MPEG4Writer﹕ Video track source stopping
04-17 11:43:28.716 6475-6502/net.yrom.screenrecorder D/MPEG4Writer﹕ Video track source stopped
04-17 11:43:28.716 6475-6502/net.yrom.screenrecorder D/MPEG4Writer﹕ Stopping writer thread
04-17 11:43:28.716 6475-6507/net.yrom.screenrecorder D/MPEG4Writer﹕ 0 chunks are written in the last batch
04-17 11:43:28.717 6475-6502/net.yrom.screenrecorder D/MPEG4Writer﹕ Writer thread stopped
04-17 11:43:28.720 6475-6502/net.yrom.screenrecorder E/AndroidRuntime﹕ FATAL EXCEPTION: ScreenRecorder
Process: net.yrom.screenrecorder, PID: 6475
java.lang.IllegalStateException: Failed to stop the muxer
at android.media.MediaMuxer.nativeStop(Native Method)
at android.media.MediaMuxer.stop(MediaMuxer.java:225)
at net.yrom.screenrecorder.ScreenRecorder.release(ScreenRecorder.java:200)
at net.yrom.screenrecorder.ScreenRecorder.run(ScreenRecorder.java:100)
Hello!
I created a New logo as a Proposal for this awesome project. If you find it good enough for the project and you like it...
The Google drive link contains all the files: https://drive.google.com/drive/folders/1oaeMK67T7c7T-s7wx9KNwbuRWKFrAUX5?usp=sharing
Regards...
录取视频内容时,只能录屏到视频的第一帧
请问关于视频清晰度的问题,是编码导致还是解码导致的?是否使用软编码对视频的清晰度要更好一些
java.lang.IllegalStateException: writeSampleData returned an error
at android.media.MediaMuxer.nativeWriteSampleData(Native Method)
at android.media.MediaMuxer.writeSampleData(MediaMuxer.java:714)
at com.hisense.screenrecord.recorder.ScreenRecorder.writeSampleData(ScreenRecorder.java:446)
at com.hisense.screenrecord.recorder.ScreenRecorder.muxVideo(ScreenRecorder.java:290)
at com.hisense.screenrecord.recorder.ScreenRecorder.access$500(ScreenRecorder.java:59)
at com.hisense.screenrecord.recorder.ScreenRecorder$2.onOutputBufferAvailable(ScreenRecorder.java:541)
at com.hisense.screenrecord.recorder.BaseEncoder$1.onOutputBufferAvailable(BaseEncoder.java:197)
at android.media.MediaCodec$EventHandler.handleCallback(MediaCodec.java:1706)
at android.media.MediaCodec$EventHandler.handleMessage(MediaCodec.java:1653)
at android.os.Handler.dispatchMessage(Handler.java:112)
at android.os.Looper.loop(Looper.java:216)
at android.os.HandlerThread.run(HandlerThread.java:65)
mate20 p20 在内的大多数手机不能录制,报错主要在 prepareEncoder()方法内的mEncoder.configure(format, null, null, MediaCodec.CONFIGURE_FLAG_ENCODE);
主要错误为 illegalArgumentException ,不好意思我没有真机调试,因为有人反映华为手机不兼容所以我用的错误日志收集到的错误只有这些。
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.