Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >最新版Android无法通过exoplayer播放音频文件

最新版Android无法通过exoplayer播放音频文件
EN

Stack Overflow用户
提问于 2020-08-27 16:22:04
回答 1查看 746关注 0票数 0

我正在使用exoplayer将我的音频文件从Firebase存储流传输到我的应用程序。我之前用的是Media player,太慢了。所以我改成了exoplayer,当时它的版本是2.8.4。

这是我用来流式传输音频的代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SimpleExoPlayer simpleExoPlayer;
private void SetupPlayer(){
    DefaultRenderersFactory renderersFactory = new DefaultRenderersFactory(this,
            null,DefaultRenderersFactory.EXTENSION_RENDERER_MODE_OFF);
    TrackSelector trackSelector = new DefaultTrackSelector();
    LoadControl loadControl = new DefaultLoadControl.Builder()
            .setAllocator(new DefaultAllocator(true, 16))
            .setBufferDurationsMs(MIN_BUFFER_DURATION,
                    MAX_BUFFER_DURATION,
                    MIN_PLAYBACK_START_BUFFER,
                    MIN_PLAYBACK_RESUME_BUFFER)
            .setTargetBufferBytes(-1)
            .setPrioritizeTimeOverSizeThresholds(true).createDefaultLoadControl();
    simpleExoPlayer = ExoPlayerFactory.newSimpleInstance(renderersFactory,trackSelector,loadControl);
    String userAgent = Util.getUserAgent(this, "Play Audio");
    ExtractorMediaSource mediaSource = new ExtractorMediaSource(Uri.parse(audio_url),new DefaultDataSourceFactory(this, userAgent),
            new DefaultExtractorsFactory(),null,null);

    simpleExoPlayer.prepare(mediaSource);
}

它工作得很好。但现在exoplayer已经将它的版本更新到了2.11.8。在此版本中,不推荐使用ExtractorMediaSourceDefaultRenderersFactoryDefaultTrackSelectorExoPlayerFactory

因此,我更改了最新版本的代码。

代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    SimpleExoPlayer simpleExoPlayer;
    private void SetupPlayer(){
       // Create a data source factory.
        DataSource.Factory dataSourceFactory =
                new DefaultHttpDataSourceFactory(Util.getUserAgent(this
                        , "app-name"));
// Create a progressive media source pointing to a stream uri.
        MediaSource mediaSource = new ProgressiveMediaSource.Factory(dataSourceFactory)
                .createMediaSource(Uri.parse(audio_url));
// Create a player instance.
        simpleExoPlayer =  new SimpleExoPlayer.Builder(this).build();
// Prepare the player with the media source.
        simpleExoPlayer.prepare(mediaSource);
    }

现在它显示错误

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
java.lang.NoSuchMethodError: No static method metafactory(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite; in class Ljava/lang/invoke/LambdaMetafactory; or its super classes (declaration of 'java.lang.invoke.LambdaMetafactory' appears in /apex/com.android.runtime/javalib/core-oj.jar)
        at com.google.android.exoplayer2.util.SlidingPercentile.<clinit>(SlidingPercentile.java:38)
        at com.google.android.exoplayer2.upstream.DefaultBandwidthMeter.<init>(DefaultBandwidthMeter.java:276)
        at com.google.android.exoplayer2.upstream.DefaultBandwidthMeter.<init>(DefaultBandwidthMeter.java:48)
        at com.google.android.exoplayer2.upstream.DefaultBandwidthMeter$Builder.build(DefaultBandwidthMeter.java:190)
        at com.google.android.exoplayer2.upstream.DefaultBandwidthMeter.getSingletonInstance(DefaultBandwidthMeter.java:229)
        at com.google.android.exoplayer2.SimpleExoPlayer$Builder.<init>(SimpleExoPlayer.java:144)
        at com.google.android.exoplayer2.SimpleExoPlayer$Builder.<init>(SimpleExoPlayer.java:126)
        at com.paulstevenme.jeevaoli.StoryAudioActivity.SetupPlayer(StoryAudioActivity.java:323)
        at com.paulstevenme.jeevaoli.StoryAudioActivity.onCreate(StoryAudioActivity.java:125)
        at android.app.Activity.performCreate(Activity.java:7955)
        at android.app.Activity.performCreate(Activity.java:7944)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1307)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3423)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3595)
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83)
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2147)
        at android.os.Handler.dispatchMessage(Handler.java:107)
        at android.os.Looper.loop(Looper.java:237)
        at android.app.ActivityThread.main(ActivityThread.java:7814)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1068)

