- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
代码:
path = "httplive://<host>/moviets/index.m3u8";
// Create a new media player and set the listeners
mMediaPlayer = new MediaPlayer();
mMediaPlayer.setDataSource(path);
mMediaPlayer.setOnErrorListener(this);
mMediaPlayer.setDisplay(holder);
mMediaPlayer.prepare(); // Crashes here. prepareAsync() does not help either
mMediaPlayer.setOnBufferingUpdateListener(this);
mMediaPlayer.setOnCompletionListener(this);
mMediaPlayer.setOnPreparedListener(this);
mMediaPlayer.setOnVideoSizeChangedListener(this);
mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mMediaPlayer.start();
堆栈跟踪:
ERROR/MediaPlayer(1349): error (100, 0)
ERROR/MediaPlayerDemo(1349): error: Prepare failed.: status=0x64
ERROR/MediaPlayerDemo(1349): java.io.IOException: Prepare failed.: status=0x64
ERROR/MediaPlayerDemo(1349): at android.media.MediaPlayer.prepare(Native Method)
ERROR/MediaPlayerDemo(1349): at com.example.Example.VideoPlayerActivity.playVideo(VideoPlayerActivity.java:81)
ERROR/MediaPlayerDemo(1349): at com.example.Example.VideoPlayerActivity.surfaceCreated(VideoPlayerActivity.java:138)
ERROR/MediaPlayerDemo(1349): at android.view.SurfaceView.updateWindow(SurfaceView.java:565)
ERROR/MediaPlayerDemo(1349): at android.view.SurfaceView.access$000(SurfaceView.java:84)
ERROR/MediaPlayerDemo(1349): at android.view.SurfaceView$3.onPreDraw(SurfaceView.java:173)
ERROR/MediaPlayerDemo(1349): at android.view.ViewTreeObserver.dispatchOnPreDraw(ViewTreeObserver.java:590)
ERROR/MediaPlayerDemo(1349): at android.view.ViewRoot.performTraversals(ViewRoot.java:1325)
ERROR/MediaPlayerDemo(1349): at android.view.ViewRoot.handleMessage(ViewRoot.java:1944)
ERROR/MediaPlayerDemo(1349): at android.os.Handler.dispatchMessage(Handler.java:99)
ERROR/MediaPlayerDemo(1349): at android.os.Looper.loop(Looper.java:126)
ERROR/MediaPlayerDemo(1349): at android.app.ActivityThread.main(ActivityThread.java:3997)
ERROR/MediaPlayerDemo(1349): at java.lang.reflect.Method.invokeNative(Native Method)
ERROR/MediaPlayerDemo(1349): at java.lang.reflect.Method.invoke(Method.java:491)
ERROR/MediaPlayerDemo(1349): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841)
ERROR/MediaPlayerDemo(1349): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)
ERROR/MediaPlayerDemo(1349): at dalvik.system.NativeStart.main(Native Method)
DEBUG/MediaPlayerDemo(1349): surfaceChanged called
日志:
DEBUG/MediaPlayerDemo(1349): surfaceCreated called
INFO/System.out(1349): the path is httplive://192.168.0.196/moviets/index.m3u8
INFO/StagefrightPlayer(1312): setDataSource('httplive://192.168.0.196/moviets/index.m3u8')
INFO/LiveSession(1312): onConnect 'http://192.168.0.196/moviets/index.m3u8'
INFO/NuHTTPDataSource(1312): connect to 192.168.0.196:80/moviets/index.m3u8 @0
INFO/NuHTTPDataSource(1312): connect to 192.168.0.196:80/moviets/index.m3u8 @0
INFO/NuHTTPDataSource(1312): connect to 192.168.0.196:80/moviets/file5.ts @0
INFO/avc_utils(1312): found AVC codec config (320 x 240, Baseline-profile level 3.0)
INFO/ESQueue(1312): found something resembling an AAC syncword at offset 1017
INFO/NuHTTPDataSource(1312): connect to 192.168.0.196:80/moviets/file6.ts @0
INFO/ESQueue(1312): found AAC codec config (48000 Hz, 7 channels)
INFO/ESQueue(1312): [ 06-26 17:37:17.397 1312:0x550 F/ESQueue ]
INFO/ESQueue(1312): frameworks/base/media/libstagefright/mpeg2ts/ESQueue.cpp:255 Should not be here.
INFO/DEBUG(31): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
INFO/DEBUG(31): Build fingerprint: 'generic/sdk/generic:3.0/HONEYCOMB/104254:eng/test-keys'
INFO/DEBUG(31): pid: 1312, tid: 1360 >>> /system/bin/mediaserver <<<
INFO/DEBUG(31): signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr deadbaad
INFO/DEBUG(31): r0 deadbaad r1 0000000c r2 00000027 r3 00000000
INFO/DEBUG(31): r4 00000080 r5 aff46658 r6 00000007 r7 00000000
INFO/DEBUG(31): r8 a2b72589 r9 00012a6c 10 00100000 fp 00000001
INFO/DEBUG(31): ip ffffffff sp 4060f488 lr aff193e9 pc aff15f58 cpsr 00000030
INFO/NuHTTPDataSource(1312): connect to 192.168.0.196:80/moviets/file7.ts @0
INFO/DEBUG(31): #00 pc 00015f58 /system/lib/libc.so
INFO/DEBUG(31): #01 pc 00001466 /system/lib/liblog.so (__android_log_assert)
INFO/DEBUG(31): libc base address: aff00000
让我感到困惑的是“found AAC codec config”这一行,而视频文件包含 mp3 编码。这是正常现象还是我的 Android 客户端错误地将 mp3 检测为 aac?仅供引用,其他带有 aac 编码的视频在客户端上播放正常
有什么线索吗?
最佳答案
这似乎是 Honeycomb 模拟器中的一个错误,Android 错误地将 mp3 流检测为 aac。另一方面,FFmpeg 正确检测到 mp3 流,如下所示
ffmpeg -i file6.ts
Stream #0.1[0x101]: Audio: mp3, 48000 Hz, 2 channels, s16, 192 kb/s
很遗憾,Android认为是AAC
INFO/avc_utils(1312): found AVC codec config (320 x 240, Baseline-profile level 3.0)
INFO/ESQueue(1312): found something resembling an AAC syncword at offset 1017
INFO/NuHTTPDataSource(1312): connect to <ip>:<port>/moviets/file6.ts @0
INFO/ESQueue(1312): found AAC codec config (48000 Hz, 7 channels)
INFO/ESQueue(1312): [ 06-26 17:37:17.397 1312:0x550 F/ESQueue ]
INFO/ESQueue(1312): frameworks/base/media/libstagefright/mpeg2ts/ESQueue.cpp:255 \
Should not be here.
解决方法是使用 AAC 编码。如果您使用的是 ffmpeg,请使用 -acodec libfaac
选项。这适用于我们的项目,因为我们可以自由选择源视频格式。不过,这可能不一定是您的情况。
关于android - Honeycomb 上的直播崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6484001/
我正在寻找一种解决方案,当项目具有以下内容时,更改 HoneyComb 操作栏的选项菜单项的文本颜色: android:showAsAction="ifRoom|withText" 我尝试了很多不同的
我想为 Honeycomb 创建一些小部件,我已经成功创建了一个 StackView widget对于我的应用程序,但我想在 Honeycomb 中添加一些其他的新小部件。 我特别想查找上图中右侧小部
我正在为 Honeycomb 开发,几天来我一直在努力解决这个问题。我有一个没有 Intent 的通知服务(不需要一个),问题是每次调用 displaymessage 函数后,每次都会弹出通知,所以我
我读了很多关于这个问题的问题,但我找不到正确的方向来解决我的问题,也许是因为我是菜鸟,迫切希望找到正确的方法...... 据我所知,“requering already closed cursor”问
我已经安装了 android sdk for windows。我当时使用的是 API 级别 8 和 API 级别 15。 现在我想使用 Honeycomb for Tablets。但我不知道如何在我的
我知道这个问题对某些人来说可能听起来很愚蠢,但 Honeycomb 仅适用于平板电脑吗?我正在做一个论文项目,为移动设备开发一个 Android 应用程序:你建议我应该使用哪个版本?我猜是最受欢迎的那
我一直在研究如何将我的应用程序 (android:maxSdkVersion = “10”) 升级到 Honeycomb,并希望得到一些建议。 首先,我的应用程序中的一个 Activity 是列表 A
我有一个 Android 应用程序,它偶尔会显示 Assets 文件夹中包含的静态网页。我一直在以编程方式显示这些: webView = new WebView(PKBDocument.Knowled
代码: path = "httplive:///moviets/index.m3u8"; // Create a new media player and set th
我想在 default media player 中为 honeycomb 添加一些功能,而不是使用 Android 中的 mediaPlayer 包创建任何其他类,例如通过滑动屏幕显示特定视频的信息
我有一个应用程序,允许用户转到照片库并选择一张照片用作头像。该代码在任何地方都可以正常工作,但 Xoom 除外,它会启动图库,允许用户选择照片,然后失败并显示“java.lang.RuntimeExc
如何在没有操作栏的情况下在 Honeycomb 或 ICS 平板电脑上显示选项菜单? 经过一番尝试后,如果没有操作栏并且 targetsdkversion >=11,似乎无法在 Honeycomb 设
在 Android 的 pre-Honeycomb 版本中,我跟踪了内存的外部分配 VMRuntime.getRuntime().getExternalBytesAllocated() 或使用 Deb
几周来我一直在编写我的第一个应用程序,今天我意识到如果我们想为 Honeycomb 和普通手机开发,我们应该将它们打包为一个应用程序而不是两个具有不同目标的应用程序。 因此,我在 Eclipse 中启
我正在尝试检查我的蜂窝应用程序上是否有一个简单的连接可用。我尝试了 2 个不同版本的函数: public boolean networkAvailable() { Connectiv
我有一个包含大量 Activity 的应用程序。我在 list 中设置了这个: 我还设置了 v11 样式,以便所有 Activity 都使用 v11+ 上的 Holo 主题。 问题是我的所有 Act
我正在开展一个个人项目,该项目将包括一个主屏幕小部件,该小部件使用来自服务的信息进行更新 - 我正在使用 Android 3.1 平板电脑(实体)和 Android 2.3 模拟手机进行开发。 对于
我正在尝试将视频文件从我的内部存储加载到 VideoView。我从服务器下载这些视频文件,然后使用以下代码将它们存储在本地: FileOutputStream out = openFileOutput
我有一个应用程序可以从设备上的联系信息中检索邮寄地址。我使用类似于下面的代码使用联系人 API 检索街道地址、邮政编码、城市等信息。然后我在不同的行上显示地址,用户可以接受它或根据需要更改它。 Str
我只是一个在业余时间编写 iOS 和 Andorid 应用程序的人。我有一些 Android 应用程序,我认为它们很适合进行更新,使它们能够在 Honeycomb 上本地运行。 但是,由于我没有 Ho
我是一名优秀的程序员,十分优秀!