一个Android工程。负责将采集到的音视频数据推送到流媒体服务器。目前音频使用MediaCodec编码为AAC,视频使用MediaCodec编码为AVC,使用RTMP协议推送。 服务端可以使用SRS。播放可以使用VLC播放器进行播放。
目前适配的视频原始格式为:YUV420P。
暂不维护了
一个实现直播的解决方案,视频采用H264编码、音频采用ACC编码、传输采用Rtmp协议
Home Page: http://blog.csdn.net/a992036795/article/details/64460049
我用的是推流端的示例代码,再第二次点击开始按钮的时候接收端就接收不到推流了,能麻烦看下是什么问题吗,谢谢。
就是调用了stop()方法之后再调用start()方法就推流不上去了,程序没有报错。
我可以实时的去推送吗?就是边拍摄边推送!
RTMP_Connect error
这个支持外网的服务器吗?
直接用的是AndroidPublisher的代码,log提示初始化音频编码器失败。求大神帮助
楼主AndroidPublisher里面的那个rtmp/lib/armeabi/librtmp.so这个so库是怎么得到的呢?是别人写好的,还是自己写的?有源码文件吗?能编译出来arm64-v8a,x86_64这样的适配so库吗
是否可以提供一下cmake的脚本呢
我的报错信息如下,PathClassLoader[DexPathList[[zip file "/data/local/tmp/scrcpy-server.jar"],nativeLibraryDirectories=[/vendor/lib, /system/lib]]] couldn't find "libpublish.so"
请问大神,是不是需要我自己编译so库导入,但是我编译librtmp库后,还是报错。我的运行方式是:IDEA+MUMU模拟器+android,然后使用app_process命令来执行jar包的
20:05 Failed to finalize session : INSTALL_FAILED_NO_MATCHING_ABIS: Failed to extract native libraries, res=-113
20:05 Session 'sample': Error Installing APKs
多次编译也是这样怎么解决?
as version: 3.2
ndk version :r10e
报错信息:
Cause: executing external native build for cmake /Users/wangjunjie/AndroidStudioProjects/LiveStream/AndroidPublisher/rtmplive/src/main/cpp/CMakeLists.txt
rtmp推流的两个so库只有默认的32位,64位的好像没有。因为项目里已经有其他64位so库了,所以app默认会加载64位的,这个32位的load不了
下面是荣耀8报的异常:
06-17 16:30:53.717 613-613/? I/CameraService: CameraService::connect E (pid 10667 "com.blueberry.sample", id 0)
06-17 16:30:53.717 613-613/? I/CameraService: CameraService::connect call (PID -1 "com.blueberry.sample", camera ID 0) for HAL version default and Camera API version 1
06-17 16:30:53.718 613-613/? W/ServiceManager: Permission failure: android.permission.CAMERA from uid=10208 pid=10667
06-17 16:30:53.718 613-613/? E/CameraService: Permission Denial: can't use the camera pid=10667, uid=10208
06-17 16:30:53.718 10667-10667/com.blueberry.sample W/CameraBase: An error occurred while connecting to camera 0: Service not available
06-17 16:30:53.718 10667-10667/com.blueberry.sample E/Camera: Camera new cameraInitNormal:-13
06-17 16:30:53.718 10667-10667/com.blueberry.sample W/System.err: java.lang.RuntimeException: Fail to connect to camera service
06-17 16:30:53.718 10667-10667/com.blueberry.sample W/System.err: at android.hardware.Camera.(Camera.java:571)
06-17 16:30:53.719 10667-10667/com.blueberry.sample W/System.err: at android.hardware.Camera.open(Camera.java:430)
06-17 16:30:53.719 10667-10667/com.blueberry.sample W/System.err: at com.blueberry.media.VideoGatherer.openCamera(VideoGatherer.java:286)
06-17 16:30:53.719 10667-10667/com.blueberry.sample W/System.err: at com.blueberry.media.VideoGatherer.initCamera(VideoGatherer.java:89)
06-17 16:30:53.719 10667-10667/com.blueberry.sample W/System.err: at com.blueberry.media.MediaPublisher.initVideoGatherer(MediaPublisher.java:101)
06-17 16:30:53.719 10667-10667/com.blueberry.sample W/System.err: at com.blueberry.sample.MainActivity.onResume(MainActivity.java:84)
06-17 16:30:53.719 10667-10667/com.blueberry.sample W/System.err: at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1279)
06-17 16:30:53.719 10667-10667/com.blueberry.sample W/System.err: at android.app.Activity.performResume(Activity.java:7017)
06-17 16:30:53.719 10667-10667/com.blueberry.sample W/System.err: at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3561)
06-17 16:30:53.719 10667-10667/com.blueberry.sample W/System.err: at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3626)
06-17 16:30:53.719 10667-10667/com.blueberry.sample W/System.err: at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2876)
06-17 16:30:53.719 10667-10667/com.blueberry.sample W/System.err: at android.app.ActivityThread.-wrap12(ActivityThread.java)
06-17 16:30:53.719 10667-10667/com.blueberry.sample W/System.err: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1567)
06-17 16:30:53.719 10667-10667/com.blueberry.sample W/System.err: at android.os.Handler.dispatchMessage(Handler.java:105)
06-17 16:30:53.719 10667-10667/com.blueberry.sample W/System.err: at android.os.Looper.loop(Looper.java:156)
06-17 16:30:53.719 10667-10667/com.blueberry.sample W/System.err: at android.app.ActivityThread.main(ActivityThread.java:6531)
06-17 16:30:53.719 10667-10667/com.blueberry.sample W/System.err: at java.lang.reflect.Method.invoke(Native Method)
06-17 16:30:53.719 10667-10667/com.blueberry.sample W/System.err: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:941)
06-17 16:30:53.719 10667-10667/com.blueberry.sample W/System.err: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:831)
--------- beginning of crash
06-17 16:30:53.719 10667-10667/com.blueberry.sample E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.blueberry.sample, PID: 10667
java.lang.RuntimeException: Unable to resume activity {com.blueberry.sample/com.blueberry.sample.MainActivity}: java.lang.RuntimeException: 打开摄像头失败
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3586)
at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3626)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2876)
at android.app.ActivityThread.-wrap12(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1567)
at android.os.Handler.dispatchMessage(Handler.java:105)
at android.os.Looper.loop(Looper.java:156)
at android.app.ActivityThread.main(ActivityThread.java:6531)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:941)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:831)
Caused by: java.lang.RuntimeException: 打开摄像头失败
at com.blueberry.media.VideoGatherer.openCamera(VideoGatherer.java:289)
at com.blueberry.media.VideoGatherer.initCamera(VideoGatherer.java:89)
at com.blueberry.media.MediaPublisher.initVideoGatherer(MediaPublisher.java:101)
at com.blueberry.sample.MainActivity.onResume(MainActivity.java:84)
at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1279)
at android.app.Activity.performResume(Activity.java:7017)
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3561)
at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3626)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2876)
at android.app.ActivityThread.-wrap12(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1567)
at android.os.Handler.dispatchMessage(Handler.java:105)
at android.os.Looper.loop(Looper.java:156)
at android.app.ActivityThread.main(ActivityThread.java:6531)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:941)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:831)
Caused by: java.lang.RuntimeException: Fail to connect to camera service
at android.hardware.Camera.(Camera.java:571)
at android.hardware.Camera.open(Camera.java:430)
at com.blueberry.media.VideoGatherer.openCamera(VideoGatherer.java:286)
at com.blueberry.media.VideoGatherer.initCamera(VideoGatherer.java:89)
at com.blueberry.media.MediaPublisher.initVideoGatherer(MediaPublisher.java:101)
at com.blueberry.sample.MainActivity.onResume(MainActivity.java:84)
at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1279)
at android.app.Activity.performResume(Activity.java:7017)
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3561)
at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3626)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2876)
at android.app.ActivityThread.-wrap12(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1567)
at android.os.Handler.dispatchMessage(Handler.java:105)
at android.os.Looper.loop(Looper.java:156)
at android.app.ActivityThread.main(ActivityThread.java:6531)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:941)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:831)
转完后,会出现偏色的绿影,卡在这半个月了,该怎么转啊,我看只有i420的适配,该怎么修改啊,希望大神给指点一下
Build command failed.
Error while executing process C:\Users\shunyi\AppData\Local\Android\Sdk\cmake\3.10.2.4988404\bin\cmake.exe with arguments {-HE:\Projects\LiveStream\AndroidPublisher\rtmplive\src\main\cpp -BE:\Projects\LiveStream\AndroidPublisher\rtmplive.externalNativeBuild\cmake\release\armeabi -GAndroid Gradle - Ninja -DANDROID_ABI=armeabi -DANDROID_NDK=C:\Users\shunyi\AppData\Local\Android\Sdk\ndk-bundle -DCMAKE_LIBRARY_OUTPUT_DIRECTORY=E:\Projects\LiveStream\AndroidPublisher\rtmplive\build\intermediates\cmake\release\obj\armeabi -DCMAKE_BUILD_TYPE=Release -DCMAKE_MAKE_PROGRAM=C:\Users\shunyi\AppData\Local\Android\Sdk\cmake\3.10.2.4988404\bin\ninja.exe -DCMAKE_TOOLCHAIN_FILE=C:\Users\shunyi\AppData\Local\Android\Sdk\ndk-bundle\build\cmake\android.toolchain.cmake -DANDROID_PLATFORM=android-16 -DCMAKE_CXX_FLAGS=-frtti -fexceptions}
CMake Error: Could not create named generator Android Gradle - Ninja
Generators
Visual Studio 15 2017 [arch] = Generates Visual Studio 2017 project files.
Optional [arch] can be "Win64" or "ARM".
Visual Studio 14 2015 [arch] = Generates Visual Studio 2015 project files.
Visual Studio 12 2013 [arch] = Generates Visual Studio 2013 project files.
Visual Studio 11 2012 [arch] = Generates Visual Studio 2012 project files.
Visual Studio 10 2010 [arch] = Generates Visual Studio 2010 project files.
Optional [arch] can be "Win64" or "IA64".
Visual Studio 9 2008 [arch] = Generates Visual Studio 2008 project files.
Visual Studio 8 2005 [arch] = Deprecated. Generates Visual Studio 2005
project files. Optional [arch] can be
"Win64".
Borland Makefiles = Generates Borland makefiles.
NMake Makefiles = Generates NMake makefiles.
NMake Makefiles JOM = Generates JOM makefiles.
Green Hills MULTI = Generates Green Hills MULTI files
(experimental, work-in-progress).
MSYS Makefiles = Generates MSYS makefiles.
MinGW Makefiles = Generates a make file for use with
mingw32-make.
Unix Makefiles = Generates standard UNIX makefiles.
Ninja = Generates build.ninja files.
Watcom WMake = Generates Watcom WMake makefiles.
CodeBlocks - MinGW Makefiles = Generates CodeBlocks project files.
CodeBlocks - NMake Makefiles = Generates CodeBlocks project files.
CodeBlocks - NMake Makefiles JOM
= Generates CodeBlocks project files.
CodeBlocks - Ninja = Generates CodeBlocks project files.
CodeBlocks - Unix Makefiles = Generates CodeBlocks project files.
CodeLite - MinGW Makefiles = Generates CodeLite project files.
CodeLite - NMake Makefiles = Generates CodeLite project files.
CodeLite - Ninja = Generates CodeLite project files.
CodeLite - Unix Makefiles = Generates CodeLite project files.
Sublime Text 2 - MinGW Makefiles
= Generates Sublime Text 2 project files.
Sublime Text 2 - NMake Makefiles
Sublime Text 2 - Ninja = Generates Sublime Text 2 project files.
Sublime Text 2 - Unix Makefiles
Kate - MinGW Makefiles = Generates Kate project files.
Kate - NMake Makefiles = Generates Kate project files.
Kate - Ninja = Generates Kate project files.
Kate - Unix Makefiles = Generates Kate project files.
Eclipse CDT4 - NMake Makefiles
= Generates Eclipse CDT 4.0 project files.
Eclipse CDT4 - MinGW Makefiles
Eclipse CDT4 - Ninja = Generates Eclipse CDT 4.0 project files.
Eclipse CDT4 - Unix Makefiles= Generates Eclipse CDT 4.0 project files.
Build command failed.
Error while executing process C:\Users\shunyi\AppData\Local\Android\Sdk\cmake\3.10.2.4988404\bin\cmake.exe with arguments {-HE:\Projects\LiveStream\AndroidPublisher\rtmplive\src\main\cpp -BE:\Projects\LiveStream\AndroidPublisher\rtmplive.externalNativeBuild\cmake\debug\armeabi -GAndroid Gradle - Ninja -DANDROID_ABI=armeabi -DANDROID_NDK=C:\Users\shunyi\AppData\Local\Android\Sdk\ndk-bundle -DCMAKE_LIBRARY_OUTPUT_DIRECTORY=E:\Projects\LiveStream\AndroidPublisher\rtmplive\build\intermediates\cmake\debug\obj\armeabi -DCMAKE_BUILD_TYPE=Debug -DCMAKE_MAKE_PROGRAM=C:\Users\shunyi\AppData\Local\Android\Sdk\cmake\3.10.2.4988404\bin\ninja.exe -DCMAKE_TOOLCHAIN_FILE=C:\Users\shunyi\AppData\Local\Android\Sdk\ndk-bundle\build\cmake\android.toolchain.cmake -DANDROID_PLATFORM=android-16 -DCMAKE_CXX_FLAGS=-frtti -fexceptions}
CMake Error: Could not create named generator Android Gradle - Ninja
Generators
Visual Studio 15 2017 [arch] = Generates Visual Studio 2017 project files.
Optional [arch] can be "Win64" or "ARM".
Visual Studio 14 2015 [arch] = Generates Visual Studio 2015 project files.
Visual Studio 12 2013 [arch] = Generates Visual Studio 2013 project files.
Visual Studio 11 2012 [arch] = Generates Visual Studio 2012 project files.
Visual Studio 10 2010 [arch] = Generates Visual Studio 2010 project files.
Optional [arch] can be "Win64" or "IA64".
Visual Studio 9 2008 [arch] = Generates Visual Studio 2008 project files.
Visual Studio 8 2005 [arch] = Deprecated. Generates Visual Studio 2005
project files. Optional [arch] can be
"Win64".
Borland Makefiles = Generates Borland makefiles.
NMake Makefiles = Generates NMake makefiles.
NMake Makefiles JOM = Generates JOM makefiles.
Green Hills MULTI = Generates Green Hills MULTI files
(experimental, work-in-progress).
MSYS Makefiles = Generates MSYS makefiles.
MinGW Makefiles = Generates a make file for use with
mingw32-make.
Unix Makefiles = Generates standard UNIX makefiles.
Ninja = Generates build.ninja files.
Watcom WMake = Generates Watcom WMake makefiles.
CodeBlocks - MinGW Makefiles = Generates CodeBlocks project files.
CodeBlocks - NMake Makefiles = Generates CodeBlocks project files.
CodeBlocks - NMake Makefiles JOM
= Generates CodeBlocks project files.
CodeBlocks - Ninja = Generates CodeBlocks project files.
CodeBlocks - Unix Makefiles = Generates CodeBlocks project files.
CodeLite - MinGW Makefiles = Generates CodeLite project files.
CodeLite - NMake Makefiles = Generates CodeLite project files.
CodeLite - Ninja = Generates CodeLite project files.
CodeLite - Unix Makefiles = Generates CodeLite project files.
Sublime Text 2 - MinGW Makefiles
= Generates Sublime Text 2 project files.
Sublime Text 2 - NMake Makefiles
Sublime Text 2 - Ninja = Generates Sublime Text 2 project files.
Sublime Text 2 - Unix Makefiles
Kate - MinGW Makefiles = Generates Kate project files.
Kate - NMake Makefiles = Generates Kate project files.
Kate - Ninja = Generates Kate project files.
Kate - Unix Makefiles = Generates Kate project files.
Eclipse CDT4 - NMake Makefiles
= Generates Eclipse CDT 4.0 project files.
Eclipse CDT4 - MinGW Makefiles
Eclipse CDT4 - Ninja = Generates Eclipse CDT 4.0 project files.
Eclipse CDT4 - Unix Makefiles= Generates Eclipse CDT 4.0 project files.
在Linux上面搭建了nginx多媒体服务器,在Linux上用FFmpeg推流测试成功了,但是用这个demo不行
10-20 18:54:45.287 1960-2564/com.blueberry.player E/IJKMEDIA: Cannot open connection tcp://192.168.155.1:1935
10-20 18:54:45.287 1960-2564/com.blueberry.player E/IJKMEDIA: rtmp://192.168.155.1:1935/live/test: Connection timed out
10-20 18:54:45.287 1960-2564/com.blueberry.player I/IJKMEDIA: SDL_JNI_DetachThreadEnv: [2564]
10-20 18:54:45.287 1960-2562/com.blueberry.player D/IJKMEDIA: FFP_MSG_ERROR: 0
10-20 18:54:45.297 1960-1960/com.blueberry.player E/tv.danmaku.ijk.media.player.IjkMediaPlayer: Error (-10000,0)
10-20 18:54:45.297 1960-1960/com.blueberry.player D/IjkVideoView: Error: -10000,0
10-20 18:54:45.307 1960-1960/com.blueberry.player I/AppCompatDelegate: The Activity's LayoutInflater already has a Factory installed so we can not install AppCompat's
具体错误如下
FATAL EXCEPTION: Thread-5
Process: ai.cloudbrain.windmill, PID: 17109
java.lang.IllegalStateException
at android.media.MediaCodec.native_dequeueInputBuffer(Native Method)
at android.media.MediaCodec.dequeueInputBuffer(MediaCodec.java:2507)
at com.blueberry.media.MediaEncoder.encodeAudioData(MediaEncoder.java:290)
at com.blueberry.media.MediaEncoder.access$800(MediaEncoder.java:28)
at com.blueberry.media.MediaEncoder$2.run(MediaEncoder.java:180)
我使用下面配置 ,不可以推流到服务器(youtube直播)
compile project(':rtmplive')
使用下面配置,可以推流到服务器(youtube直播)
compile 'com.blueberry:rtmplive:0.1.0'
mMediaPublisher = MediaPublisher
.newInstance(new Config.Builder()
.setFps(30) // fps
.setMaxWidth(720) //视频的最大宽度
.setMinWidth(320) //视频的最小宽度
.setUrl("rtmp://192.168.155.1:1935/live/test")//推送的url
.build());
这里的MaxWidth和MinWidth应该以什么原则来设置?
(我尝试调了比较大的数值,直接崩溃了)
另外高度是根据宽度自动设置了么?
你好,你开源的c++的代码是不是和提供的sdk里的不一样,gradle配置sdk里可以正常推流到服务器,配置为代码编译,不用jcenter就不能推流到服务器。能开源更新下sdk里c++代码吗
大神 可以不经过服务器 ,两个手机之间推和拉流吗?
直接把下载的源码编译运行
小米2S报错如下
java.lang.RuntimeException: Unable to resume activity {com.blueberry.sample/com.blueberry.sample.MainActivity}: java.lang.RuntimeException: setParameters failed
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2966)
at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2997)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2380)
at android.app.ActivityThread.access$900(ActivityThread.java:147)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1283)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5254)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:910)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:705)
Caused by: java.lang.RuntimeException: setParameters failed
at android.hardware.Camera.native_setParameters(Native Method)
at android.hardware.Camera.setParameters(Camera.java:1979)
at com.blueberry.media.VideoGatherer.setCameraParameters(VideoGatherer.java:247)
at com.blueberry.media.VideoGatherer.initCamera(VideoGatherer.java:90)
at com.blueberry.media.MediaPublisher.initVideoGatherer(MediaPublisher.java:101)
at com.blueberry.sample.MainActivity.onResume(MainActivity.java:84)
at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1241)
at android.app.Activity.performResume(Activity.java:6025)
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2955)
... 11 more
华为P8图像推送出去一帧图像,但是声音能正常推送
其他手机测试没问题
——————————————————————————
另外 Rtmp.cpp
在build apk的时候,提示malloc
未定义,需要手动补上malloc.h
头文件
从camera采集的视频,通过gl渲染处理后用mediacodec编码后的h264视频视频流,只想利用mMediaPublisher.starPublish()推流,不利用mMediaPublisher的Gather,Encoder部分,在smaple的基础上改如何快速实现呢?谢谢
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.