Giter VIP home page Giter VIP logo

livepublisher's Introduction

LivePublisher

Android RTMP推流程序。

使用Camera+AudioRecord获取原始音视频数据,进行x264+faac对进行实时编码,然后通过librtmp上传至流媒体服务器。 自己做着玩的,java层只需要保留PublishNativeJni.java,其他的可以随意封装。 MediaCodec编码实现:https://github.com/EarthXiang/HardWareLive

创建推流器:

    //分辨率:480x320 fps:25 码率:480k 音频采样率:44.1k 默认摄像头:后置
    //如果设备不支持这些参数会自动对参数进行调整,满足设备的支持。
    LivePusher livePusher = new LivePusher(480, 320, 480000, 25, 44100,CameraInfo.CAMERA_FACING_BACK); 
	livePusher.setLiveStateChangeListener(this);  
	livePusher.prepare(mSurfaceHolder);

开始推流

    livePusher.startPusher("rtmp://ip:port/app/name");

结束推流

    livePusher.stopPusher();

释放

    livePusher.release();

设置状态监听

	public interface LiveStateChangeListener {
	// 错误信息 非主线程调用
	public void onErrorPusher(int code);
	// 开始推流 非主线程调用
	public void onStartPusher();
	// 停止推流 非主线程调用
	public void onStopPusher();
}

获取错误信息:

   	switch (code) {
			case -100:
				Toast.makeText(MainActivity.this, "视频预览开始失败", 0).show();
				livePusher.stopPusher();
				break;
			case -101:
				Toast.makeText(MainActivity.this, "音频录制失败", 0).show();
				livePusher.stopPusher();
				break;
			case -102:
				Toast.makeText(MainActivity.this, "音频编码器配置失败", 0).show();
				livePusher.stopPusher();
				break;
			case -103:
				Toast.makeText(MainActivity.this, "视频频编码器配置失败", 0).show();
				livePusher.stopPusher();
				break;
			case -104:
				Toast.makeText(MainActivity.this, "流媒体服务器/网络等问题", 0).show();
				livePusher.stopPusher();
				break;
			}
	}

livepublisher's People

Contributors

edu-lance 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

livepublisher's Issues

推流情况下,机子卡的问题

我发现推流是在主线程中执行的,在推流页面中,我还加入了及时聊天,发觉页面是非常卡的,然后控制台提示占用的主线程过多,我把及时聊天去掉,然后开始推流,也是会出现主线程占用问题。
不知道能不能改成子线程推流?

延时比较大

代码是可以用的,不过有个问题就是延时大概10s以上,这个延时有点大。

音频改buff的疑问。

我想改一下音频的buff大小,之前是2048,改为4096,然后推流不正常了,声音卡帧带着视频也卡了。

hello

你好,请问你的邮箱是什么? 有关技术的问题,能否咨询一下?

重影

推流可以成功 但是有重影

bug

在小米 note lte (6.0.1版本)手机上面有这个错误:
image
image

image

请问如何正方形预览,接收端正方形接收?

我把serfaceView的宽高设置成正方形,再调用了camera.parameter.setPreviewSize也设置成了正方形,实现了正方形预览,但是接收的图像全乱了,请问是什么原因呢?如何解决?感激不尽

我在初始化的时候,一直提示 No implementation found for jni.PusherNative.setAudioOptions(Native Method)

一直提示 No implementation found for jni.PusherNative.setAudioOptions(Native Method)
是否是so文件导入姿势不对
image

06-15 17:30:31.125 26648-26648/com.qiniu.liuhanlin.live_publisher W/linker: /data/app/com.qiniu.liuhanlin.live_publisher-1/lib/arm/libPusher.so has text relocations. This is wasting memory and prevents security hardening. Please fix. 06-15 17:30:31.147 26648-26648/com.qiniu.liuhanlin.live_publisher E/art: No implementation found for void com.qiniu.liuhanlin.live_publisher.jni.PusherNative.setAudioOptions(int, int) (tried Java_com_qiniu_liuhanlin_live_1publisher_jni_PusherNative_setAudioOptions and Java_com_qiniu_liuhanlin_live_1publisher_jni_PusherNative_setAudioOptions__II) 06-15 17:30:31.147 26648-26648/com.qiniu.liuhanlin.live_publisher D/AndroidRuntime: Shutting down VM 06-15 17:30:31.148 26648-26648/com.qiniu.liuhanlin.live_publisher E/AndroidRuntime: FATAL EXCEPTION: main Process: com.qiniu.liuhanlin.live_publisher, PID: 26648 java.lang.UnsatisfiedLinkError: No implementation found for void com.qiniu.liuhanlin.live_publisher.jni.PusherNative.setAudioOptions(int, int) (tried Java_com_qiniu_liuhanlin_live_1publisher_jni_PusherNative_setAudioOptions and Java_com_qiniu_liuhanlin_live_1publisher_jni_PusherNative_setAudioOptions__II) at com.qiniu.liuhanlin.live_publisher.jni.PusherNative.setAudioOptions(Native Method) at com.qiniu.liuhanlin.live_publisher.pusher.AudioPusher.<init>(AudioPusher.java:27) at com.qiniu.liuhanlin.live_publisher.LivePusher.prepare(LivePusher.java:39) at com.qiniu.liuhanlin.live_publisher.MainActivity.onCreate(MainActivity.java:85) at android.app.Activity.performCreate(Activity.java:6303) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1108) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2374) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2481) at android.app.ActivityThread.access$900(ActivityThread.java:153) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1349) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:148) at android.app.ActivityThread.main(ActivityThread.java:5432) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:735) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625) 06-15 17:30:31.160 26648-26648/com.qiniu.liuhanlin.live_publisher I/Process: Sending signal. PID: 26648 SIG: 9
我将工程重新导入到了android studio中

编译rtmp.a x264.a 和 faac.a 有问题

我是 window-10 平台,ndk 装好了,用你的原始 jni.tar.gz 可以编译出 *.so,推流也都正常,完美。

问题是当我想自己编译出 rtmp.a x264.a 和 faac.a 时,遇到问题了,我用 cygwin64 进行编译,运行的是 jni.tar.gz 中的 ./build.sh 脚本,结果怎么都跑不起来,各种问题!
请问你是在 linux 下编译 *.a 的吗?

请问这个demo的h264编码的品质

我用这个进行了推流,后发现这个画质什么的都受h264编码品质的影响,现在推出去的流都是h264 baseline的,但是应该是存在更高的品质的吧?比如,main,high。。。请问这个demo支持这个的设置吗?感谢

Jni层的代码

作者您好,请问jni层的代码能不能公布一下,很想知道fireXXX方法的具体实现,万分感谢!

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.