今天按照《Android应用开发揭秘》中的代码做了个播放视频的小例子,播放后发现有声无音,发现是视频分辨率过大造成的。
使用格式工厂工具把MP4转换一下就可以了。
转换的配置如图

转换后的文件属性如下:

那个帧速率是重点,要调低。
相关的代码:
package com.yarin.android.Examples_07_03;
import android.app.Activity;
import android.content.pm.ActivityInfo;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.MediaController;
import android.widget.VideoView;
import android.media.*;
import android.view.Window;
import android.view.WindowManager;
public class Activity01 extends Activity
{
private static final String TAG="VideoView";
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
//不要标题
requestWindowFeature(Window.FEATURE_NO_TITLE);
//设置成全屏模式
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
//强制为横屏
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
setContentView(R.layout.main);
final VideoView videoView = (VideoView) findViewById(R.id.VideoView01);
Button PauseButton = (Button) this.findViewById(R.id.PauseButton);
Button LoadButton = (Button) this.findViewById(R.id.LoadButton);
Button PlayButton = (Button) this.findViewById(R.id.PlayButton);
LoadButton.setOnClickListener(new OnClickListener()
{
public void onClick(View arg0)
{
videoView.setVideoPath("/mnt/sdcard/aaoceans-clip.mp4");
videoView.setMediaController(new MediaController(Activity01.this));
videoView.requestFocus();
}
});
PlayButton.setOnClickListener(new OnClickListener()
{
public void onClick(View arg0)
{
Log.v(TAG,"start");
videoView.start();
Log.v(TAG,"start OK");
}
});
PauseButton.setOnClickListener(new OnClickListener()
{
public void onClick(View arg0)
{
videoView.pause();
}
});
}
}
main.xml中要添加
android:id="@+id/VideoView01"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
android:layout_width="80px"
android:layout_height="wrap_content"
android:text="装载"
android:layout_x="30px"
android:layout_y="300px"
/>
android:layout_width="80px"
android:layout_height="wrap_content"
android:text="播放"
android:layout_x="120px"
android:layout_y="300px"
/>
android:layout_width="80px"
android:layout_height="wrap_content"
android:text="暂停"
android:layout_x="210px"
android:layout_y="300px"
/> VideoView的布局属性要设成fill_parent.