gpt4 book ai didi

android - 音频直播 : maximizing user base(decoding issue)

转载 作者:行者123 更新时间:2023-12-04 21:47:25 25 4
gpt4 key购买 nike

我想构建一个基于实时流(广播)的应用程序。这里有一些我可以开始的链接: 1) mp3 , 2) aac("http://79.143.70.114:8000/detifm-64k.aac")。

不幸的是,MediaPlayer 无法在装有 Android 2.x 的设备上播放这些链接。自从 this piece of documentation 以来,我对这种情况有点困惑。声明 Android 2.x 系统仅部分支持 HTTP/HTTPS 直播流草案协议(protocol) - 例如,我的设备(三星 I9001)无法播放上面的链接,但可以播放这个也是 mp3 直播的链接流如所述here .在三星 GTS 5830 等其他设备上,即使是最新的链接也无法播放。

我的目标是尽可能地扩大用户群——我能做些什么来实现它?

首先,我对编码/解码技术不是很熟悉,但我想,编码相同的 mp3 有不同的方法,因为 mp3http://188.138.112.71:9018/”(City Beat Radio)可以播放时无法播放。所以我需要知道哪种类型的编码更适合 Android,并找出大多数设备都支持哪一种。 This声明“单声道/立体声 8-320Kbps 恒定 (CBR) 或可变比特率 (VBR)” - 这就是我需要知道的吗?在三星 GTS 5830 上播放直播流媒体怎么样?

其次,解码依赖于硬件。我看过一个名为 Vitamio 的库这解决了播放第一个链接的问题,但我不喜欢用户必须下载额外的第三方软件的想法。此外,还有一个 MoboPlayer那也可以播放第一个链接。这是因为他们使用软件解码——我想知道是否有任何软件解码库可以合并到我的项目中。我想编写自己的解码器会很乏味,但欢迎您提出建议。

第三,我听说有一种通过 RTSP 协议(protocol)进行直播的方式,Android 更好地支持这种方式,但我不熟悉这种做法,也没有找到任何我可以检查的 mp3 直播流的例子。你觉得值得一试吗?你能举一个现场 rstp mp3 流的例子吗?

这是我用来测试的简单代码。第一个链接( mp3 )导致 java.io.IOException: Prepare failed.: status=0xFFFFFFF6第二个([aac][2]) - java.io.IOException: Prepare failed.: status=0x1

mMediaPlayer = new MediaPlayer();
try {
mMediaPlayer
.setDataSource(
this,
Uri.parse("http://radio02-cn03.akadostream.ru:8114/detifm192.mp3"));
mMediaPlayer.setOnPreparedListener(mOnPreparedListener);
mMediaPlayer.setOnErrorListener(mOnErrorListener);
//mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mMediaPlayer.prepare();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (SecurityException e) {
e.printStackTrace();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (NotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

private OnPreparedListener mOnPreparedListener = new OnPreparedListener() {

@Override
public void onPrepared(MediaPlayer mplayer) {
mplayer.start();
}
};

更新

三星 I9001 上第一个链接(mp3)的 LOGCAT:

08-28 13:38:45.522: E/MediaPlayer(31713): message received msg=3, ext1=0, ext2=0 08-28 13:38:45.542: E/MediaPlayer(31713): message received msg=200, ext1=1, ext2=26 08-28 13:38:45.542: W/MediaPlayer(31713): info/warning (1, 26) 08-28 13:38:45.552: E/MediaPlayer(31713): message received msg=100, ext1=-10, ext2=-10 08-28 13:38:45.552: E/MediaPlayer(31713): error (-10, -10) 08-28 13:38:45.562: W/System.err(31713): java.io.IOException: Prepare failed.: status=0xFFFFFFF6 08-28 13:38:45.562: W/System.err(31713): at android.media.MediaPlayer.prepare(Native Method) 08-28 13:38:45.562: W/System.err(31713): at com.example.sampleradioapp.MainActivity.onCreate(MainActivity.java:53) 08-28 13:38:45.562: W/System.err(31713): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 08-28 13:38:45.562: W/System.err(31713): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1615) 08-28 13:38:45.562: W/System.err(31713): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667) 08-28 13:38:45.562: W/System.err(31713): at android.app.ActivityThread.access$1500(ActivityThread.java:117) 08-28 13:38:45.562: W/System.err(31713): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:935) 08-28 13:38:45.562: W/System.err(31713): at android.os.Handler.dispatchMessage(Handler.java:99) 08-28 13:38:45.562: W/System.err(31713): at android.os.Looper.loop(Looper.java:130) 08-28 13:38:45.562: W/System.err(31713): at android.app.ActivityThread.main(ActivityThread.java:3687) 08-28 13:38:45.562: W/System.err(31713): at java.lang.reflect.Method.invokeNative(Native Method) 08-28 13:38:45.562: W/System.err(31713): at java.lang.reflect.Method.invoke(Method.java:507) 08-28 13:38:45.592: W/System.err(31713): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867) 08-28 13:38:45.592: W/System.err(31713): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625) 08-28 13:38:45.592: W/System.err(31713): at dalvik.system.NativeStart.main(Native Method) 08-28 13:38:45.622: I/MediaPlayer(31713): Info (1,26)



