android SurfaceView中播放视频 按视频的原始比例播放

    OnPreparedListener mediaPlayerOnPreparedListener = new OnPreparedListener() {
        @Override
        public void onPrepared(MediaPlayer arg0) {
            // 首先取得video的宽和高
            int vWidth = mediaPlayer.getVideoWidth();
            int vHeight = mediaPlayer.getVideoHeight();

            // 该LinearLayout的父容器 android:orientation="vertical" 必须
            LinearLayout linearLayout = (LinearLayout) findViewById(R.id.layoutPlay);
            int lw = linearLayout.getWidth();
            int lh = linearLayout.getHeight();

            if (vWidth > lw || vHeight > lh) {
                // 如果video的宽或者高超出了当前屏幕的大小,则要进行缩放
                float wRatio = (float) vWidth / (float) lw;
                float hRatio = (float) vHeight / (float) lh;

                // 选择大的一个进行缩放
                float ratio = Math.max(wRatio, hRatio);
                vWidth = (int) Math.ceil((float) vWidth / ratio);
                vHeight = (int) Math.ceil((float) vHeight / ratio);

                // 设置surfaceView的布局参数
                LinearLayout.LayoutParams lp= new LinearLayout.LayoutParams(vWidth, vHeight);
                lp.gravity = Gravity.CENTER;
                surfaceView.setLayoutParams(lp);
            }
            // 然后开始播放视频
            mediaPlayer.start();
        }
    };
时间: 2024-10-10 01:22:34

android SurfaceView中播放视频 按视频的原始比例播放的相关文章

Android SurfaceView + MediaPlayer实现分段视频无缝播放

Android当中实现视频播放的方式有两种,即:通过VideoView实现或者通过SurfaceView + MediaPlayer实现. 由浅至深,首先来看下想要在Android上播放一段视频,我们应当怎么做. 前面我们已经提到了两种方式,这里我们来看一下具有更好的拓展性的第二种方式,也就是通过SurfaceView + MediaPlayer进行实现. 首先,我们来定义一个布局文件如下,为了方便起见,我们仅仅只在该布局中定义了一个SurfaceView: <?xml version="

Android SurfaceView播放视频

先来介绍一下大部分软件如何解析一段视频流.首先它需要先确定视频的格式,这个和解码相关, 不同的格式视频编码不同,不是这里的重点.知道了视频的编码格式后,再通过编码格式进行解码,最后得到一帧一帧的图像,并把这些图像快速的显示在界面上, 即为播放一段视频.SurfaceView在Android中就是完成这个功能的. IBM POWER8通过一年充分融入了"开放"基因,现在有哪些成效?快来注册观看直播,一起拥抱开源的力量. --> SurfaceView 先来介绍一下大部分软件如何解析

实验6 在应用程序中播放音频和视频

实验报告 课程名称 基于Android平台移动互联网开发 实验日期 4月15日 实验项目名称 在应用程序中播放音频和视频 实验地点 S3002 实验类型 □验证型    √设计型    □综合型 学  时 一.实验目的及要求(本实验所涉及并要求掌握的知识点) 实现在应用程序中处理音频和视频. [要求] 1) 实现播放音频,音频播放控制: 2) 实现播放视频,视频播放控制: 3) 使用Service服务播放项目源文件中的音乐. 二.实验环境(本实验所使用的硬件设备和相关软件) (1)PC机 (2)

实验六 在应用程序中播放音频和视频

实验报告 课程名称 基于Android平台移动互联网开发 实验日期 2016年4月15日 实验项目名称 在应用程序中播放音频和视频 实验地点 S30010 实验类型 □验证型    √设计型    □综合型 学  时 2 一.实验目的及要求(本实验所涉及并要求掌握的知识点) 1.实现在应用程序中处理音频和视频. 2.实现播放音频,音频播放控制: 3. 实现播放视频,视频播放控制: 4. 使用Service服务播放项目源文件中的音乐. 二.实验环境(本实验所使用的硬件设备和相关软件) (1)PC机

使用Vitamio打造自己的Android万能播放器(7)——在线播放(下载视频)

前言 本章将实现非常实用的功能——下载在线视频.涉及到多线程.线程更新UI等技术,还需思考产品的设计,如何将新加的功能更好的融入到现有的产品中,并不是简单的加一个界面就行了,欢迎大家交流产品设计和技术细节实现! 声明 欢迎转载,但请保留文章原始出处:) 博客园:http://www.cnblogs.com 农民伯伯: http://over140.cnblogs.com 系列 1.使用Vitamio打造自己的Android万能播放器(1)——准备 2.使用Vitamio打造自己的Android万

【Android开发VR实战】二.播放360&#176;全景视频

转载请注明出处:http://blog.csdn.net/linglongxin24/article/details/53924006 本文出自[DylanAndroid的博客] [Android开发VR实战]二.播放360°全景视频 VR即Virtual Reality虚拟现实.虚拟现实技术是一种可以创建和体验虚拟世界的计算机仿真系统它利用计算机生成一种模拟环境是一种多源信息融合的交互式的三维动态视景和实体行为的系统仿真使用户沉浸到该环境中. 那么,如何在Android中去开发VR功能的APP

Android开发之使用VideoView实现视频的横屏播放、去除边框

做项目需要播放一个引导视频,本以为很简单,结果动手时发现总有瑕疵,幸好有度娘,现把收获总结如下: 一.实现视频播放: 注明我这里要播放的是Android项目中的资源文件,而不是访问SD卡播放视频. 1.先把要播放的视频放到res/raw目录下 2.视频格式必须是Android支持的格式(3gp,mp4,wmv),据说swf不支持,暂未试过.并且视频文件命名不能有大写字母,必须是小写字母.数字或下划线. 3.布局文件中添加VideoView组件 4.创建个String类型对象保存uri 5.调用V

Android 使用PLDroidPlayer播放网络视频 根据视频角度自动旋转

最近因为项目需求 ,需要播放网络视频 ,于是乎 研究了一番 ,说说我遇到的那些坑 现在市面上有几个比较主流好用的第三方框架 Vitamio ( 体积比较大,有商业化风险 github:https://github.com/yixia/VitamioBundle/) ijkplayer(B站下开源的框架 体积大 配置环境比较麻烦 github:https://github.com/Bilibili/ijkplayer ) PLDroidPlayer(七牛根据ijkplayer二次开发的 定制简单

Android 使用PLDroidPlayer播放网络视频 依据视频角度自己主动旋转

近期由于项目需求 .须要播放网络视频 .于是乎 研究了一番 ,说说我遇到的那些坑 如今市面上有几个比較主流好用的第三方框架 Vitamio ( 体积比較大,有商业化风险 github:https://github.com/yixia/VitamioBundle/) ijkplayer(B站下开源的框架 体积大 配置环境比較麻烦 github:https://github.com/Bilibili/ijkplayer ) PLDroidPlayer(七牛依据ijkplayer二次开发的 定制简单