【问题标题】:android MediaPlayer﹕ error (1, -2147483648)android MediaPlayer﹕错误 (1, -2147483648)
【发布时间】:2015-09-18 18:49:09
【问题描述】:

我有一个视频播放器片段,可以使用视频视图和媒体播放器播放视频。我有用相机录制的视频。我正在将视频从 flv 风格转码为 mp4 风格,以便我可以在我的移动应用程序上运行它们。我检查了我的应用程序以播放 mp4 视频(示例视频),它可以完美播放,但是当我将 flv 视频转码为 mp4 时,mp4 版本也可以在浏览器和 VLC 媒体播放器上运行,但不能在我的 android 应用程序中运行。它显示了错误的视频长度(对于 2 分钟的视频,视频长度显示为 87.15 分钟)我看到导引头在移动,但再次在播放器中看不到任何东西,也听不到任何声音。下面是视频在转码前和转码后的 ffmpeg 信息以及错误日志。我可以看到错误 MediaPlayer: error (1, -2147483648) 正在引发。我检查了 stackoverflow 上的错误,并且按照谷歌的建议 MOOV atom 已到位。

请帮忙.......

转码前的ffmpeg信息

Input #0, flv, from '03c82713-f369-462c-b59a-   777a98fb12cc1435052031199':
Metadata:
encoder         : Lavf56.25.101
Duration: 00:03:54.57, start: 0.000000, bitrate: 211 kb/s
Stream #0:0: Video: h264 (High), yuv420p, 688x360, 1000 kb/s, 30.30   fps, 30 tbr, 1k tbn, 60 tbc
Stream #0:1: Audio: aac (LC), 44100 Hz, stereo, fltp, 128 kb/s

转码后的ffmpeg信息

 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'eb7e2f00-c61f-4308-8c86-   222868c03c131435746544880.mp4':
 Metadata:
major_brand     : isom
minor_version   : 512
compatible_brands: isomiso2avc1mp41
encoder         : Lavf56.25.101
Duration: 00:01:15.55, start: 0.036281, bitrate: 344 kb/s
Stream #0:0(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 128 kb/s (default)
Metadata:
  handler_name    : SoundHandler
Stream #0:1(und): Video: h264 (High 10) (avc1 / 0x31637661), yuv420p10le, 426x240, 208 kb/s, 30 fps, 30 tbr, 15360 tbn, 60 tbc (default)
Metadata:
  handler_name    : VideoHandler

错误堆栈跟踪

07-01 19:46:26.501  22067-22067/com.project.test1.android     E/MediaPlayer﹕ Should have subtitle controller already set
 07-01 19:46:26.785  22067-22160/com.project.test1.android      E/MediaPlayer﹕ error (1, -2147483648)
07-01 19:46:26.791  22067-22067/com.project.test1.android     E/MediaPlayer﹕ Error (1,-2147483648)
07-01 19:46:31.651  22067-22067/com.project.test1.android E/MediaPlayer﹕ Attempt to call getDuration without a valid mediaplayer
07-0    1 19:46:31.651  22067-22067/com.project.test1.android E/MediaPlayer﹕ error (-38, 0)
07-01 19:46:31.662  22067-22067/com.project.test1.android E/MediaPlayer﹕ Error (-38,0)
07-01 19:46:31.684  22067-22067/com.project.test1.android     E/MediaPlayer﹕ Attempt to call getDuration without a valid mediaplayer
 07-01 19:46:31.684  22067-22067/com.project.test1.android E/MediaPlayer﹕ error (-38, 0)
07-01 19:46:31.692  22067-22067/com.project.test1.android E/MediaPlayer﹕ Attempt to call getDuration without a valid mediaplayer
07-01 19:46:31.692  22067-22067/com.project.test1.android E/MediaPlayer﹕ error (-38, 0)
 07-01 19:46:31.708  22067-22067/com.project.test1.android E/MediaPlayer﹕ Error (-38,0)
 07-01 19:46:31.708  22067-22067/com.project.test1.android     E/MediaPlayer﹕ Error (-38,0)

【问题讨论】:

    标签: android video-streaming android-mediaplayer android-videoview transcoding


    【解决方案1】:

    对视频播放进行故障排除可能非常令人沮丧,它通常涉及大量试验和错误。我建议开始的第一个地方是更改转码视频的 H264 配置文件。目前,它使用的是“High 10”的源配置文件,但是,大多数版本的 Android 仅支持开箱即用的 H264 Baseline 和 Main Profile(参见 Android 的Supported Media Formats)。

    在 FFMPEG 中指定配置文件的语法可以在 here 找到。一个不错的起点是 Baseline Level 3.0 Profile,方法是在您的输出参数中添加 -profile:v baseline -level 3.0

    【讨论】:

      猜你喜欢
      • 2012-07-17
      • 2013-09-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多