当前位置: 首页 > 知识库问答 >
问题:

无法在android中播放Telegram ogg音频文件

邢焕
2023-03-14

我希望我的应用程序从SD卡播放. ogg音频文件,但媒体播放器和SoundPool无法为某些特定的ogg文件执行此操作。我有问题要播放的示例声音属于Telegram。下面的代码适用于其他ogg文件和mp3格式,但在播放此类声音时会给我错误。

    try {
        mediaPlayer = new MediaPlayer();
        mediaPlayer.setDataSource("/storage/emulated/0/Audio/test.ogg");
        mediaPlayer.prepare();
        mediaPlayer.start();
        //works good for mp3 files
    } catch (Exception e) {
        e.printStackTrace();
        Toast.makeText(context, "error", Toast.LENGTH_SHORT).show();
    }

示例文件下载链接:http://www.mediafire.com/download/fxr4z4hh7b2gv50/test.ogg

它引发以下异常:

08-27 13:50:43.244: V/MediaPlayer[Native](5163): constructor
08-27 13:50:43.245: V/MediaPlayer[Native](5163): setListener
08-27 13:50:43.245: E/ExtMediaPlayer-JNI(5163): QCMediaPlayer could not be located....
08-27 13:50:43.245: E/MediaPlayer-JNI(5163): QCMediaPlayer mediaplayer NOT present
08-27 13:50:43.249: V/MediaPlayer[Native](5163): setDataSource(38, 0, 576460752303423487)
08-27 13:50:43.253: V/MediaPlayer[Native](5163): message received msg=8, ext1=0, ext2=0
08-27 13:50:43.253: V/MediaPlayer[Native](5163): notify(8, 0, 0) callback on disconnected mediaplayer
08-27 13:50:43.254: E/MediaPlayer[Native](5163): Unable to create media player
08-27 13:50:43.258: W/System.err(5163): java.io.IOException: setDataSourceFD failed.: status=0x80000000
08-27 13:50:43.258: W/System.err(5163):     at android.media.MediaPlayer._setDataSource(Native Method)
08-27 13:50:43.258: W/System.err(5163):     at android.media.MediaPlayer.setDataSource(MediaPlayer.java:1109)
08-27 13:50:43.259: W/System.err(5163):     at android.media.MediaPlayer.setDataSource(MediaPlayer.java:1094)
08-27 13:50:43.259: W/System.err(5163):     at android.media.MediaPlayer.setDataSource(MediaPlayer.java:1073)
08-27 13:50:43.259: W/System.err(5163):     at android.media.MediaPlayer.setDataSource(MediaPlayer.java:1022)
08-27 13:50:43.259: W/System.err(5163):     at com.bobardo.funnyringtones.MainActivity.onCreate(MainActivity.java:99)
08-27 13:50:43.259: W/System.err(5163):     at android.app.Activity.performCreate(Activity.java:5977)
08-27 13:50:43.259: W/System.err(5163):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105)
08-27 13:50:43.259: W/System.err(5163):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2258)
08-27 13:50:43.259: W/System.err(5163):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2367)
08-27 13:50:43.259: W/System.err(5163):     at android.app.ActivityThread.access$800(ActivityThread.java:148)
08-27 13:50:43.259: W/System.err(5163):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1283)
08-27 13:50:43.259: W/System.err(5163):     at android.os.Handler.dispatchMessage(Handler.java:102)
08-27 13:50:43.259: W/System.err(5163):     at android.os.Looper.loop(Looper.java:135)
08-27 13:50:43.259: W/System.err(5163):     at android.app.ActivityThread.main(ActivityThread.java:5274)
08-27 13:50:43.259: W/System.err(5163):     at java.lang.reflect.Method.invoke(Native Method)
08-27 13:50:43.259: W/System.err(5163):     at java.lang.reflect.Method.invoke(Method.java:372)
08-27 13:50:43.259: W/System.err(5163):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:909)
08-27 13:50:43.259: W/System.err(5163):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:704)

共有1个答案

欧阳德运
2023-03-14

我在播放电报语音消息时遇到了类似的问题(请参阅https://core.telegram.org/bots/api#getfile和https://core.telegram.org/bots/api#sendvoice).不是在android中,而是在raspberry pi中,尽管我猜可能是出于同样的原因。

原来电报语音信息是用OPUS编码的OGG文件。(这可能是user support\u ms在对您的问题的最新评论中所指的内容)。

至少在ubuntu和raspbian中,我没有安装OPUS编解码器。为了获得opusdec命令行工具,我不得不在sudo上安装opus工具。

使用opusdec我可以将从Telegram下载. ogg文件解码为. wav,然后使用aplay播放它。

我真的不知道android是否等同于此,但考虑到你的问题相当陈旧,我认为这些信息对你和其他试图在*nix环境中解码/播放OPUS编码文件的人来说可能具有同等价值。

希望有帮助!

 类似资料:
  • 今天,我制作了一个在Android中播放音乐的应用程序。 使用MediaPlayer播放音频文件时失败;它无法播放任何文件音频。此异常引发日志cat,如: E/MediaPlayer:错误(1,-2147483648) 带系统。错误:java。io。IOException:准备失败:状态=0x1 W/System.err:android.media.MediaPlayer.prepare(本机方法

  • 我的主页有一个有音频的视频背景。但音频只能使用firefox自动播放。如果我要在其他网站(如chrome或IE)上打开我的主页,音频将听不到。

  • 我的应用程序中有一项服务。它发送和接收webservice请求和响应。当我收到来自web服务的特定响应时,我需要停止播放音频/视频文件(媒体文件正在从另一个应用程序播放)。当我完成某个过程时,我需要再次恢复。 注: 在andoid设备中,如果任何2G呼叫停止播放媒体文件,则音乐播放器播放任何音乐,然后当2G呼叫断开时,停止播放媒体文件。我只需要这样做。

  • 我尝试从res/raw文件夹播放音频文件,这是我用来播放文件的代码,这不会产生任何错误,并且我的设备音量最大,但没有任何声音。我尝试了MP3和WAV文件。 启动后我在 LogCat 上收到以下消息 帮助我解决这个问题,将不胜感激。

  • 问一下Xamarin.Forms便携里面Xamarin.Forms的音频怎么播放 正如我所知,有依赖服务,我看到了一些示例,只有iOS和Android,但没有Windows Phone 8.1/Windows 8.1和UWP。