Giter Club home page Giter Club logo

androidmultimedia's Introduction

简介

在介绍项目之前,首先说明下我做这套示例代码的初衷。刚开始只是为了测试下在Android平台进行RTMP推流,后来发现要实现这一功能的方法很多,同时涉及的理论和技术体系很庞大,因此出了一系列的文章——流媒体,至于为什么要自己写文章,因为我发现在出现问题时候在网上寻找的答案良莠不齐,或者有的答案已经过时,有时候会折磨我很久,我想到可能有许多朋友和我一样会走这些坑,所以写这些文章记录一下,希望可以帮助到大家。涉及代码的文章都会对应有同步的realease版本代码,大家在阅读时一定要注意下载正确版本的代码。

项目以及文章的目的是和大家一起研究探讨RTMP推流设计的技术和原理,以及如何移植到Android平台下。整个项目的代码只是做了功能的实现,对应稳定性和性能后期会进行。这个项目无法直接给大家提供完好的车轮,只能提供一个车轮的雏形和制造车轮的思路,重点在于基础知识的掌握。如果需要用在公司的项目中,需要大家更进一步优化。

项目中有很多不完善的地方,希望大家可以提出一起讨论。更多的希望对这块领域有兴趣的朋友可以一起参与进来,共同进步。感谢大家的支持!

​ ——Eric

开发环境

  • Android Studio 3.0
  • c++库编译环境 CentOS Linux release 7.4.1708 (Core)
  • 测试机器 arm Android 4.4.2 (如果发现项目运行失败,请注意系统是否需要动态权限,cpu是否是arm处理器)

注意:

  • 因为我的测试机是4.4.2,我没用做动态权限,如果大家测试机系统版本高,可以手动加上动态权限。
  • so库只使用了支持arm处理器。如果处理器是×86或者其他的处理器,可以自己再编译。

相关文章

软件环境

理论基础

项目涉及文章

androidmultimedia's People

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

androidmultimedia's Issues

实际推流较慢,导致睡眠问题

您好,我本地视频帧率是15fps用您的工具推流的时候,总会推的过快导致启动睡眠逻辑。请问在哪里可以控制理论推流速率啊是控制基流帧速率么?在哪里可以控制呢?

第一次接触NDK,想问一下这个怎么解决,谢谢

Build command failed.
Error while executing process /Users/gq/Library/Android/sdk/cmake/3.10.2.4988404/bin/ninja with arguments {-C /Users/gq/ASProjects/nfcutils/androidmultimedia/.cxx/cmake/debug/arm64-v8a ffmpeg-handle}
ninja: Entering directory `/Users/gq/ASProjects/nfcutils/androidmultimedia/.cxx/cmake/debug/arm64-v8a'

ninja: error: '../../../../src/main/jniLibs/arm64-v8a/libavcodec-57.so', needed by '../../../../build/intermediates/cmake/debug/obj/arm64-v8a/libffmpeg-handle.so', missing and no known rule to make it

MediaCodec打开摄像头进行推流时报如下异常

E/AndroidRuntime: FATAL EXCEPTION: main Process: com.wangheart.rtmpfile, PID: 19586 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.wangheart.rtmpfile/com.wangheart.rtmpfile.CameraMediaCodecRtmpActivity}: android.media.MediaCodec$CodecException: Error 0x80001001 at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2315) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2375) 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: android.media.MediaCodec$CodecException: Error 0x80001001 at android.media.MediaCodec.native_configure(Native Method) at android.media.MediaCodec.configure(MediaCodec.java:577) at com.wangheart.rtmpfile.CameraMediaCodecRtmpActivity.initMediaCodec(CameraMediaCodecRtmpActivity.java:126) at com.wangheart.rtmpfile.CameraMediaCodecRtmpActivity.init(CameraMediaCodecRtmpActivity.java:78) at com.wangheart.rtmpfile.CameraMediaCodecRtmpActivity.onCreate(CameraMediaCodecRtmpActivity.java:70) at android.app.Activity.performCreate(Activity.java:5993) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2268)

126 : mMediaCodec.configure(mediaFormat, null, null, MediaCodec.CONFIGURE_FLAG_ENCODE);
测试机型:小米2s
安卓版本:5.0.2

摄像头编码推流,打开摄像头crash

这里我自己写个Issue,每个设备的摄像头参数可能都不同,可能有朋友在自己设备上运行打开摄像头后直接crash。
Caused by: java.lang.RuntimeException: setParameters failed at android.hardware.Camera.native_setParameters(Native Method) at android.hardware.Camera.setParameters(Camera.java:1878)
而我的源码参数直接写死了,所以大家在调用

    params.setPictureFormat(ImageFormat.YV12);
    params.setPreviewFormat(ImageFormat.YV12);
    params.setPictureSize(WIDTH, HEIGHT);
    params.setPreviewSize(WIDTH, HEIGHT);

这些方法时一定要注意,可能你的设备不支持YV12,也可能不支持NV21等等。所以根据自己的情况来设置,或者动态判断。

MP3转AAC格式秒数减少了。

12秒的MP3转AAC格式,变成10秒了。丢帧了。请问如何处理。目前猜测是两个线程问题,如何把两个线程合成一个线程?

录制aac可能导致阻塞

AudioRecordMediaCodecActivity.java 里面用的同步队列,如果消费者消费太慢,导致队列满了,生产者阻塞,这样录音线程岂不是有可能--->有一部分声音是没录到的?

为啥么 我已运行就崩溃 提示找不到

java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/system/framework/org.apache.http.legacy.boot.jar", zip file "/data/app/com.wangheart.rtmpfile-iTNYOpjFzFBuYHVFP6MM9g==/base.apk"],nativeLibraryDirectories=[/data/app/com.wangheart.rtmpfile-iTNYOpjFzFBuYHVFP6MM9g==/lib/arm64, /system/lib64, /product/lib64]]] couldn't find "libavutil-55.so"
at java.lang.Runtime.loadLibrary0(Runtime.java:1012)
at java.lang.System.loadLibrary(System.java:1672)
at com.wangheart.rtmpfile.ffmpeg.FFmpegHandle.(FFmpegHandle.java:24)
at com.wangheart.rtmpfile.ffmpeg.FFmpegHandle.getInstance(Unknown Source:0)
at com.wangheart.rtmpfile.MainActivity.initData(MainActivity.java:46)
at com.wangheart.rtmpfile.MainActivity.onCreate(MainActivity.java:25)

编译so文件报错

请问我下载v1.5这个工程,运行工程的时候开始cmake,编译的时候提升不支持armeabi,然后我改成了armeabi-v7a,再编译的时候报错
Build command failed.
Error while executing process D:\Android\sdk\cmake\3.6.4111459\bin\cmake.exe with arguments {--build E:\githubproject\AndroidMultiMedia-1.5\rtmpfile.externalNativeBuild\cmake\debug\armeabi-v7a --target ffmpeg-handle}

ninja: error: '../../../../src/main/jniLibs/armeabi-v7a/libavcodec-57.so', needed by '../../../../build/intermediates/cmake/debug/obj/armeabi-v7a/libffmpeg-handle.so', missing and no known rule to make it
请问这是什么原因呢?
windows下运行这个工程,很多错误

Couldn't allocate byte array for JPEG data

int ret = RtmpHandle.getInstance().connect("rtmp://192.168.100.200:1935/myapp/room135");
            LogUtils.w("打开RTMP连接: " + ret); 通过我本地推流 推不上去 日志会出现上面的内容。 这个地址是没问题的

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.