Giter VIP home page Giter VIP logo

wslivedemo's Introduction

WSLiveDemo

直播SDK,推流,录制视频,滤镜。

博客教程:http://blog.csdn.net/King1425/article/details/79392158
交流群号:364886309 ,949792060

概述:

现在把我们项目中的直播SDK开源出来,我们是境外直播平台,百万用户,经过半年迭代,SDK已经相当稳定,大家可以放心使用。https://github.com/WangShuo1143368701/WSLiveDemo

之前写过一篇ffmpeg实战教程(十一)手把手教你实现直播功能,不依赖第三方SDK 是用ffmpeg实现的推流,但是在实际移动端直播项目中,推流是不适合用ffmpeg的。

特性:

支持视频录制和推流,推流录制视频可以同时进行
支持推流过程中实时截帧功能
支持推流过程中实时镜像功能,不会打断推流
支持设置关键帧间隔gop
支持动态设置码率,帧率
支持分开设置预览分辨率,编码的分辨率
支持gpu滤镜,并可以通过opengles绘制图像纹理来自定义滤镜。
支持设fbo滤镜组。
支持设置水印
支持前后摄像头快速切换,不会打断推流。
支持后台推流,后台录制视频
美颜滤镜可动态调节磨皮,美白,红润。
兼容GPUImage,一行代码不用修改就可以直接使用GPUImage的滤镜。可参考demo。

关于美颜:

美颜滤镜可动态调节磨皮,美白,红润。你可以调出一个你喜欢的美颜滤镜。

关于截帧,镜像:

推流过程中可以实时截帧。
推流过程中可以实时调节镜像,不会打断推流。可以分别调节预览镜像,推流镜像。

关于性能:

采用相机回调纹理texture,OpenGL渲染后直接把textureID传给编码器的方案,中间没有数据格式转换,没有glReadPixel()函数耗时问题。所以性能较其它方案要好的多。缺点是必须是Android4.3以上。

关于拉流:

https://github.com/WangShuo1143368701/WS_IJK 优化过的IJK播放器,秒开实现,推流端断网回调等。。。

关于使用:

1.所有常用API都在StreamLiveCameraView类中

 <me.lake.librestreaming.ws.StreamLiveCameraView
        android:id="@+id/stream_previewView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

2.初始化推流配置, StreamAVOption类里面有多种参数可配置,如不配置则使用默认值

    /**
     * 设置推流参数
     */
    public void initLiveConfig() {
        mLiveCameraView = (StreamLiveCameraView) findViewById(R.id.stream_previewView);

        //参数配置 start   
        streamAVOption = new StreamAVOption();
        streamAVOption.streamUrl = rtmpUrl;
        //参数配置 end

        mLiveCameraView.init(this, streamAVOption);
        mLiveCameraView.addStreamStateListener(resConnectionListener);
        //设置滤镜组
        LinkedList<BaseHardVideoFilter> files = new LinkedList<>();
        files.add(new GPUImageCompatibleFilter(new GPUImageBeautyFilter()));
        files.add(new GPUImageCompatibleFilter(new GPUImageAddBlendFilter()));
        mLiveCameraView.setHardVideoFilter(new HardVideoGroupFilter(files));
    }

3.开始推流录制 具体参考demo:

          case R.id.btn_startStreaming://开始推流
               if(!liveCameraView.isStreaming()){
                   liveCameraView.startStreaming(rtmpUrl);
               }
               break;
           case R.id.btn_stopStreaming://停止推流
               if(liveCameraView.isStreaming()){
                   liveCameraView.stopStreaming();
               }
               break;
           case R.id.btn_startRecord://开始录制
               if(!liveCameraView.isRecord()){ 
                   liveCameraView.startRecord();
               }
               break;
           case R.id.btn_stopRecord://停止录制
               if(liveCameraView.isRecord()){
                   liveCameraView.stopRecord();                
               }

关于集成:

方法1.https://github.com/WangShuo1143368701/WSLiveDemo下载后,copy出libWSLive库到你的项目中即可。

方法2.

//Add it in your root build.gradle at the end of repositories:
 
 allprojects {
	repositories {
		...
		maven { url 'https://jitpack.io' }
	}
 }

    //Add the dependency

   dependencies {
	         compile 'com.github.WangShuo1143368701:WSLiveDemo:v1.7'
	}

关于学习:

欢迎加入音视频交流群:364886309,949792060

wslivedemo's People

Contributors

wangshuo1143368701 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

wslivedemo's Issues

编译出错

