- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想构建一个基于实时流(广播)的应用程序。这里有一些我可以开始的链接: 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 有不同的方法,因为 mp3 “http://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();
}
};
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)
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)
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)
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
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/
我得到了一些有趣的结果,试图辨别使用 Encode::decode("utf8", $var) 之间的区别。和 utf8::decode($var) .我已经发现,在一个变量上多次调用前者最终会导致错
我尝试使用 FlushedInputStream :Android decoder->decode returned false for Bitmap download 但没有任何变化,因为我使用:B
我有一小部分代码: from pyasn1.type import univ from pyasn1.codec.ber import decoder decoder.decode(binary_fi
这个问题在这里已经有了答案: Instantiated optional variable shows as nil in Xcode debugger (2 个答案) 关闭 2 年前。 在 Swi
我在 Playground 中有以下示例代码。如果结果符合 Decodable 协议(protocol),我想解码网络请求的结果。 知道为什么这段代码不起作用吗? protocol APIReques
我正在尝试使用 imagecreatefromwebp() 将 webp 文件转换为 JPEG,但不幸的是,它向我发出警告:警告:imagecreatefromwebp():WebP 解码:无法解码输
我试图覆盖 JSONDecoder 解码数据的方式。 我尝试了以下方法: struct Response : Decodable { init(from decoder: Decoder) t
ACTIVATE_THIS = """ eJx1UsGOnDAMvecrIlYriDRlKvU20h5aaY+teuilGo1QALO4CwlKAjP8fe1QGGalRoLEefbzs+Mk Sb7
我正在尝试使用 swift 4 来解析本地 json 文件: { "success": true, "lastId": null, "hasMore": false,
我的代码有问题。 我正在尝试使用ExtJS和Codeigniter制作上传文件格式。 这是我的下面的代码, Ext.require([ 'Ext.form.field.File',
我有一些遗留代码正在调用 sun.net.www.ParseUtil.decode()。我想避免调用供应商特定的函数,所以我想用其他东西替换调用。 我可以使用 java.net.URLDecoder.
使用 Sonatype Nexus,我仅在访问 /nexus/#admin/support/status 时收到此错误消息. Ext.JSON.decode(): You're trying to d
我正在学习 Elm,让我感到困惑的一件事是“Json.Decode.succeed”。根据docs succeed : a -> Decoder a Ignore the JSON and produ
有什么区别 URLDecoder.decode(String s) 和 URLDecoder.decode(String s, String enc) 我有一个 cookie 值,例如 val=%22
使用 Google Apps 脚本,我想解码 HTML,例如: Some text & text ¢ 存储为: Some text & text ¢ 所以,类似的问题:How t
我正在对带有字幕的视频进行编码,但出现错误“解码的字幕文本中的 UTF-8 无效;可能缺少 -sub_charenc 选项。解码流时出错”,但视频还是编码了。忽略此错误的后果是什么?谷歌搜索显示一个人
我有如下代码: cn_bytes = [157, 188, 156] cn_str = "" clen = len(cn_bytes) count = int(clen / 3) for x in r
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 4年前关闭。 Improve thi
This script give you a decoded listing from an encoded file. Supports *,je, ,vbe, .asp, .hta, .htm,
telnet客户端响应如何解码 我认为这是一个特定的响应,因为所有思科服务器都有相同的响应.这段文字的名称是什么,我如何解密它 '\xff\xfb\x01\xff\xfb\x03\xff\xfd\x1
我是一名优秀的程序员,十分优秀!