ant-media / LibRtmp-Client-for-Android

It is probably the smallest(~60KB, fat version ~300KB) rtmp client for android. It calls librtmp functions over JNI interface
http://antmedia.io
Apache License 2.0
672 stars 230 forks source link

how to switch rtmp stream #95

Open zengke328 opened 3 years ago

zengke328 commented 3 years ago

how to switch rtmp stream when playing rtmp stream? how to pause current stream and to start new stream, i don‘’t find the demo code to learn.

because i find much exception in my project.

00 pc 00063610 /system/lib/libc.so (je_huge_salloc+7) [armeabi-v7a]

-- 2 #01 pc 00067bf7 /system/lib/libc.so (ifree+242) [armeabi-v7a] 3 #02 pc 00067f8f /system/lib/libc.so (je_free+74) [armeabi-v7a] 4 #03 pc 000076e7 /data/app/com.echat.qingning-2/lib/arm/librtmp-jni.so (RTMP_ReadPacket+454) [armeabi-v7a] 5 #04 pc 00008133 /data/app/com.echat.qingning-2/lib/arm/librtmp-jni.so (RTMP_GetNextMediaPacket+26) [armeabi-v7a] 6 #05 pc 0000a20d /data/app/com.echat.qingning-2/lib/arm/librtmp-jni.so [armeabi-v7a] 7 #06 pc 0000a1af /data/app/com.echat.qingning-2/lib/arm/librtmp-jni.so (RTMP_Read+378) [armeabi-v7a] 8 #07 pc 000037b7 /data/app/com.echat.qingning-2/lib/arm/librtmp-jni.so (Java_net_butterflytv_rtmp_1client_RtmpClient_nativeRead+46) [armeabi-v7a] 9 #08 pc 000aec99 /system/lib/libart.so (art_quick_generic_jni_trampoline+40) [armeabi-v7a] 10 #09 pc d79216af 11 java: 12 net.butterflytv.rtmp_client.RtmpClient.int read(byte[],int,int)(RtmpClient.java:265) 13 com.google.android.exoplayer2.ext.rtmp.RtmpDataSource.int read(byte[],int,int)(RtmpDataSource.java:58) 14 com.google.android.exoplayer2.upstream.DefaultDataSource.int read(byte[],int,int)(DefaultDataSource.java:204) 15 com.google.android.exoplayer2.upstream.StatsDataSource.int read(byte[],int,int)(StatsDataSource.java:92) 16 com.google.android.exoplayer2.extractor.DefaultExtractorInput.int readFromUpstream(byte[],int,int,int,boolean)(DefaultExtractorInput.java:283) 17 com.google.android.exoplayer2.extractor.DefaultExtractorInput.boolean readFully(byte[],int,int,boolean)(DefaultExtractorInput.java:75) 18 com.google.android.exoplayer2.extractor.flv.FlvExtractor.boolean readTagHeader(com.google.android.exoplayer2.extractor.ExtractorInput)(FlvExtractor.java:238) 19 com.google.android.exoplayer2.extractor.flv.FlvExtractor.int read(com.google.android.exoplayer2.extractor.ExtractorInput,com.google.android.exoplayer2.extractor.PositionHolder)(FlvExtractor.java:167) 20 com.google.android.exoplayer2.source.BundledExtractorsAdapter.int read(com.google.android.exoplayer2.extractor.PositionHolder)(BundledExtractorsAdapter.java:127) 21 com.google.android.exoplayer2.source.ProgressiveMediaPeriod$ExtractingLoadable.void load()(ProgressiveMediaPeriod.java:1050) 22 com.google.android.exoplayer2.upstream.Loader$LoadTask.void run()(Loader.java:415) 23 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133) 24 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607) 25 java.lang.Thread.run(Thread.java:761)

umangsaini commented 3 years ago

LiveVideoBroadcaster and ExoPlayer

These two projects use librtmp Client for Android, you may want to compare your usage with these applications.

mekya commented 3 years ago

Hi @umangsaini ,

I think it's related to ExoPlayer lifecycle. I wish I could help you but I'm having very tough times for the Ant Media Server. RTMP streaming is out of our scope currently. If you want to use WebRTC for ingesting and playing, please visit https://antmedia.io and we're happy to give support.