org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:transformNative_libsWithStripDebugSymbolForDebug'.
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:69)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:46)
at org.gradle.api.internal.tasks.execution.PostExecutionAnalysisTaskExecuter.execute(PostExecutionAnalysisTaskExecuter.java:35)
at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:66)
at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:58)
at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:52)
at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:52)
at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:53)
at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43)
at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:203)
at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:185)
at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.processTask(AbstractTaskPlanExecutor.java:66)
at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.run(AbstractTaskPlanExecutor.java:50)
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor.process(DefaultTaskPlanExecutor.java:25)
at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter.execute(DefaultTaskGraphExecuter.java:110)
at org.gradle.execution.SelectedTaskExecutionAction.execute(SelectedTaskExecutionAction.java:37)
at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:37)
at org.gradle.execution.DefaultBuildExecuter.access$000(DefaultBuildExecuter.java:23)
at org.gradle.execution.DefaultBuildExecuter$1.proceed(DefaultBuildExecuter.java:43)
at org.gradle.execution.DryRunBuildExecutionAction.execute(DryRunBuildExecutionAction.java:32)
at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:37)
at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:30)
at org.gradle.initialization.DefaultGradleLauncher$4.run(DefaultGradleLauncher.java:153)
at org.gradle.internal.Factories$1.create(Factories.java:22)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:91)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:53)
at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:150)
at org.gradle.initialization.DefaultGradleLauncher.access$200(DefaultGradleLauncher.java:32)
at org.gradle.initialization.DefaultGradleLauncher$1.create(DefaultGradleLauncher.java:98)
at org.gradle.initialization.DefaultGradleLauncher$1.create(DefaultGradleLauncher.java:92)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:91)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:63)
at org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:92)
at org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.java:83)
at org.gradle.launcher.exec.InProcessBuildActionExecuter$DefaultBuildController.run(InProcessBuildActionExecuter.java:99)
at org.gradle.tooling.internal.provider.runner.BuildModelActionRunner.run(BuildModelActionRunner.java:46)
at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
at org.gradle.tooling.internal.provider.runner.SubscribableBuildActionRunner.run(SubscribableBuildActionRunner.java:58)
at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:48)
at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:30)
at org.gradle.launcher.exec.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:81)
at org.gradle.launcher.exec.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:46)
at org.gradle.launcher.daemon.server.exec.ExecuteBuild.doBuild(ExecuteBuild.java:52)
at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.exec.WatchForDisconnection.execute(WatchForDisconnection.java:37)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.exec.ResetDeprecationLogger.execute(ResetDeprecationLogger.java:26)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.exec.RequestStopIfSingleUsedDaemon.execute(RequestStopIfSingleUsedDaemon.java:34)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:74)
at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:72)
at org.gradle.util.Swapper.swap(Swapper.java:38)
at org.gradle.launcher.daemon.server.exec.ForwardClientInput.execute(ForwardClientInput.java:72)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.health.DaemonHealthTracker.execute(DaemonHealthTracker.java:47)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.exec.LogToClient.doBuild(LogToClient.java:60)
at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment.doBuild(EstablishBuildEnvironment.java:72)
at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.health.HintGCAfterBuild.execute(HintGCAfterBuild.java:41)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy$1.run(StartBuildOrRespondWithBusy.java:50)
at org.gradle.launcher.daemon.server.DaemonStateCoordinator$1.run(DaemonStateCoordinator.java:237)
at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:54)
at org.gradle.internal.concurrent.StoppableExecutorImpl$1.run(StoppableExecutorImpl.java:40)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Caused by: org.gradle.process.internal.ExecException: A problem occurred starting process 'command '/Users/yuanmiao/Library/Android/sdk/ndk-bundle/toolchains/mipsel-linux-android-4.9/prebuilt/darwin-x86_64/bin/mipsel-linux-android-strip''
at org.gradle.process.internal.DefaultExecHandle.setEndStateInfo(DefaultExecHandle.java:197)
at org.gradle.process.internal.DefaultExecHandle.failed(DefaultExecHandle.java:327)
at org.gradle.process.internal.ExecHandleRunner.run(ExecHandleRunner.java:86)
... 5 more
Caused by: net.rubygrapefruit.platform.NativeException: Could not start '/Users/yuanmiao/Library/Android/sdk/ndk-bundle/toolchains/mipsel-linux-android-4.9/prebuilt/darwin-x86_64/bin/mipsel-linux-android-strip'
at net.rubygrapefruit.platform.internal.DefaultProcessLauncher.start(DefaultProcessLauncher.java:27)
at net.rubygrapefruit.platform.internal.WrapperProcessLauncher.start(WrapperProcessLauncher.java:36)
at org.gradle.process.internal.ExecHandleRunner.run(ExecHandleRunner.java:68)
... 5 more
Caused by: java.io.IOException: Cannot run program "/Users/yuanmiao/Library/Android/sdk/ndk-bundle/toolchains/mipsel-linux-android-4.9/prebuilt/darwin-x86_64/bin/mipsel-linux-android-strip" (in directory "/Users/yuanmiao/WSLiveDemo/app"): error=2, No such file or directory
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)
at net.rubygrapefruit.platform.internal.DefaultProcessLauncher.start(DefaultProcessLauncher.java:25)
... 7 more
Caused by: java.io.IOException: error=2, No such file or directory
at java.lang.UNIXProcess.forkAndExec(Native Method)
at java.lang.UNIXProcess.(UNIXProcess.java:247)
at java.lang.ProcessImpl.start(ProcessImpl.java:134)
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)
... 8 more

