要从res/raw/目录逐帧读取.mp4文件,你可以使用Android的MediaPlayer和SurfaceView来实现。下面是一个包含代码示例的解决方法:
首先,在res/raw/目录下放置.mp4文件,命名为video.mp4。
在布局文件中添加一个SurfaceView组件:
import android.media.MediaPlayer;
import android.net.Uri;
import android.os.Bundle;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.View;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity implements SurfaceHolder.Callback {
private MediaPlayer mediaPlayer;
private SurfaceView surfaceView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
surfaceView = findViewById(R.id.surfaceView);
SurfaceHolder surfaceHolder = surfaceView.getHolder();
surfaceHolder.addCallback(this);
mediaPlayer = MediaPlayer.create(this, R.raw.video);
mediaPlayer.setLooping(true);
}
@Override
public void surfaceCreated(SurfaceHolder surfaceHolder) {
mediaPlayer.setDisplay(surfaceHolder);
}
@Override
public void surfaceChanged(SurfaceHolder surfaceHolder, int i, int i1, int i2) {
// Do nothing
}
@Override
public void surfaceDestroyed(SurfaceHolder surfaceHolder) {
mediaPlayer.stop();
mediaPlayer.release();
}
public void startVideo(View view) {
mediaPlayer.start();
}
public void pauseVideo(View view) {
mediaPlayer.pause();
}
public void stopVideo(View view) {
mediaPlayer.stop();
mediaPlayer.prepareAsync();
}
}
这样,你就可以从res/raw/目录逐帧读取.mp4文件并在SurfaceView上播放了。