1

我正在尝试播放已添加到raw文件夹中的 .mp4 视频文件。结果是我总是error (1, -2147483648)在 LogCat 中得到一个。

经过一些研究,我注意到这是由不受支持的编解码器/格式引起的。但是最近两天我根据http://developer.android.com/guide/appendix/media-formats.html在 Adob​​e Premiere 中渲染了视频?在所有支持的格式和更多。结果总是一样的:我收到错误和“无法播放此视频”。当应用程序启动时。

我的 JAVA 代码是这样的:

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_FULLSCREEN);
       getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

       VideoView vv = (VideoView) findViewById(R.id.videoView);

       String fileName = "//BioLab/res/raw/sequence";

       vv.setVideoURI(Uri.parse(fileName));
       vv.start();

    }
}

主要活动是这样的:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >


<VideoView android:layout_height="wrap_content" 
        android:layout_width="wrap_content" 
        android:id="@+id/videoView"/>

</RelativeLayout>

我看过他们播放全屏视频的游戏,比如公司徽标视频。他们是怎么做到的呢?必须有一个通用的方法。

注意:我在 java 代码中使用路径 "//BioLab/res/raw/sequence",因为如果我使用 "/BioLab/res/raw/sequence.mp4"或者“android.resource://” + getPackageName() +”/”+R.raw.video我得到另一个错误

日志猫:error opening trace file: No such file or directory (2)

4

1 回答 1

-1

error (1, -2147483648)通常意味着您提供 MediaPlayer 的链接(在您的情况下为 videoview)无效或文件已损坏。
您尝试从 RAW 文件夹中获取文件的方式很可疑。
尝试以下。
我假设您尝试播放的文件的名称是序列。**

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_FULLSCREEN);
       getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
        setContentView(R.layout.activity_main);

       VideoView vv = (VideoView) findViewById(R.id.videoView);
       String path = "android.resource://" + getPackageName() +"/"+ R.raw.sequence;
       Log.d("TAG", path);

       Uri url=Uri.parse(path);

       vv.setVideoURI(url);
       vv.start();
       vv.requestFocus();

    }
}
于 2013-04-18T05:21:23.750 回答