Android Studio编译报错

os:mac
as:3.2
报错信息:
错误: 无法访问GPUImageFilter
找不到jp.co.cyberagent.android.gpuimage.GPUImageFilter的类文件

摄像头无法打开闪光灯,出现空指针

public boolean toggleFlashLight() {
synchronized (syncOp) {
try {
Camera.Parameters parameters = camera.getParameters();
List flashModes = parameters.getSupportedFlashModes();
String flashMode = parameters.getFlashMode();
if (!Camera.Parameters.FLASH_MODE_TORCH.equals(flashMode)) {
if (flashModes.contains(Camera.Parameters.FLASH_MODE_TORCH)) {
parameters.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);
camera.setParameters(parameters);
return true;
}
} else if (!Camera.Parameters.FLASH_MODE_OFF.equals(flashMode)) {
if (flashModes.contains(Camera.Parameters.FLASH_MODE_OFF)) {
parameters.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);
camera.setParameters(parameters);
return true;
}
}
} catch (Exception e) {
LogTools.d("toggleFlashLight,failed" + e.getMessage());
return false;
}
return false;
}
}

视频方向

我发现一个问题,横着拍的视频,也是竖着的

请问下

作者你好
protected void drain() {
if (mMediaCodec == null) return;
ByteBuffer[] encoderOutputBuffers = mMediaCodec.getOutputBuffers();
mMediaCodec.getOutputBuffers() 这个会报
java.lang.IllegalStateException
at android.media.MediaCodec.getOutputBuffers(MediaCodec.java:2966)
at me.lake.librestreaming.encoder.MediaEncoder.drain(MediaEncoder.java:272)
at me.lake.librestreaming.encoder.MediaEncoder.run(MediaEncoder.java:135)

我是这样操作的 我点击开始推流 然后 在点 开始录像 就报 这样的错误了, 如果 单纯的点击录像是不会报错的 , 还有就是 开始录像 然后保存 录像 应该 isRecord 这个参数 在保存录像的时候点击一下就应该是false 了 为什么 还是要点2下 才是false

开始推流的时候报错

java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/lwp.com.afun-MXBCRu72WouvJuzQKauj-g==/base.apk"],nativeLibraryDirectories=[/data/app/lwp.com.afun-MXBCRu72WouvJuzQKauj-g==/lib/arm64, /data/app/lwp.com.afun-MXBCRu72WouvJuzQKauj-g==/base.apk!/lib/arm64-v8a, /system/lib64]]] couldn't find "librestreaming.so"
at java.lang.Runtime.loadLibrary0(Runtime.java:1012)
at java.lang.System.loadLibrary(System.java:1669)
at me.lake.librestreaming.client.RESClient.(RESClient.java:525)
at me.lake.librestreaming.ws.StreamLiveCameraView.getRESClient(StreamLiveCameraView.java:59)
at me.lake.librestreaming.ws.StreamLiveCameraView.init(StreamLiveCameraView.java:73)

推流中切换网络问题

您好,进行rtmp推流过程中从Wifi网络切换到4G网络。如果做到续传。目前的问题是 切换到4G后 就没有进行推流了

服务器连接异常

连接rtmp服务器时一直重复报这个错误,而且连接不上

“ camxpipeline.cpp:1468 SendShutterNotification() pMessage->timestamp is 0, falling back to system time”

tim 20180522100843

推流和录像都报错

推流Log:
04-02 21:13:27.536 3284-3315/com.wangshuo.wslive.wslivedemo D/dalvikvm: Trying to load lib /data/app-lib/com.wangshuo.wslive.wslivedemo-1/libresrtmp.so 0x94f96480
04-02 21:13:27.536 3284-3315/com.wangshuo.wslive.wslivedemo D/dalvikvm: Added shared lib /data/app-lib/com.wangshuo.wslive.wslivedemo-1/libresrtmp.so 0x94f96480
04-02 21:13:27.536 3284-3315/com.wangshuo.wslive.wslivedemo D/dalvikvm: No JNI_OnLoad found in /data/app-lib/com.wangshuo.wslive.wslivedemo-1/libresrtmp.so 0x94f96480, skipping init
04-02 21:13:27.536 3284-3315/com.wangshuo.wslive.wslivedemo D/RESRTMP: RTMP_OPENING:rtmp://localhost:1935/wstv/home
04-02 21:13:27.536 3284-3315/com.wangshuo.wslive.wslivedemo D/RESRTMP: connect success!
04-02 21:13:27.546 3284-3315/com.wangshuo.wslive.wslivedemo D/RESRTMP: RTMP_Connect=ret
04-02 21:13:27.546 3284-3331/com.wangshuo.wslive.wslivedemo I/OMXClient: Using client-side OMX mux.
04-02 21:13:27.546 3284-3331/com.wangshuo.wslive.wslivedemo I/SoftAVCEncoder: Construct SoftAVCEncoder
04-02 21:13:27.546 3284-3331/com.wangshuo.wslive.wslivedemo E/SoftAVCEncoder: internalSetParameter: StoreMetadataInBuffersParams.nPortIndex not zero!
04-02 21:13:27.546 3284-3331/com.wangshuo.wslive.wslivedemo E/OMXNodeInstance: OMX_SetParameter() failed for StoreMetaDataInBuffers: 0x80001001
04-02 21:13:27.546 3284-3331/com.wangshuo.wslive.wslivedemo E/ACodec: [OMX.google.h264.encoder] storeMetaDataInBuffers (output) failed w/ err -2147483648
04-02 21:13:27.546 3284-3331/com.wangshuo.wslive.wslivedemo A/ACodec: frameworks/av/media/libstagefright/ACodec.cpp:1982 CHECK(ret > 1) failed.
04-02 21:13:27.546 3284-3331/com.wangshuo.wslive.wslivedemo A/libc: Fatal signal 4 (SIGILL) at 0xb77223ef (code=2), thread 3331 (CodecLooper)
04-02 21:13:27.646 157-157/? I/DEBUG: *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
04-02 21:13:27.646 157-157/? I/DEBUG: Build fingerprint: 'Android/samsung/samsung:4.4.2/KOT49H/3.8.017.0504:userdebug/test-keys'
04-02 21:13:27.646 157-157/? I/DEBUG: Revision: '0'
04-02 21:13:27.646 157-157/? I/DEBUG: pid: 3284, tid: 3331, name: CodecLooper >>> com.wangshuo.wslive.wslivedemo <<<
04-02 21:13:27.646 157-157/? I/DEBUG: signal 4 (SIGILL), code 2 (ILL_ILLOPN), fault addr b77223ef
04-02 21:13:27.676 157-157/? I/DEBUG: eax 00000052 ebx b7729e58 ecx 7bc80230 edx 7bc8f3b8
04-02 21:13:27.676 157-157/? I/DEBUG: esi 7bc8f8ac edi b90357d0
04-02 21:13:27.676 157-157/? I/DEBUG: xcs 00000073 xds 0000007b xes 0000007b xfs 0000003b xss 0000007b
04-02 21:13:27.676 157-157/? I/DEBUG: eip b77223ef ebp 7bc8f420 esp 7bc8f410 flags 00210202
04-02 21:13:27.676 157-157/? I/DEBUG: backtrace:
04-02 21:13:27.676 157-157/? I/DEBUG: #00 pc 0000b3ef /system/lib/libcutils.so (__android_log_assert+95)
04-02 21:13:27.676 157-157/? I/DEBUG: #1 pc 0004e99d /system/lib/libstagefright.so
04-02 21:13:27.676 157-157/? I/DEBUG: #2 pc 000562e1 /system/lib/libstagefright.so (android::ACodec::setupAVCEncoderParameters(android::spandroid::AMessage const&)+1505)
04-02 21:13:27.676 157-157/? I/DEBUG: #3 pc 00057365 /system/lib/libstagefright.so (android::ACodec::setupVideoEncoder(char const*, android::spandroid::AMessage const&)+1509)
04-02 21:13:27.676 157-157/? I/DEBUG: #4 pc 00057986 /system/lib/libstagefright.so (android::ACodec::configureCodec(char const*, android::spandroid::AMessage const&)+534)
04-02 21:13:27.676 157-157/? I/DEBUG: #5 pc 0005e3cd /system/lib/libstagefright.so (android::ACodec::LoadedState::onConfigureComponent(android::spandroid::AMessage const&)+125)
04-02 21:13:27.676 157-157/? I/DEBUG: #6 pc 0005ec59 /system/lib/libstagefright.so (android::ACodec::LoadedState::onMessageReceived(android::spandroid::AMessage const&)+121)
04-02 21:13:27.676 157-157/? I/DEBUG: #7 pc 0000a328 /system/lib/libstagefright_foundation.so (android::AHierarchicalStateMachine::onMessageReceived(android::spandroid::AMessage const&)+248)
04-02 21:13:27.676 157-157/? I/DEBUG: #8 pc 0000d1ba /system/lib/libstagefright_foundation.so (android::ALooperRoster::deliverMessage(android::spandroid::AMessage const&)+346)
04-02 21:13:27.676 157-157/? I/DEBUG: #9 pc 0000b551 /system/lib/libstagefright_foundation.so (android::ALooper::LooperThread::threadLoop()+289)
04-02 21:13:27.676 157-157/? I/DEBUG: #10 pc 00017ab0 /system/lib/libutils.so (android::Thread::_threadLoop(void*)+512)
04-02 21:13:27.676 157-157/? I/DEBUG: #11 pc 00017cb6 /system/lib/libutils.so (thread_data_t::trampoline(thread_data_t const*)+246)
04-02 21:13:27.676 157-157/? I/DEBUG: #12 pc 0000bc8c /system/lib/libc.so (__thread_entry+236)
04-02 21:13:27.676 157-157/? I/DEBUG: #13 pc 0003e265 /system/lib/libc.so (__pthread_clone+69)
04-02 21:13:27.676 157-157/? I/DEBUG: #14 pc 00017bbf /system/lib/libutils.so
04-02 21:13:27.676 157-157/? I/DEBUG: #15 pc 000f0d3f [heap]
04-02 21:13:27.676 157-157/? I/DEBUG: #16 pc 000f11cf [heap]
04-02 21:13:27.676 157-157/? I/DEBUG: #17 pc 000fad3f [heap]
04-02 21:13:27.676 157-157/? I/DEBUG: #18 pc 000f083f [heap]
04-02 21:13:27.676 157-157/? I/DEBUG: #19 pc 000c8c5f [heap]
04-02 21:13:27.676 157-157/? I/DEBUG: #20 pc 0002977f [heap]
04-02 21:13:27.676 157-157/? I/DEBUG: #21 pc 000210ef [heap]
04-02 21:13:27.676 157-157/? I/DEBUG: #22 pc 0008753f [heap]
04-02 21:13:27.676 157-157/? I/DEBUG: #23 pc 000133cf [heap]
04-02 21:13:27.676 157-157/? I/DEBUG: #24 pc 000130ef [heap]
04-02 21:13:27.676 157-157/? I/DEBUG: #25 pc 000041af [heap]
04-02 21:13:27.676 157-157/? I/DEBUG: #26 pc 000644df [heap]
04-02 21:13:27.676 157-157/? I/DEBUG: #27 pc 00063c0f [heap]
04-02 21:13:27.676 157-157/? I/DEBUG: #28 pc 000637af [heap]
04-02 21:13:27.676 157-157/? I/DEBUG: #29 pc 00062edf [heap]
04-02 21:13:27.676 157-157/? I/DEBUG: #30 pc 0006281f [heap]
04-02 21:13:27.676 157-157/? I/DEBUG: #31 pc 0002741f [heap]
04-02 21:13:27.676 157-157/? I/DEBUG: stack:
04-02 21:13:27.676 157-157/? I/DEBUG: 7bc8f3d0 00000000
04-02 21:13:27.676 157-157/? I/DEBUG: 7bc8f3d4 00000000
04-02 21:13:27.676 157-157/? I/DEBUG: 7bc8f3d8 b76a6c4b /system/lib/libc.so (__vfprintf+11)
04-02 21:13:27.676 157-157/? I/DEBUG: 7bc8f3dc 7bc8f39c [stack:3331]
04-02 21:13:27.676 157-157/? I/DEBUG: 7bc8f3e0 7bc8f980 [stack:3331]
04-02 21:13:27.676 157-157/? I/DEBUG: 7bc8f3e4 b903aaf4 [heap]
04-02 21:13:27.676 157-157/? I/DEBUG: 7bc8f3e8 7ba7be6c /system/lib/libstagefright_soft_h264enc.so
04-02 21:13:27.676 157-157/? I/DEBUG: 7bc8f3ec b76aaab1 /system/lib/libc.so (vsnprintf+145)
04-02 21:13:27.676 157-157/? I/DEBUG: 7bc8f3f0 7bc8f41c [stack:3331]
04-02 21:13:27.676 157-157/? I/DEBUG: 7bc8f3f4 7ba7b16c /system/lib/libstagefright_soft_h264enc.so
04-02 21:13:27.676 157-157/? I/DEBUG: 7bc8f3f8 7bc8f900 [stack:3331]
04-02 21:13:27.676 157-157/? I/DEBUG: 7bc8f3fc b7729e58 /system/lib/libcutils.so
04-02 21:13:27.676 157-157/? I/DEBUG: 7bc8f400 7bc8f8ac [stack:3331]
04-02 21:13:27.676 157-157/? I/DEBUG: 7bc8f404 b90357d0 [heap]
04-02 21:13:27.676 157-157/? I/DEBUG: 7bc8f408 7bc8f420 [stack:3331]
04-02 21:13:27.676 157-157/? I/DEBUG: 7bc8f40c b77223ef /system/lib/libcutils.so (__android_log_assert+95)
04-02 21:13:27.676 157-157/? I/DEBUG: #00 7bc8f410 00000007
04-02 21:13:27.676 157-157/? I/DEBUG: 7bc8f414 83fcfee3 /system/lib/libstagefright.so
04-02 21:13:27.676 157-157/? I/DEBUG: 7bc8f418 7bc8f420 [stack:3331]
04-02 21:13:27.676 157-157/? I/DEBUG: 7bc8f41c 7bc8f84c [stack:3331]
04-02 21:13:27.676 157-157/? I/DEBUG: 7bc8f420 6d617266
04-02 21:13:27.676 157-157/? I/DEBUG: 7bc8f424 726f7765
04-02 21:13:27.676 157-157/? I/DEBUG: 7bc8f428 612f736b
04-02 21:13:27.676 157-157/? I/DEBUG: 7bc8f42c 656d2f76
04-02 21:13:27.676 157-157/? I/DEBUG: 7bc8f430 2f616964
04-02 21:13:27.676 157-157/? I/DEBUG: 7bc8f434 7362696c
04-02 21:13:27.676 157-157/? I/DEBUG: 7bc8f438 65676174
04-02 21:13:27.676 157-157/? I/DEBUG: 7bc8f43c 67697266
04-02 21:13:27.676 157-157/? I/DEBUG: 7bc8f440 412f7468
04-02 21:13:27.676 157-157/? I/DEBUG: 7bc8f444 65646f43
04-02 21:13:27.676 157-157/? I/DEBUG: 7bc8f448 70632e63
04-02 21:13:27.676 157-157/? I/DEBUG: 7bc8f44c 39313a70
04-02 21:13:27.676 157-157/? I/DEBUG: ........ ........
04-02 21:13:27.676 157-157/? I/DEBUG: #1 7bc8f840 83fcfeea /system/lib/libstagefright.so
04-02 21:13:27.676 157-157/? I/DEBUG: 7bc8f844 83fcfee3 /system/lib/libstagefright.so
04-02 21:13:27.676 157-157/? I/DEBUG: 7bc8f848 83fcfee0 /system/lib/libstagefright.so
04-02 21:13:27.676 157-157/? I/DEBUG: 7bc8f84c 83fcb500 /system/lib/libstagefright.so
04-02 21:13:27.676 157-157/? I/DEBUG: 7bc8f850 7bc8f8ac [stack:3331]
04-02 21:13:27.676 157-157/? I/DEBUG: 7bc8f854 83ec0968 /system/lib/libstagefright.so
04-02 21:13:27.676 157-157/? I/DEBUG: 7bc8f858 84028960 /system/lib/libstagefright.so
04-02 21:13:27.676 157-157/? I/DEBUG: 7bc8f85c 83ec82e2 /system/lib/libstagefright.so
04-02 21:13:27.676 157-157/? I/DEBUG: #2 7bc8f860 b8f56b40 [heap]
04-02 21:13:27.676 157-157/? I/DEBUG: 7bc8f864 00000001
04-02 21:13:27.676 157-157/? I/DEBUG: 7bc8f868 0600000f
04-02 21:13:27.676 157-157/? I/DEBUG: 7bc8f86c 7bc8f8ac [stack:3331]
04-02 21:13:27.676 157-157/? I/DEBUG: 7bc8f870 00000018
04-02 21:13:27.676 157-157/? I/DEBUG: 7bc8f874 02000001
04-02 21:13:27.676 157-157/? I/DEBUG: 7bc8f878 7bc8f9a0 [stack:3331]
04-02 21:13:27.676 157-157/? I/DEBUG: 7bc8f87c 83e70d94 /system/lib/libstagefright_omx.so
04-02 21:13:27.676 157-157/? I/DEBUG: 7bc8f880 00000000
04-02 21:13:27.676 157-157/? I/DEBUG: 7bc8f884 00000002
04-02 21:13:27.676 157-157/? I/DEBUG: 7bc8f888 00000001
04-02 21:13:27.676 157-157/? I/DEBUG: 7bc8f88c 7bc8f8c4 [stack:3331]
04-02 21:13:27.676 157-157/? I/DEBUG: 7bc8f890 b903aad4 [heap]
04-02 21:13:27.676 157-157/? I/DEBUG: 7bc8f894 00096000
04-02 21:13:27.676 157-157/? I/DEBUG: 7bc8f898 00000002
04-02 21:13:27.676 157-157/? I/DEBUG: 7bc8f89c 00000000
04-02 21:13:27.676 157-157/? I/DEBUG: ........ ........
04-02 21:13:27.686 157-157/? I/DEBUG: memory map around fault addr b77223ef:
04-02 21:13:27.686 157-157/? I/DEBUG: b7716000-b7717000 rw- /system/lib/liblog.so
04-02 21:13:27.686 157-157/? I/DEBUG: b7717000-b7729000 r-x /system/lib/libcutils.so
04-02 21:13:27.686 157-157/? I/DEBUG: b7729000-b772a000 r-- /system/lib/libcutils.so
04-02 21:13:27.706 163-163/? W/CameraService: Disconnecting camera client 0xb7d63e90 since the binder for it died (this pid 163)

                                          --------- beginning of /dev/log/system

04-02 21:13:27.706 471-492/system_process I/BootReceiver: Copying /data/tombstones/tombstone_02 to DropBox (SYSTEM_TOMBSTONE)
04-02 21:13:27.716 471-505/system_process W/InputDispatcher: channel '4ab93d7c com.wangshuo.wslive.wslivedemo/com.wangshuo.wslive.wslivedemo.LiveActivity (server)' ~ Consumer closed input channel or an error occurred. events=0x9
04-02 21:13:27.716 471-505/system_process E/InputDispatcher: channel '4ab93d7c com.wangshuo.wslive.wslivedemo/com.wangshuo.wslive.wslivedemo.LiveActivity (server)' ~ Channel is unrecoverably broken and will be disposed!
04-02 21:13:27.726 471-492/system_process D/dalvikvm: GC_FOR_ALLOC freed 1081K, 20% free 8750K/10808K, paused 21ms, total 22ms
04-02 21:13:27.726 471-1573/system_process W/InputDispatcher: Attempted to unregister already unregistered input channel '4ab93d7c com.wangshuo.wslive.wslivedemo/com.wangshuo.wslive.wslivedemo.LiveActivity (server)'
04-02 21:13:27.726 471-512/system_process W/NetworkManagementSocketTagger: setKernelCountSet(10039, 0) failed with errno -13
04-02 21:13:27.726 471-1573/system_process I/WindowState: WIN DEATH: Window{4ab93d7c u0 com.wangshuo.wslive.wslivedemo/com.wangshuo.wslive.wslivedemo.LiveActivity}
04-02 21:13:27.726 471-660/system_process I/ActivityManager: Process com.wangshuo.wslive.wslivedemo (pid 3284) has died.
04-02 21:13:27.726 471-660/system_process W/ActivityManager: Force removing ActivityRecord{4a9893e8 u0 com.wangshuo.wslive.wslivedemo/.LiveActivity t22}: app died, no saved state
04-02 21:13:27.736 648-648/com.vphone.launcher D/dalvikvm: GC_FOR_ALLOC freed 4036K, 30% free 15070K/21372K, paused 5ms, total 5ms
04-02 21:13:27.746 163-3316/? E/EmulatedCamera_Preview: onNextFrameAvailable: Unable to dequeue preview window buffer: 32 -> Broken pipe
04-02 21:13:27.746 163-163/? D/EmulatedCamera_HostClient: queryStop cmd:4, datasize:0.
04-02 21:13:27.746 163-163/? D/EmulatedCamera_HostClient: queryDisconnect cmd:5, datasize:0.
04-02 21:13:27.746 161-161/? D/Zygote: Process 3284 terminated by signal (4)
04-02 21:13:27.756 471-485/system_process W/WindowManager: updateFocusedWindowLocked, focusedAppToken is null.
04-02 21:13:27.786 163-163/? W/CameraClient: native_window_api_disconnect failed: Broken pipe (-32)
04-02 21:13:27.786 163-163/? I/CameraClient: Destroying camera 1
04-02 21:13:27.836 648-648/com.vphone.launcher W/EGL_emulation: eglSurfaceAttrib not implemented

录像报错:
04-02 21:14:24.306 3354-3354/com.wangshuo.wslive.wslivedemo D/MediaMuxerWrapper: path=/storage/emulated/0/Movies/WSLive
04-02 21:14:24.306 1197-3397/com.estrongs.android.pop E/Cataloger: syncFile:/storage/emulated/0/Movies/WSLive/2018-04-02-21-14-24.mp4
04-02 21:14:24.306 3354-3354/com.wangshuo.wslive.wslivedemo I/OMXClient: Using client-side OMX mux.
04-02 21:14:24.306 3354-3354/com.wangshuo.wslive.wslivedemo I/SoftAVCEncoder: Construct SoftAVCEncoder
04-02 21:14:24.306 3354-3354/com.wangshuo.wslive.wslivedemo I/MediaVideoEncoder: bitrate= 2.99[Mbps]
04-02 21:14:24.316 3354-3405/com.wangshuo.wslive.wslivedemo I/OMXClient: Using client-side OMX mux.
04-02 21:14:24.316 3354-3405/com.wangshuo.wslive.wslivedemo I/SoftAVCEncoder: Construct SoftAVCEncoder
04-02 21:14:24.316 3354-3405/com.wangshuo.wslive.wslivedemo E/SoftAVCEncoder: internalSetParameter: StoreMetadataInBuffersParams.nPortIndex not zero!
04-02 21:14:24.316 3354-3405/com.wangshuo.wslive.wslivedemo E/OMXNodeInstance: OMX_SetParameter() failed for StoreMetaDataInBuffers: 0x80001001
04-02 21:14:24.316 3354-3405/com.wangshuo.wslive.wslivedemo E/ACodec: [OMX.google.h264.encoder] storeMetaDataInBuffers (output) failed w/ err -2147483648
04-02 21:14:24.316 3354-3405/com.wangshuo.wslive.wslivedemo I/ACodec: setupVideoEncoder succeeded
04-02 21:14:24.316 3354-3405/com.wangshuo.wslive.wslivedemo E/OMXNodeInstance: createInputSurface requires COLOR_FormatSurface (AndroidOpaque) color format
04-02 21:14:24.316 3354-3405/com.wangshuo.wslive.wslivedemo E/ACodec: [OMX.google.h264.encoder] onCreateInputSurface returning error -38
04-02 21:14:24.316 3354-3354/com.wangshuo.wslive.wslivedemo W/MediaCodec: createInputSurface failed, err=-38
04-02 21:14:24.316 3354-3354/com.wangshuo.wslive.wslivedemo D/AndroidRuntime: Shutting down VM
04-02 21:14:24.316 3354-3354/com.wangshuo.wslive.wslivedemo W/dalvikvm: threadid=1: thread exiting with uncaught exception (group=0x94cbcb20)

                                                                    --------- beginning of /dev/log/system

04-02 21:14:24.316 3354-3354/com.wangshuo.wslive.wslivedemo E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.wangshuo.wslive.wslivedemo, PID: 3354
java.lang.IllegalStateException
at android.media.MediaCodec.createInputSurface(Native Method)
at me.lake.librestreaming.encoder.MediaVideoEncoder.prepare(MediaVideoEncoder.java:94)
at me.lake.librestreaming.encoder.MediaMuxerWrapper.prepare(MediaMuxerWrapper.java:102)
at me.lake.librestreaming.ws.StreamLiveCameraView.startRecord(StreamLiveCameraView.java:161)
at com.wangshuo.wslive.wslivedemo.LiveUI.onClick(LiveUI.java:97)
at android.view.View.performClick(View.java:4438)
at android.view.View$PerformClick.run(View.java:18422)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5019)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
at dalvik.system.NativeStart.main(Native Method)
04-02 21:14:24.316 471-1574/system_process W/ActivityManager: Force finishing activity com.wangshuo.wslive.wslivedemo/.LiveActivity
04-02 21:14:24.326 471-485/system_process W/WindowManager: updateFocusedWindowLocked, focusedAppToken is null.
04-02 21:14:24.826 471-485/system_process W/ActivityManager: Activity pause timeout for ActivityRecord{4a9d81d0 u0 com.wangshuo.wslive.wslivedemo/.LiveActivity t23 f}
04-02 21:14:24.856 648-648/com.vphone.launcher W/EGL_emulation: eglSurfaceAttrib not implemented
04-02 21:14:25.316 471-512/system_process W/NetworkManagementSocketTagger: setKernelCountSet(10039, 0) failed with errno -13
04-02 21:14:29.336 977-3409/com.google.android.gms W/PlatformStatsUtil: Could not retrieve Usage & Diagnostics setting. Giving up.
04-02 21:14:29.506 3354-3378/com.wangshuo.wslive.wslivedemo E/BufferQueue: [unnamed-3354-0] dequeueBuffer: time out and will free all buffer!