三星 GTS 5830 上第一个链接(mp3)的 LOGCAT:

08-28 13:15:54.119: I/MediaPlayer(24178): uri is:http://radio02-cn03.akadostream.ru:8114/detifm192.mp3 08-28 13:15:54.119: I/MediaPlayer(24178): path is null 08-28 13:15:54.119: D/MediaPlayer(24178): Couldn't open file on client side, trying server side 08-28 13:16:05.139: E/MediaPlayer(24178): error (1, -2147483648) 08-28 13:16:05.249: E/MediaPlayer(24178): Error (1,-2147483648)



三星 I9001 上第二个链路 (aac) 的 LOGCAT:

08-28 13:40:46.681: E/MediaPlayer(31748): message received msg=100, ext1=1, ext2=-2147483648 08-28 13:40:46.681: E/MediaPlayer(31748): error (1, -2147483648) 08-28 13:40:46.681: W/System.err(31748): java.io.IOException: Prepare failed.: status=0x1 08-28 13:40:46.681: W/System.err(31748): at android.media.MediaPlayer.prepare(Native Method) 08-28 13:40:46.681: W/System.err(31748): at com.example.sampleradioapp.MainActivity.onCreate(MainActivity.java:53) 08-28 13:40:46.691: W/System.err(31748): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 08-28 13:40:46.691: W/System.err(31748): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1615) 08-28 13:40:46.691: W/System.err(31748): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667) 08-28 13:40:46.691: W/System.err(31748): at android.app.ActivityThread.access$1500(ActivityThread.java:117) 08-28 13:40:46.691: W/System.err(31748): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:935) 08-28 13:40:46.691: W/System.err(31748): at android.os.Handler.dispatchMessage(Handler.java:99) 08-28 13:40:46.701: W/System.err(31748): at android.os.Looper.loop(Looper.java:130) 08-28 13:40:46.701: W/System.err(31748): at android.app.ActivityThread.main(ActivityThread.java:3687) 08-28 13:40:46.701: W/System.err(31748): at java.lang.reflect.Method.invokeNative(Native Method) 08-28 13:40:46.701: W/System.err(31748): at java.lang.reflect.Method.invoke(Method.java:507) 08-28 13:40:46.701: W/System.err(31748): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867) 08-28 13:40:46.701: W/System.err(31748): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625) 08-28 13:40:46.701: W/System.err(31748): at dalvik.system.NativeStart.main(Native Method)



三星 GTS 5830 上第二个链路 (aac) 的 LOGCAT:

08-28 13:19:03.929: I/MediaPlayer(24352): path is null 08-28 13:19:03.929: D/MediaPlayer(24352): Couldn't open file on client side, trying server side 08-28 13:19:29.119: E/MediaPlayer(24352): error (1, -2147483648) 08-28 13:19:29.119: W/System.err(24352): java.io.IOException: Prepare failed.: status=0x1 08-28 13:19:29.119: W/System.err(24352): at android.media.MediaPlayer.prepare(Native Method) 08-28 13:19:29.119: W/System.err(24352): at com.example.sampleradioapp.MainActivity.onCreate(MainActivity.java:53) 08-28 13:19:29.119: W/System.err(24352): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 08-28 13:19:29.119: W/System.err(24352): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1615) 08-28 13:19:29.119: W/System.err(24352): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667) 08-28 13:19:29.119: W/System.err(24352): at android.app.ActivityThread.access$1500(ActivityThread.java:117) 08-28 13:19:29.119: W/System.err(24352): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:935) 08-28 13:19:29.119: W/System.err(24352): at android.os.Handler.dispatchMessage(Handler.java:99) 08-28 13:19:29.119: W/System.err(24352): at android.os.Looper.loop(Looper.java:130) 08-28 13:19:29.119: W/System.err(24352): at android.app.ActivityThread.main(ActivityThread.java:3687) 08-28 13:19:29.119: W/System.err(24352): at java.lang.reflect.Method.invokeNative(Native Method) 08-28 13:19:29.119: W/System.err(24352): at java.lang.reflect.Method.invoke(Method.java:507) 08-28 13:19:29.129: W/System.err(24352): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867) 08-28 13:19:29.129: W/System.err(24352): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625) 08-28 13:19:29.129: W/System.err(24352): at dalvik.system.NativeStart.main(Native Method)



感谢您的建议。

最佳答案

hi this may helps you

streaminlike
And Set MediaPlayer as
private void initializeMediaPlayer() {
player = new MediaPlayer();
try {
player.setDataSource("http://usa8-vn.mixstream.net:8138");
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

关于android - 音频直播 : maximizing user base(decoding issue),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12122292/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com