exoplayer播放rtmp流

exoplayer一直在更新,已经和以前的版本不太一样了,而且我这边需要播放rtmp流所以就又重新搞了下exoplayer

如果只是引用的话就直接

implementation 'com.google.android.exoplayer:exoplayer:2.X.X'

或者根据自己的需求引用需要的部分

implementation 'com.google.android.exoplayer:exoplayer-core:2.X.X'
implementation 'com.google.android.exoplayer:exoplayer-dash:2.X.X'
implementation 'com.google.android.exoplayer:exoplayer-ui:2.X.X'

2.X.X版本的话可以在RELEASENOTES.md查找

exoplayer本体是不支持rtmp流的,在首页点开extensions可以看到exoplayer的扩展,可以发现exoplayer已经支持很多东西了,点开rtmp找到引入方法

implementation 'com.google.android.exoplayer:extension-rtmp:2.X.X'

版本同上,这样就可以播放rtmp流了

也可以把源代码下载下来拷贝到自己的项目,我就是下载下来的,因为我的播放器有特殊需求要改代码

我只拷贝了core,dash,hls和rtmp的代码

拷贝到项目后发现exoplayer引入了很多的其他的项目,没办法,我也只能跟着引入

implementation 'org.checkerframework:checker:3.0.1'
implementation 'org.checkerframework:checker-compat-qual:2.5.5'
implementation 'org.jetbrains.kotlin:kotlin-annotations-jvm:1.3.60'
implementation 'com.google.code.findbugs:jsr305:3.0.2'
implementation 'net.butterflytv.utils:rtmp-client:3.1.0'

如果不知道要引入什么的话可以打开各文件夹下边的build.gradle就可以看到了,比如rtmp文件夹下的build.gradle内找到implementation 'net.butterflytv.utils:rtmp-client:3.1.0'

还是直接引入方便,没特别要求还是不要拷贝代码了

由于exoplayer和我以前的版本差别比较大,初始化代码都不一样了,所以简单贴一下,以播放hls和rtmp为例,默认播放hls

private void initPlayer(){
        Uri url = Uri.parse(videoUrl);

        TrackSelection.Factory trackSelectionFactory = new AdaptiveTrackSelection.Factory();
        DefaultTrackSelector trackSelector = new DefaultTrackSelector(/* context= */ this, trackSelectionFactory);

        player = new SimpleExoPlayer.Builder(/* context= */ this)
                .setTrackSelector(trackSelector)
                .build();
        MediaSource videoSource;
        if("rtmp".equals(videoUrl.substring(0,4))){
            RtmpDataSource.Factory dataSourceFactory = new RtmpDataSourceFactory();
            videoSource = new ProgressiveMediaSource.Factory(dataSourceFactory).createMediaSource(url);
        }else{
            DataSource.Factory dataSourceFactory = new DefaultDataSourceFactory(this,
                    Util.getUserAgent(this, "ExoPlayer"));
            videoSource = new HlsMediaSource.Factory(dataSourceFactory).createMediaSource(url);
        }
        player.prepare(videoSource);
    }

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值