Android使用NDK的nativewindow和surfaceView来播放视频,切换为横屏显示图片被挤压了


   应用大体是这样的,我在ndk端使用socket来接受网络摄像机的视频流然后使用ffmpeg解码,再使用ndk里面的ativewindow来播放,这些都已经做好了。然后在java代码这一端,使用surfaceView来播放,具体的代码为:
@Override
    public void surfaceChanged(SurfaceHolder surfaceHolder, int format, int width, int height) {
        // TODO Auto-generated method stub
        Sip1303Decoder.setSurface(surfaceHolder.getSurface(), width, height);//这个是ndk里的方法
    }

    @Override
    public void surfaceCreated(SurfaceHolder surfaceHolder) {
        // TODO Auto-generated method stub
    }

    @Override
    public void surfaceDestroyed(SurfaceHolder surfaceHolder) {
        // TODO Auto-generated method stub
        Sip1303Decoder.setSurface(null, 0, 0);
    }

对应的ndk方法为:setSurface(JNIEnv *env, jobject pSurface, int m_width, int m_height)
window = ANativeWindow_fromSurface(env, pSurface);
ANativeWindow_setBuffersGeometry(window, 0, 0, WINDOW_FORMAT_RGBA_8888);
然后竖屏播放正常,显示为:
当切换为横屏时(屏幕切换时,我设置了surfaceView的layoutparams属性,宽度和高度分别是手机屏幕的高度和宽度,也就是充满屏幕显示),然后视频就显示成这样了:
当然我想要视频充满屏幕,每次切换成竖屏时都是正常的,因为不理解上面ndk方法里的那两句代码,所以是不是我哪里没写好?

你可能感兴趣的:(Android使用NDK的nativewindow和surfaceView来播放视频,切换为横屏显示图片被挤压了)