我搜索了Stack overflow。但是每个人的答案都是被弃用的。所以我不知道该怎么解决它。请帮我解决一些问题。

EN

回答 1

Stack Overflow用户

发布于 2020-08-28 09:52:46

找到答案了。我只是错过了在添加之后在build gradle.中添加compile options,它起作用了。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
compileOptions {
        targetCompatibility JavaVersion.VERSION_1_8
    }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63620264

复制
相关文章
Android 音频播放速率调整实现
最近接触到的一个项目, 有音频播放、切换播放速率和拖动进度到某处播放的需求 ,由于之前只是见过并没有尝试过切换播放速率 , 于是开始调研并最终实现,下面简单记录一下这次的调研过程。
程思扬
2022/01/11
1.2K0
Ijkplayer、ExoPlayer、VLC播放器综合比较
VLC 是VideoLAN 计划所研发的工程,最早预1996年开始,是一个完全的跨平台播放器,适合Windows、Mac OS、Linux、Android、iOS等系统,目前完全的跨平台播放器很少,VLC是最受欢迎的一种播放器;目前累计下载13亿次,是真真正正的全球播放器;
马上就说
2020/12/11
8.7K0
Ijkplayer、ExoPlayer、VLC播放器综合比较
Python 播放音频文件
playsound是纯Python、跨平台、单功能模块,不依赖于播放声音。使用此模块,可以使用一行代码播放声音文件:
Python知识大全
2020/01/20
6.9K0
音视频开发之旅(44)-ExoPlayer介绍及简单使用
从这篇开始我们进入阶段五 —— 一些音视频开源项目的学习使用分析,今天我们进入ExoPlayer部分的学习实践
音视频开发之旅
2021/05/15
7.9K0
音视频开发之旅(44)-ExoPlayer介绍及简单使用
选择最新 Chromium,支持 H264 / H265
在做了充分的准备后,我信心满满的向着 H265 8K 视频解码这个目标发起进攻,然而,正打算动手的时候,我突然发现,别说支持 H265 ,自编的 Chromium WebView 连 H264 解码都不支持。使用 WebView Shell 访问测试页面,结果如下:
云水木石
2023/10/08
1.2K0
选择最新 Chromium,支持 H264 / H265
ExoPlayer 多路流切换
国内互联网的发展的过程中,无论是3G、4G还是5G时代,甚至是在可见的未来nG时代,音视频领域一直自始至终参与其中,编解码标准也升级了一版又一版,和音视频的相关应用领域从传统的播放转为互动直播。从另一个方面,伴随中国的互联网发展的每一个过程,从高昂且卡慢流量资费到VIP、SVIP、SSVIP......,再到即将到来的人工智能和Web 3.0 ,必然也少不了音视频。接下来需要考虑你的钱包还能支撑多久,是不是已经准备好了?
QQ音乐技术团队
2023/09/19
1.4K0
ExoPlayer 多路流切换
ExoPlayer播放音视频的使用介绍
本文翻译自:https://google.github.io/ExoPlayer/guide.html#mediasource
AWeiLoveAndroid
2021/04/07
6.5K0
js播放音频文件总结
最近在做一个英语听力的个人玩的项目,需要用js来播放mp3文件。从网络上搜到了好多种解决方案。
jerryteng
2018/11/28
9.1K0
js播放音频文件总结
可折叠设备的桌面模式
可折叠设备向用户们提供了使用他们的手机做更多事情的可能性,包括*桌面模式**等创新,也就是当手机平放时,铰链处于水平位置,同时折叠屏幕处于部分打开的状态。
Android 开发者
2022/03/09
2.4K0
可折叠设备的桌面模式
音视频开发之旅(45)-ExoPlayer 音频播放器实践(一)
通过上一篇的学习实践,我们了解了ExoPlayer的优缺点以及基本用法,今天我们进入ExoPlayer的音频播放实践,我们来一起实现一个简单的音频播放器。
音视频开发之旅
2021/05/29
5.4K1
音视频开发之旅(45)-ExoPlayer 音频播放器实践(一)
Android ExoPlayer 音画同步代码分析
音画同步旨在通过时钟参考的方式,将音频、视频、歌词等播放时间对应起来,确保画面和声音同步。音视频播放器开发中,音画同步是一项非常重要的工作,直接影响用户的视听体验。
QQ音乐技术团队
2023/08/16
1.5K0
Android ExoPlayer 音画同步代码分析
基于ExoPlayer的ExoPlayerVideoView
在Android设备中,播放视频和音乐是非常普遍的。Android框架提供了一个对于媒体的操作的最省代码的解决方案:MediaPlayer。它提供了低等级的媒体API,例如:MediaCodec,AudioTrack,MediaDrm,可以用于建立自定义媒体播放的解决方案。 但是MediaPlayer的api实在是但太难用了,扩展性也不好。所以我们可以用诸如ijkplayer,VLC以及ExoPlayer。本文并不是讲述ExoPlayer如何使用的,而是一款基于ExoPlayer的VideoView。ExoPlayerVideoView旨在提供一个快捷的视频播放布局的解决方案。
JarvanMo
2018/09/06
4K0
基于ExoPlayer的ExoPlayerVideoView
YouTube开源播放器中文使用指南
在这之前笔者使用原生的MediaPlayer、B站开源的IJKVideoView等播放器。直到发现ExoPlayer,这款由YouTube开发的播放器真的是非常强大。对于自定义播放器非常友好,里面将很多模块抽象成独立的组件可供使用者自行定制,当然官方也提供了一些默认的实现。如果你正在开发视频类功能,强烈推荐你尝试一下ExoPlayer。
吴延宝
2019/07/24
4K0
python通过wxPython打开一个音频文件并播放的代码
这段代码片段使用wx.lib.filebrowsebutton.FileBrowseButton控件打开一个wav文件,使用wx.Sound播放
大师级码师
2021/10/27
7850
js控制音频文件的播放暂停操作
这个功能是在最百度语音合成的时候涉及到的,这个功能我也是第一次写,毕竟前端的东西不是很擅长。特此记录一下。
申霖
2020/04/03
8.1K0
一个ExoPlayer原生播放问题引起的思考
我们在使用ExoPlayer播放视频的视频发现一种特殊的M3U8视频,播放总是失败。 而且报如下的错误:
马上就说
2021/04/29
3.5K0
一个ExoPlayer原生播放问题引起的思考
4款知名播放器比较:ijkPlayer、VLC、SmartPlayer、ExoPlayer
ijkPlayer是BiliBili公司维护的一个开源工程,基于ffmpeg开发的一个播放器软件,支持Android和iOS平台,整个ijkplayer就是以ffplay为基础,如果只是使用它进行播放,集成也较为简单,使用也和MediaPlayer差不多,但是要定制化需求,就有一定的门槛高度。支持软硬编解码,支持倍速播放,可以定制化集成需要的功能,集成占用体积也很小,更详细的解释参看下面官方介绍:
音视频牛哥
2021/03/18
8.7K0
Android主流播放器比较
本篇文章主要介绍 Android 原生 VideoView,Google 开源视频播放框架 ExoPlayer,Vitamio 视频播放框架以及 Bilibili 开源视频播放框架 ijkplayer 的使用方法和优缺点。
蜻蜓队长
2018/08/03
3K0
【代码】Python播放MP3音频文件
按推荐顺序排列 ①使用playsound库 from playsound import playsound playsound('xx.mp3') ②使用pygame库 from pygame import mixer import time mixer.init() mixer.music.load('xx.mp3') mixer.music.play() time.sleep(5) mixer.music.stop() ③使用mp3play库(仅支持python2,对python3不支持) imp
py3study
2020/01/08
1.8K0
点击加载更多

相似问题

通过ExoPlayer或其他选项播放多个音频文件?

10

在Android的Exoplayer中播放WAV音频文件

121

无法通过ExoPlayer播放直播视频

013

Android Exoplayer无法打开资产音频文件

175

Exoplayer无法播放DASH视频android

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文