标签: android-videoview

Android中的导航抽屉和VideoView

我正在使用导航抽屉和tablayout.我的标签中有一个视频,一开始看不到,但我能听到声音.一旦我设定

video_view.setZOrderOnTop(true);
Run Code Online (Sandbox Code Playgroud)

我也可以看到视频,但这会导致导航抽屉出现问题.

当我滑动它时,视频不会像所有其他元素一样隐藏在导航抽屉后面.

在此输入图像描述

如果我不使用

video_view.setZOrderOnTop(true);
Run Code Online (Sandbox Code Playgroud)

然后我的抽屉工作正常.

main_activity.xml

<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">

<!-- Framelayout to display Fragments -->
<android.support.design.widget.CoordinatorLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <android.support.design.widget.AppBarLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">

        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:background="?attr/colorPrimary"
            app:layout_scrollFlags="scroll|enterAlways"
            app:popupTheme="@style/ThemeOverlay.AppCompat.Light">

                <ImageView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:src="@drawable/menuwhite2"
                    android:id="@+id/custom_home"
                    android:gravity="center"
                    android:layout_gravity="right"
                    android:layout_marginRight="10dp"/>

                <android.support.design.widget.TabLayout
                    android:id="@+id/tabs"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    app:tabMode="fixed"
                    app:tabGravity="fill"
                    />

        </android.support.v7.widget.Toolbar>
    </android.support.design.widget.AppBarLayout>

    <android.support.v4.view.ViewPager
        android:id="@+id/viewpager"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_behavior="@string/appbar_scrolling_view_behavior"  />
</android.support.design.widget.CoordinatorLayout>


<!-- Listview to display slider menu -->
<ListView
    android:id="@+id/list_slidermenu"
    android:layout_width="240dp"
    android:layout_height="match_parent"
    android:layout_gravity="end"
    android:choiceMode="singleChoice"
    android:divider="@color/list_divider"
    android:dividerHeight="1dp"
    android:listSelector="@drawable/list_selector"
    android:background="@color/list_background"/>
Run Code Online (Sandbox Code Playgroud)

tab_fragment.xml

<?xml …
Run Code Online (Sandbox Code Playgroud)

android navigation-drawer android-videoview android-tablayout

17
推荐指数
1
解决办法
1080
查看次数

播放前后的VideoView黑色闪光灯

我有一个VideoView,我想用它来播放一个movieclip.我像这样使用它来播放它并且它有效.

VideoView vv = new VideoView(this);
vv.setVideoURI(Uri.parse("android.resource://cortex2.hcbj/raw/intro"));
setContentView(vv);
vv.start();
Run Code Online (Sandbox Code Playgroud)

但是我在影片剪辑之前和之后看到了黑色闪光.闪光本身不是一个大问题,但它的黑暗是.背景是白色的,所以如果闪光灯是白色的,或者如果它消失了就可以了.

java android android-videoview

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

如何在Android上确定视频宽度和高度

我有一个视频文件,我想获得视频的宽度和高度.我不想玩它,只是为了获得尺寸.我试过使用MediaPlayer:

MediaPlayer mp = new MediaPlayer();
mp.setDataSource(uriString);
mp.prepare();
int width = mp.getVideoWidth();
int height = mp.getVideoHeight();
Run Code Online (Sandbox Code Playgroud)

但它的宽度和高度返回0,因为VideoSizeChangedEvent尚未触发.如何获得视频的宽度和高度?

UPD:我需要API版本7

video android media-player android-videoview

16
推荐指数
5
解决办法
2万
查看次数

应用程序在本机4k中显示其图像内容的机制

据我了解,目前UHD视频内容主要是通过4k电视直播HEVC codec.

我想了解具有UHD图像内容的应用如何以原生方式显示其图像内容4K

我正在寻找的是渲染4k(3840*2060)jpeg图像.我的显示器支持4k渲染,SOC甚至可以输出4k.我正在寻找框架中的修改,以便所有具有4k图像的应用程序可以在我的设备上呈现它们而不降低缩放.

实际上我正在努力想出API其他人可以使用的套装.但我的主要困惑是:对于jpeg图像,我创建了一个4k表面,但它们也是其他表面(按钮等).它们由表面抛油环渲染而成1280*720.

现在用这些其他表面组合我的4k表面的最佳方法是什么?我应该在哪里升级这些表面以及在哪里组合它们?

android android-ndk google-tv smart-tv android-videoview

16
推荐指数
1
解决办法
1930
查看次数

检测VideoVIew是否正在缓冲

有谁知道是否有可能检测到VideoView何时缓冲?

我想在视频缓冲时显示ProgressDialog.

到目前为止,我尝试使用OnPreparedListener,但这仅在首次加载视频时才有效.如果正在播放视频并且用户将擦洗条移动到不同的点,则视频仍然"准备好",即使它正在缓冲.

我也试过(我知道这很糟糕)AsyncThread只是忙等待isPlaying():

private class BufferTask extends AsyncTask<Void, Void, Void> {

  protected Void doInBackground(Void...voids) {
    final VideoView videoView = (VideoView)findViewById(R.id.video);
    while (!videoView.isPlaying()) { }
    return null;
  }

 protected void onPostExecute(Void v) {
     // Hide the dialog here...
 }
}
Run Code Online (Sandbox Code Playgroud)

这不起作用,因为只要你调用start(),即使它正在缓冲,VideoView似乎也被认为是在播放.

我能想到的唯一解决方案是构建一个自定义的VideoView类型类,以便我可以访问它的MediaPlayer实例.

