Android TextureViewのドキュメントでは、 TextureView を使用してビデオを再生できると書かれています。しかし、これを行う方法の例が見つからないようです。誰か知っていますか?
textureView
ビデオをアニメーション化したいので、を使用する必要があります。カメラからのビデオではなく、.3gp/.mp4 形式でビデオを再生したい :)
どんな助けでも大歓迎です..
アップデート:
ソリューションはコミュニティ wiki の回答として投稿されます
Android TextureViewのドキュメントでは、 TextureView を使用してビデオを再生できると書かれています。しかし、これを行う方法の例が見つからないようです。誰か知っていますか?
textureView
ビデオをアニメーション化したいので、を使用する必要があります。カメラからのビデオではなく、.3gp/.mp4 形式でビデオを再生したい :)
どんな助けでも大歓迎です..
アップデート:
ソリューションはコミュニティ wiki の回答として投稿されます
これを行う方法は次のとおりです:(質問の作成者による解決策、質問の更新として投稿したもの)
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 = new TextureView(this);
mPreview.setLayoutParams(new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
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();
}
}
そして、それをアニメーション化することは本当にうまくいきます。
私は同じ問題を抱えていて、TextureView
. これが誰かに役立つなら、私は見つけsetScaleX
て非常に便利です。http://developer.android.com/reference/android/view/View.html#setScaleX%28float%29setScaleY
ただし、API 16 以降のみをターゲットにしている場合:
mediaPlayer.setVideoScalingMode(MediaPlayer.VIDEO_SCALING_MODE_SCALE_TO_FIT_WITH_CROPPING);
やるべきです:)