在ViewPager中旋转视频SurfaceView

时间:2014-02-04 14:00:14

标签: java android android-mediaplayer

我使用SurfaceView作为MediaPlayer的显示器,但视频是侧面的,我需要旋转它。我尝试使用SurfaceView.setRotation(90),但这给了我一个黑色的视图。

如果我将旋转设置为低于90度的任何度数,则视频会向右转换(在ViewPage中的另一页内容后面推送)相对数量。

以下是我用于创建视图和播放视频的代码:

final SurfaceView surface = new SurfaceView(getActivity());
surface.setRotation(90);

surface.getHolder().addCallback(new SurfaceHolder.Callback(){
    @Override
    public void surfaceChanged(SurfaceHolder holder, int format, int width,int height) {}

    @Override
    public void surfaceCreated(SurfaceHolder holder) {
        holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);

        mPlayer = new MediaPlayer();
        mPlayer.setDisplay(surface);

        try {
            mPlayer.setDataSource(url);
            mPlayer.setLooping(true);

            mPlayer.setVideoScalingMode(MediaPlayer.VIDEO_SCALING_MODE_SCALE_TO_FIT_WITH_CROPPING);
        } catch (IOException e) {
            e.printStackTrace();
        }

        mPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
            @Override
            public void onPrepared(MediaPlayer mp) {
                mp.start();
            }
        });

        mPlayer.prepareAsync();
        mPlayer.setScreenOnWhilePlaying(true);
     }

     @Override
     public void surfaceDestroyed(SurfaceHolder holder) {
         mPlayer.stop();
         mPlayer.release();
     }
});

如上所述,我将表面添加到ViewPage。视频播放,除旋转外,其他一切都有效。

我尝试了mPlayer.setSurface(holder.getSurface())同样的结果。

我尝试使用TextureView但成效有限。它旋转,但我无法缩放它并保持纵横比与裁剪。

尝试锁定画布并旋转支架的画布,但无论在何种程度上,我所拥有的只是一个黑色视图。

0 个答案:

没有答案