在Android TextureView的文档中,它表示您可以使用TextureView播放视频: 但我似乎找不到任何示例说明如何执行此操作。有人知道吗?在TextureView上播放视频
我需要使用textureView
,因为我想为动画制作视频。我想在名为.3gp/.MP4格式播放视频,而不是从相机:)
任何帮助,将不胜感激视频..
UPDATE:
解决方案张贴作为一个社会维基答案
在Android TextureView的文档中,它表示您可以使用TextureView播放视频: 但我似乎找不到任何示例说明如何执行此操作。有人知道吗?在TextureView上播放视频
我需要使用textureView
,因为我想为动画制作视频。我想在名为.3gp/.MP4格式播放视频,而不是从相机:)
任何帮助,将不胜感激视频..
UPDATE:
解决方案张贴作为一个社会维基答案
这里是你如何能做到这: (对这个问题笔者的解决方案,他贴作为问题的更新)
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);
}
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();
}
}
动画效果非常好。
使用TextureView代替SurfaceView解决了视频播放时的闪烁问题。谢谢! –
什么是onCreate中的R.id.surface和extras? –
@PranoyC TextureView,显然。 –
你setContentView(mPreview);
需要前
mPreview = (TextureView) findViewById(R.id.surface);
mPreview.setSurfaceTextureListener(this);
在这里你回答的问题不纠正答案..使用评论来纠正它。 – MBH
叫我有同样的问题,并用TextureView
解决它。我发现setScaleX
和setScaleY
非常有用,如果这有助于任何人。 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);
应该这样做:)
你打开硬件上的活动? – Ronnie
我只是将它设置在清单:) – Zelleriation
你有什么想法为什么onSurfaceTextureAvailable从未被调用过? –