屏幕旋转时,如何更改录制方向?

大佬,能做到屏幕旋转时切换录制方向(在不销毁Activity或者销毁对象重新推流的情况下)?

 android:configChanges="orientation|keyboardHidden|navigation|screenSize"

NullPointerException

FATAL EXCEPTION: main
Process: com.wangshuo.wslive.wslivedemo, PID: 17274
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.wangshuo.wslive.wslivedemo/com.wangshuo.wslive.wslivedemo.LiveActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void me.lake.librestreaming.core.RESHardVideoCore.setVideoFilter(me.lake.librestreaming.filter.hardvideofilter.BaseHardVideoFilter)' on a null object reference
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2439)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2499)
at android.app.ActivityThread.-wrap11(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1363)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5441)
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 'void me.lake.librestreaming.core.RESHardVideoCore.setVideoFilter(me.lake.librestreaming.filter.hardvideofilter.BaseHardVideoFilter)' on a null object reference
at me.lake.librestreaming.client.RESVideoClient.setHardVideoFilter(RESVideoClient.java:395)
at me.lake.librestreaming.client.RESClient.setHardVideoFilter(RESClient.java:314)
at me.lake.librestreaming.ws.StreamLiveCameraView.setHardVideoFilter(StreamLiveCameraView.java:214)
at com.wangshuo.wslive.wslivedemo.LiveActivity.initLiveConfig(LiveActivity.java:51)
at com.wangshuo.wslive.wslivedemo.LiveActivity.onCreate(LiveActivity.java:31)
at android.app.Activity.performCreate(Activity.java:6251)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1108)

报错

java.lang.RuntimeException: Fail to connect to camera service

NullPointerException

正常录制视频时候报的错,偶现,但是频率很高,以下是bugly上面抓到的崩溃日志:
java.lang.NullPointerException
Attempt to invoke virtual method 'void me.lake.librestreaming.b.d.a(int, int)' on a null object reference
1 me.lake.librestreaming.core.h$a.b(RESHardVideoCore.java:843)
2 me.lake.librestreaming.core.h$a.handleMessage(RESHardVideoCore.java:380)
3 android.os.Handler.dispatchMessage(Handler.java:111)
4 android.os.Looper.loop(Looper.java:207)
5 android.os.HandlerThread.run(HandlerThread.java:61)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.