2

我正在尝试开发一个嵌入了许多视频的应用程序,我想调用 Android 的媒体播放器,视频位于 VideoView 对象上。但是,我收到这些奇怪的错误:

  • I/MediaPlayer(2874):信息(1,26)
  • E/MediaPlayer(2874):错误(-4,-4)
  • D/VideoView(2874):错误:-4,-4

当我尝试播放 mp4 视频或其他不是从我的手机录制的 3gp 视频时。我的代码是这样的:

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.widget.MediaController;
import android.widget.VideoView;

public class PlayTest2 extends Activity{
private MediaController ctlr;
public void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    setContentView(R.layout.test2);

    try {
        VideoView video = (VideoView) findViewById(R.id.test2);
        // Load and start the movie
                video.setVideoPath("android.resource://com.example.child.protector/raw/output");
        ctlr=new MediaController(this);
        ctlr.setMediaPlayer(video);
        video.setMediaController(ctlr);
        video.start();
        //video.requestFocus();//this line is new
    }
    catch (Exception e) {
       Log.e("---------- this is my app --------", "error: " + e.getMessage(), e);

    }
}
}

我的布局是这样的:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">

<VideoView
android:id="@+id/test2"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_gravity="center"
/>
</FrameLayout>

我的代码有问题吗?

我知道我的文件就在那里。我已经使用示例 3GP 视频运行此代码,它运行良好(但我从手机录制了视频并将其复制到我的计算机,然后重新打包到我的应用程序中,位于 Eclipse 的 /res/raw 文件夹下)。但是,问题是由于某种原因,我的媒体播放器只能播放某些 3GPP 文件。如果我尝试使用 MobileMediaConverter 将 MP4 转换为 3GP,它会在我的笔记本电脑上播放,但不会在这个应用程序中播放。另请注意,如果我将视频作为文件打开(换句话说,调用我的三星 Galaxy S 手机上的默认视频播放器)它工作得很好(这意味着我的手机具有这些功能)。所以我想知道:

  • 这是代码有问题吗?
  • 这更像是将 mp4 转换为 3gp 的错误吗?

任何帮助将不胜感激。谢谢!!

4

1 回答 1

1

问题是某些转换器(具有不同设置)将创建一个无法在我的三星 Galaxy android 设备上运行的视频文件。这里的代码是通用的,但我认为在进行视频转换时编解码器必须类似于 H.264。然后我下载了大约 5 个视频转换器,其中 2 个实际上可以制作我的设备可以播放的 3GPP。所以如果其他人有这个问题,我会建议尝试一堆视频转换器,具有不同的编解码器/音频设置。我最终能够找到一个适用于我的特殊情况的

于 2011-11-23T04:04:18.393 回答