播放视频TextureView播放视频TextureView(Playing video on Te

2019-05-14 11:54发布

在Android中的文档TextureView它说,你可以使用一个TextureView播放视频:但我似乎无法找到如何做到这一点的任何例子。 有人知道吗?

我需要使用textureView ,因为我想动画视频。 我想在名为.3gp / .MP4格式,没有摄像头的视频播放视频:)

任何帮助,将不胜感激..

更新:

解决方案张贴作为一个社会维基答案

Answer 1:

这里是你如何能做到这(对这个问题笔者的解决方案,他贴在这个问题的更新)

Public class MediaPlayerDemo_Video extends Activity implements TextureView.SurfaceTextureListener {


 private MediaPlayer mMediaPlayer;

 private TextureView mPreview;

 @Override
 public void onCreate(Bundle icicle) {

      super.onCreate(icicle);

      mPreview = (TextureView) findViewById(R.id.surface);
      mPreview.setSurfaceTextureListener(this);
      extras = getIntent().getExtras();
      setContentView(mPreview);
 }

 @Override
 public void onSurfaceTextureAvailable(SurfaceTexture surface, int width, int height) {
 Surface s = new Surface(surface);

 try {
       mMediaPlayer= new MediaPlayer();
       mMediaPlayer.setDataSource("http://daily3gp.com/vids/747.3gp");
       mMediaPlayer.setSurface(s);
       mMediaPlayer.prepare();
       mMediaPlayer.setOnBufferingUpdateListener(this);
       mMediaPlayer.setOnCompletionListener(this);
       mMediaPlayer.setOnPreparedListener(this);
       mMediaPlayer.setOnVideoSizeChangedListener(this);
       mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
       mMediaPlayer.start();
      } catch (IllegalArgumentException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (SecurityException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IllegalStateException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }   
} 

而其动画作品真的很好。



Answer 2:

我有同样的问题,并有解决它TextureView 。 我发现setScaleXsetScaleY非常有用的,如果这能帮助任何人。 http://developer.android.com/reference/android/view/View.html#setScaleX%28float%29

不过,如果你只指定API 16+:

mediaPlayer.setVideoScalingMode(MediaPlayer.VIDEO_SCALING_MODE_SCALE_TO_FIT_WITH_CROPPING);

要做到这一点:)



Answer 3:

setContentView(mPreview); 需要之前被称为

mPreview = (TextureView) findViewById(R.id.surface);
mPreview.setSurfaceTextureListener(this);


文章来源: Playing video on TextureView