我试图以播放列表的形式一个接一个地播放视频.我正在使用Android Exoplayer来播放我的文件,但是没有像媒体播放器那样的听众能够收听媒体文件的结尾.请告诉我一个方法使用exoplayer .thankyou听媒体文件的结尾..
Iam使用Exoplayer在android中连续播放视频作为播放列表。当我播放低质量的mp4视频时,它可以正常工作,但是当我尝试在播放列表中播放一两个视频后,尝试播放较高质量的mp4视频时,屏幕上不显示任何内容,并且日志显示以下异常
com.google.android.exoplayer.MediaCodecTrackRenderer $ DecoderInitializationException:解码器初始化失败:OMX.amlogic.avc.decoder.awesome,MediaFormat(video / avc,198826、1920、1080,-1.0,-1,-1,-1, -1,-1)
即使我第一次播放相同的高质量视频,然后再次播放,也会抛出此异常。当视频大小超过80mb时,会引发此异常。是否存在某些缓冲区大小问题?有人能指导我吗?非常感谢你
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.adplayertexture);
AdplayerTexture=(TextureView)findViewById(R.id.AdPlayerTexture);
AdplayerTexture.setBackgroundColor(Color.BLACK);
AdplayerTexture.setSurfaceTextureListener(this);
}
@Override
public void onSurfaceTextureAvailable(SurfaceTexture surface, int width,
int height) {
AdPlayerSurface = new Surface( surface);
playMedia(AdPlayerSurface);
}
private void playMedia(Surface surface){
mediaplayer=new ExoPlayer();
mediaplayer.play(this,Videopathlist[CurrentVideoIndex],surface;
mediaplayer.addListener(this);
}
@Override
public void onStateChanged(boolean playWhenReady, int playbackState) {
if (playbackState == ExoPlayer.STATE_ENDED) {
//releasing the resources
mediaplayer.DestroyPlayer();
AdPlayerSurface.release();
AdPlayerSurface=new Surface(AdplayerTexture.getSurfaceTexture());
CurrentVideoIndex++;
playMedia(AdPlayerSurface);
}
Run Code Online (Sandbox Code Playgroud)
这是root2mediaplayer类中的play()函数
public void playMedia(Activity playerActivity,String mediapath,final long Position,Surface mediasurface){
String Systemroot …Run Code Online (Sandbox Code Playgroud) Iam试图使用纹理视图渲染视频动画,动画效果很好,但是当我将纹理缩放到不同大小时,媒体播放器不会缩放以适应纹理的大小,视频总是在后台播放全屏我只能看到视频的一部分,当我缩放纹理
我的代码在运行Android 4.0的一些Android设备上工作正常,但不适用于更高版本的Android设备.继承我的动画代码,请告诉我问题出在哪里..
public class MainActivity extends Activity implements TextureView.SurfaceTextureListener{
AnimationSet animset;
TextureView myTexture;
MediaPlayer mMediaPlayer;
Surface s;
int height;
static final String LogFileName = "Log";
int width;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
myTexture = new TextureView(this);
myTexture.setSurfaceTextureListener(this);
setContentView(myTexture);
}
@Override
public void onSurfaceTextureAvailable(SurfaceTexture arg0, int arg1,
int arg2) {
String mediaStorageDir = Environment.getExternalStoragePublicDirectory(
Environment.DIRECTORY_DOWNLOADS).getAbsolutePath();
s = new Surface(arg0);
try {
mMediaPlayer= new MediaPlayer();
mMediaPlayer.setSurface(s);
mMediaPlayer.setDataSource(mediaStorageDir+"/AirIndia.mp4");
mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mMediaPlayer.prepareAsync();
mMediaPlayer.setLooping(true);
mMediaPlayer.setOnPreparedListener(new OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
mMediaPlayer.start(); …Run Code Online (Sandbox Code Playgroud)