Bip*_*alu 5 android rtmp exoplayer
我正在尝试使用 RTMP 协议在应用程序中流式传输相机预览。从一个星期开始,我正在调试 ExoPlayer 和 Librtmp 客户端,但不知何故 Librtmp 客户端无法建立连接并触发 RtmpIOException 内部ECONNREFUSED出错。尝试使用 Socket 编程但得到了同样的错误。IP ping 工作正常。我的同事最近在 Librtmp GitHub 存储库上提交了一个问题。自 1 月以来,Devs 没有回复。
我们尝试使用其他库,如 IJKPlayer(内部使用 FFmpeg),它能够流式预览,但在流式预览之前有更多延迟,还有相机 wifi 断开连接问题。由于使用 JNI 构建,无法在内部进一步调试。
代码:
private val bandwidthMeater = DefaultBandwidthMeter()
private val adaptiveTrackSelectionFactory = AdaptiveTrackSelection.Factory(bandwidthMeater)
private val trackSelector = DefaultTrackSelector(adaptiveTrackSelectionFactory)
private val player = ExoPlayerFactory.newSimpleInstance(context, trackSelector)
fun init() {
player.setVideoSurface(holder.surface)
}
fun startStream(streamUrl: String, startListener: () -> Unit) {
//e.g. streamUrl = rtmp://192.168.42.5:1936/live/myStream (IP is Android device IP provide by camera when connected to its wifi)
val rtmpDatasourceFactory = RtmpDatasource.RtmpDataSourceFactory()
val factory = ExtractorMediaSource.Factory(rtmpDatasourceFactory)
val extractorMediaSource =factory.createMediaSource(Uri.parse(streamUrl))
player.prepare(extractorMediaSource)
player.playWhenReady = true
}
Run Code Online (Sandbox Code Playgroud)
ExoPlayer 错误:
E/ExoPlayerImplInternal: Source error.
net.butterflytv.rtmp_client.RtmpClient$RtmpIOException
at net.butterflytv.rtmp_client.RtmpClient.open(RtmpClient.java:56)
at com.google.android.exoplayer2.ext.rtmp.RtmpDataSource.open(RtmpDataSource.java:57)
at com.google.android.exoplayer2.source.ExtractorMediaPeriod$ExtractingLoadable.load(ExtractorMediaPeriod.java:841)
at com.google.android.exoplayer2.upstream.Loader$LoadTask.run(Loader.java:308)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
at java.lang.Thread.run(Thread.java:818)
Run Code Online (Sandbox Code Playgroud)
连接错误:
java.net.ConnectException: failed to connect to /192.168.42.5 (port 1936): connect failed: ECONNREFUSED (Connection refused)
Run Code Online (Sandbox Code Playgroud)
Pet*_*ans -2
您是否在运行时请求了许可?
每次我遇到这种类型的错误时,这就是我忘记做的事情。
https://developer.android.com/training/permissions/requesting#java
| 归档时间: |
|
| 查看次数: |
951 次 |
| 最近记录: |