相关疑难解决方法(0)

Android VideoView比例缩放

在Android的VideoView中,有没有办法实现与ImageView.ScaleType.CENTER_CROP相同的效果?

也就是说,我希望我的VideoView能够播放视频,使其在不失真的情况下填满整个屏幕.如果视频宽高比不完全适合屏幕,则应裁剪而不是扭曲.

以下解决方案将填满屏幕,但不保持视频的宽高比:https: //stackoverflow.com/a/6927300/1068656

此解决方案保持视频的宽高比,但不会填满整个屏幕(视频会缩放,直到较长的一侧到达屏幕边缘,从而在侧面引入条形图):https: //stackoverflow.com/a/4855315/1068656

video android android-layout android-videoview

15
推荐指数
2
解决办法
6606
查看次数

在纹理视图上播放视频与视频的宽高比

我正在使用纹理视图在我的服务器上播放视频,但是它会拉伸视频并且无法保持视频的宽高比.但是,我希望保持视频的长宽比,如在应用程序或Instagram应用程序中.

android textureview

13
推荐指数
2
解决办法
6459
查看次数

Android VideoView crop_center

我有一个 RelativeLayout

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_gravity="center"
    android:foregroundGravity="center"
    android:gravity="center"
    android:orientation="horizontal" >

    <VideoView
        android:id="@+id/videoViewPanel"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_gravity="center" 
        android:layout_centerInParent="true"/>

</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)

我需要的是显示视频全屏裁剪.如果我可以与ImageView进行比较,我需要将其显示为crop_center.

如何让VideoView不自动调整视频大小以适应中心,但裁剪中心?

android aspect-ratio android-videoview

9
推荐指数
2
解决办法
1万
查看次数

如何在ExoPlayer-V2中缩放视频 - 全屏播放视频

我玩视频从URLExoplayer,它伸展在调整视频/使用resize_mode,因为我已经在布局文件中使用此提到的我不能够保持视频的纵横比.

我想像CENTER_CROP我们TextureSurfaceimage2中提到的那样进行缩放类型,但我得到输出为image1

我试过以下例子

Exoplayer演示示例

我的输出(图1)和预期输出(图2)

在此输入图像描述

exoplayer布局代码

  <com.google.android.exoplayer2.ui.SimpleExoPlayerView
      android:id="@+id/player_view"
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      app:resize_mode="fill" />
Run Code Online (Sandbox Code Playgroud)

使用这条线,app:resize_mode="fill"它可以在屏幕上显示视频但是垂直拉伸,那么我该如何解决这个问题.

aspect-ratio exoplayer

9
推荐指数
4
解决办法
1万
查看次数

OnVideoSizeChanged从未调用过

我正在使用VideoView来显示视频流.因为我需要将MediaController附加到视图本身,我想防止视频视图导致的黑屏闪烁.我在Nexus 7上测试了下面的代码,就像一个魅力.但是现在我在我的SGS2上测试了它,并且由于某种原因从未调用过OnVideoSizeChanged.

@Override
public void onPrepared(MediaPlayer mp) {
    // TODO Auto-generated method stub
    Log.i("ONPREP", "called");
    mp.setOnVideoSizeChangedListener(new OnVideoSizeChangedListener() {
        @Override
        public void onVideoSizeChanged(MediaPlayer mp, int width, int height) {

            videoview.setMediaController(mc);
            mc.setAnchorView(videoview);
            videoview.setBackgroundColor(Color.TRANSPARENT);

            Log.i("ONSIZECHANGE", "called");
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

视频播放应该是这样,我通过删除OnVideoSizeChangedListener并将代码放在onPrepared方法中进行测试,但这会带回屏幕闪烁问题并使mediacontroller无法连接.此行为也由LogCat中的日志信息显示,ONPREP标记显示但从不显示ONSIZECHANGE.在我的N7上都显示,显然会导致背景颜色发生变化.

这是设置和启动视频的代码:

videoview.setOnPreparedListener(MainActivity.this);
            mc = new MediaController(MainActivity.this);
            mc.setMediaPlayer(videoview);
            videoview.setVideoURI(videourI);
            videoview.start();
Run Code Online (Sandbox Code Playgroud)

那么为什么要在一台设备上调用而不在另一台设备上呢?

编辑:在我的Note 2上测试它,与SGS2上的问题相同.

android

5
推荐指数
1
解决办法
2571
查看次数