微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Android Studio ExoPlayer 我错在哪里

如何解决Android Studio ExoPlayer 我错在哪里

我正在尝试通过此 URI 进行流式传输:

rtsp://192.168.43.123:8080/h264_pcm.sdp

我刚刚尝试使用 VideoView,但延迟为 20 秒或更长时间

所以我对 ExoPlayer 感兴趣,但我有这个错误

2021-07-11 12:25:17.962 29357-30421/com.l3.m4o E/ExoPlayerImplInternal: Playback error
  com.google.android.exoplayer2.ExoPlaybackException: Source error
    at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:580)
    at android.os.Handler.dispatchMessage(Handler.java:102)
    at android.os.Looper.loop(Looper.java:246)
    at android.os.HandlerThread.run(HandlerThread.java:67)
 Caused by: java.net.ConnectException: Failed to connect to /192.168.1.102 (port 8080) from /:: (port 59858): connect Failed: ECONNREFUSED (Connection refused)
    at libcore.io.IoBridge.connect(IoBridge.java:142)
    at java.net.PlainSocketImpl.socketConnect(PlainSocketImpl.java:142)
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:390)
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:230)
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:212)
    at java.net.socksSocketImpl.connect(SocksSocketImpl.java:436)
    at java.net.socket.connect(Socket.java:621)
    at java.net.socket.connect(Socket.java:570)
    at java.net.socket.<init>(Socket.java:450)
    at java.net.socket.<init>(Socket.java:218)
    at javax.net.DefaultSocketFactory.createSocket(SocketFactory.java:279)
    at com.google.android.exoplayer2.source.rtsp.RtspClient.getSocket(RtspClient.java:248)
    at com.google.android.exoplayer2.source.rtsp.RtspClient.start(RtspClient.java:157)
    at com.google.android.exoplayer2.source.rtsp.RtspMediaPeriod.prepare(RtspMediaPeriod.java:145)
    at com.google.android.exoplayer2.source.MaskingMediaPeriod.prepare(MaskingMediaPeriod.java:145)
    at com.google.android.exoplayer2.ExoPlayerImplInternal.maybeUpdateLoadingPeriod(ExoPlayerImplInternal.java:1931)
    at com.google.android.exoplayer2.ExoPlayerImplInternal.updatePeriods(ExoPlayerImplInternal.java:1911)
    at com.google.android.exoplayer2.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:911)
    at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:478)
    at android.os.Handler.dispatchMessage(Handler.java:102) 
    at android.os.Looper.loop(Looper.java:246) 
    at android.os.HandlerThread.run(HandlerThread.java:67) 
 Caused by: android.system.ErrnoException: connect Failed: ECONNREFUSED (Connection refused)
    at libcore.io.Linux.connect(Native Method)
    at libcore.io.ForwardingOs.connect(ForwardingOs.java:94)
    at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:138)
    at libcore.io.ForwardingOs.connect(ForwardingOs.java:94)
    at libcore.io.IoBridge.connectErrno(IoBridge.java:156)
    at libcore.io.IoBridge.connect(IoBridge.java:134)
    at java.net.PlainSocketImpl.socketConnect(PlainSocketImpl.java:142) 
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:390) 
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:230) 
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:212) 
    at java.net.socksSocketImpl.connect(SocksSocketImpl.java:436) 
    at java.net.socket.connect(Socket.java:621) 
    at java.net.socket.connect(Socket.java:570) 
    at java.net.socket.<init>(Socket.java:450) 
    at java.net.socket.<init>(Socket.java:218) 
    at javax.net.DefaultSocketFactory.createSocket(SocketFactory.java:279) 
    at com.google.android.exoplayer2.source.rtsp.RtspClient.getSocket(RtspClient.java:248) 
    at com.google.android.exoplayer2.source.rtsp.RtspClient.start(RtspClient.java:157) 
    at com.google.android.exoplayer2.source.rtsp.RtspMediaPeriod.prepare(RtspMediaPeriod.java:145) 
    at com.google.android.exoplayer2.source.MaskingMediaPeriod.prepare(MaskingMediaPeriod.java:145) 
    at com.google.android.exoplayer2.ExoPlayerImplInternal.maybeUpdateLoadingPeriod(ExoPlayerImplInternal.java:1931) 
    at com.google.android.exoplayer2.ExoPlayerImplInternal.updatePeriods(ExoPlayerImplInternal.java:1911) 
    at com.google.android.exoplayer2.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:911) 
    at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:478) 
    at android.os.Handler.dispatchMessage(Handler.java:102) 
    at android.os.Looper.loop(Looper.java:246) 
    at android.os.HandlerThread.run(HandlerThread.java:67) 

我的Java代码

public class MainActivity extends AppCompatActivity {
    final static String RTSP_URL = "rtsp://192.168.1.102:8080/h264_pcm.sdp";
    PlayerView playerView;
    SimpleExoPlayer player;
    Uri URI = Uri.parse(RTSP_URL);

    @Override
    protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            playerView = (PlayerView) findViewById(R.id.player_view);
            player = new SimpleExoPlayer.Builder(this).build();
            MediaSource mediaSource =
                    new RtspMediaSource.Factory()
                            .createMediaSource(MediaItem.fromUri(URI));

            playerView.setPlayer(player);
            player.setMediaSource(mediaSource);
            player.prepare();
            player.play();
    }
}

我想,我会尝试使用 libVlc 因为在 Android VLC 应用程序上它可以工作,但我不知道它是如何工作的,如果您能指导我我将非常感谢 xD 或告诉我在哪里Exoplayer 出错了。

谢谢。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。