有任何想法吗?谢谢阅读.

android media-player android-videoview

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

如何在某个特定位置观看视频内的视频?

我目前正在尝试实施一个视频视频,该视频将显示特定位置的视频.我可以毫无问题地显示全屏视频.但是每当我试图在一个帧内显示该视频时(例如一个小矩形),我只能在该视图中显示一部分视频.我无法将视频放入该视图中.

我已经在android中查找了很多关于缩放视频的链接,但是我无法找到任何方法来做到这一点.有关该问题的任何帮助都会有所帮助.

我正在使用的是我有2个不同的课程.其中一个是我的视频活动类,另一个是帮助类:

public class VideoViewCustom extends VideoView {
    private int mForceHeight = 0;
    private int mForceWidth = 0;
    public VideoViewCustom(Context context) {
        super(context);
    }     
    public VideoViewCustom(Context context, AttributeSet attrs) {
        this(context, attrs, 0);
    }

    public VideoViewCustom(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }

    public void setDimensions(int w, int h) {
        this.mForceHeight = h;
        this.mForceWidth = w;
    }

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
         super.onMeasure(widthMeasureSpec, heightMeasureSpec);
         setMeasuredDimension(mForceWidth, mForceHeight);
    }
}
Run Code Online (Sandbox Code Playgroud)

该课程帮助我正确设置videoview的尺寸,但我无法使视频适合该区域.我的意思是我无法缩放视频以适应该区域.我不知道android是否自动缩放到给定的尺寸但我不能这样做.

video android android-videoview

15
推荐指数
1
解决办法
2300
查看次数

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
查看次数

全屏视频播放器 - 导航栏后面的mediacontroller

我的mediacontroller有一个问题,它隐藏在导航栏后面(ICS上的软导航键).首先是OK(第一张图片),但是当第一次隐藏导航栏时,mediacontroller被调整大小以适应屏幕(正确),但是当再次出现导航栏时(第二张图片)不会调整大小.广告也被移到后面(隐藏屏幕截图).

如果我理解文档正确,fitSystemWindows应该负责调整大小.但它不起作用.

我怎样才能做到这一点?谢谢你的帮助.

我正在Galaxy Nexus上测试这个.

XML布局:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/playerLayout"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:animateLayoutChanges="true"
android:background="@color/black" >
<mynamespace.BKDVideoView
    android:id="@+id/videoview"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"/>
<mynamespace.SubtitleTextView
    android:id="@+id/subtitleText"
    style="@style/SubtitleOverlayText"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="bottom|center_horizontal"
    android:layout_marginBottom="30dp"
    android:gravity="center"
    android:visibility="gone"
    android:fitsSystemWindows="true"
    android:animateLayoutChanges="true"/>
<FrameLayout
    android:id="@+id/adLayout"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="top|right"
    android:fitsSystemWindows="true"
    android:animateLayoutChanges="true"/>
<FrameLayout
    android:id="@+id/videoMediaControllerHolder"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    android:animateLayoutChanges="true"/>
Run Code Online (Sandbox Code Playgroud)

BKDVideoView是来自VideoView的GrepCode的副本,带有一些自定义.我为MediaController做了同样的事情.在MediaController中,我正在调用这样的隐藏:

int newVis = SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | SYSTEM_UI_FLAG_LAYOUT_STABLE;
    if (!visible)
    {
        newVis |= SYSTEM_UI_FLAG_LOW_PROFILE | SYSTEM_UI_FLAG_FULLSCREEN | SYSTEM_UI_FLAG_HIDE_NAVIGATION;
    }

    // mSystemUiHolder -> FrameLayout (playerLayout)
    mSystemUiHolder.setSystemUiVisibility(newVis);
Run Code Online (Sandbox Code Playgroud)

什么时候没事 当它被覆盖

更新:如果您遇到同样的问题,请在接受的答案中查看评论.对于需要全屏使用sammyboy代码的视图.感谢两者.对不起,我需要太多时间搞清楚这一点并且无法给你积分:(

android fullscreen android-videoview

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

使用FFMPEG和JNI压缩视频

我想创建一个Android应用程序,它可以找到一个视频文件(超过300 MB)并将其压缩到较小的mp4文件.

我已经尝试过这个了

由于您要压缩小尺寸视频(低于100 mb),因此本教程非常有效

所以我尝试使用JNI实现它.

我设法用这个来构建ffmpeg

但目前我想做的是压缩视频.我对JNI知之甚少.但我尝试使用以下链接了解它

如果有人可以指导我在打开文件之后压缩视频的步骤,那么使用非常棒的JNI,谢谢

java-native-interface android ffmpeg android-videoview

15
推荐指数
1
解决办法
8018
查看次数

使用VideoView,如何删除"无法播放此视频"的提示消息?

我们的应用程序播放一组视频,有时我们无法播放此视频提醒消息.

如果该视频尚未下载,我们要么是从SD卡播放视频,要么是流式传输.大多数情况下,错误的互联网连接流式传输时出现错误.

我从阅读一些帖子和博客中了解到这个错误的原因很少.

但是,现在我想在发生错误时播放下一个视频而不显示该错误消息.

我使用了下面的监听器,

video.setOnErrorListener(new OnErrorListener() {

            @Override
            public boolean onError(MediaPlayer mp, int what, int extra) {
                Log.d("video", "setOnErrorListener ");
                return false;
            }
        });
Run Code Online (Sandbox Code Playgroud)

错误发生时调用方法,但无法停止显示该警报消息.

有没有办法停止显示该警报消息?

提前致谢.

video alert android android-videoview

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