Android 仿今日头条视频播放控件JieCaoVideoPlayer(几行代码快速实现)

 

Android 仿今日头条视频播放控件JieCaoVideoPlayer(几行代码快速实现)

前段时间由于项目需要用到类似于今日头条的视频播放器,实现在线播放,边缓存边播放,当然也可以播放本地文件,如下图所示:  

这里写图片描述

这里我推荐大家使用jiecaovideoplayer开源库,这个库的播放引擎是ijkplayer,它调用ffmpeg

1.主要特点

  1. 视频全屏播放和浮层小窗播放
  2. 可以完全自定义UI
  3. 能在ListView、ViewPager和ListView、ViewPager和Fragment等多重嵌套模式下全屏工作
  4. 手势修改进度和音量
  5. 视频大小的屏幕适配,宽或长至少有两个对边是充满屏幕的,另外两个方向居中
  6. 可以在加载、暂停、播放等各种状态中正常进入全屏和退出全屏
  7. 重力感应自动全屏
  8. WebView嵌套本地视频控件
  9. [支持https和rtsp]{https://developer.android.com/guide/topics/media/media-formats.html}
  10. 小于 100kb 
    总体说明: 
    这个播放器本身就具有自动记忆播放进度的功能,全屏状态下具有手势快进和快退的功能,以及左边控制亮度, 
    右边控制音量点击全屏后视频还是竖屏,需要旋转手机才能变成横屏播放,并且使用移动数据时,会有dialog提示

2.项目引入:

compile 'fm.jiecao:jiecaovideoplayer:5.5' 
compile 'com.github.bumptech.glide:glide:3.7.0'

2.添加权限

<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />

3.添加布局

<fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard 
android:id="@+id/jiecao_Player" 
android:layout_width="match_parent" 
android:layout_height="500px" />

4.清单文件中Activity配置

 <activity
            android:name=".baseui.activity.TestActivity"
            android:configChanges="orientation|screenSize|keyboardHidden"
            android:screenOrientation="portrait"></activity>
   
   
  • 1
  • 2
  • 3
  • 4

5.Activity中直接使用

/**
 * 这个播放器本身就具有自动记忆播放进度的功能,全屏状态下具有手势快进和快退的功能,以及左边控制亮度,右边控制音量
 * 点击全屏后视频还是竖屏,需要旋转手机才能变成横屏播放
 */

//视频播放地址
private JCVideoPlayerStandard jcVideoPlayerStandard;  
    String s1="http://gslb.miaopai.com/stream/ed5HCfnhovu3tyIQAiv60Q__.mp4";  
    String s2="http://player.youku.com/player.php/sid/XMjUyODI2NDc2MA==/v.swf";//不支持swf格式的视频播放 
    String imageUrl="http://a4.att.hudong.com/05/71/01300000057455120185716259013.jpg";

 @Override  
    protected void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.activity_jie_cao_video);  
        jcVideoPlayerStandard= (JCVideoPlayerStandard) findViewById(R.id.jiecao_Player);  
        //添加视频缩略图
        ImageView thumbImageView = jcVideoPlayerStandard.thumbImageView;
        //使用Glide添加
        Glide.with(this).load(imageUrl).into(thumbImageView );
        //配置jiecaovideoplayer
        jcVideoPlayerStandard.setUp(s1,jcVideoPlayerStandard.SCREEN_LAYOUT_NORMAL,"视频标题");  
        //模拟用户点击开始按钮,直接进入全屏
        jcVideoPlayerStandard.startFullscreen(this, JCVideoPlayerStandard.class, videoUrl, "视频标题"); 
        //模拟用户点击开始按钮,NORMAL状态下点击开始播放视频,播放中点击暂停视频
        jcVideoPlayerStandard.startButton.performClick();

    }  

   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29

6.在Activity监听如下生命周期方法

@Override
protected void onResume() {
    super.onResume();
    Sensor accelerometerSensor = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
    sensorManager.registerListener(sensorEventListener, accelerometerSensor, SensorManager.SENSOR_DELAY_NORMAL);
}

@Override  
    protected void onPause() {  
        super.onPause();  
        sensorManager.unregisterListener(sensorEventListener);
        JCVideoPlayer.releaseAllVideos();  
    }  
@Override  
    public void onBackPressed() {  
        if (JCVideoPlayer.backPress()){  
            return;  
        }  
        super.onBackPressed();  
    } 
   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

以上步骤就完成了最基本的播放功能. 
注意:jiecaovideoplayer支持file:///开头的文件播放,但是不支持assets或者raw目录下的视频,assets下的视频要先复制到本地路径才能播放,至于怎么监听播放完全呢,要继承JCvideoPlayerStandard 复写onAutoCOmplete函数

播放效果 
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值