ListView中視頻播放的解決方案


我博客前幾篇是關於JieCaoVideoPlayer的源碼分析。有興趣可以看看

JieCaoVideoPlayer是我所見到的最簡單的開源解決方案

先附上項目主頁https://github.com/lipangit/JieCaoVideoPlayer

其實項目主頁上介紹的夠明白了。我就象徵意義的Copy下


真正實現Android的全屏功能,立志成爲Android平臺使用最廣泛的視頻播放控件

主要特點

  1. 全屏時啓動新Activity實現播放器真正的全屏功能
  2. 可以完全自定義UI
  3. 能在ListViewViewPagerListViewViewPagerFragment等多重嵌套模式下全屏工作
  4. 手勢修改進度和音量
  5. 視頻大小的屏幕適配,寬或長至少有兩個對邊是充滿屏幕的,另外兩個方向居中
  6. 可以在加載、暫停、播放等各種狀態中正常進入全屏和退出全屏
  7. 支持hls,rtsp
  8. 佔用空間非常小,不到60k
  9. 設置http頭信息

效果

jiecaovideoplayer-3.3-demo.apk

Demo Screenshot

使用

1.添加類庫

compile 'fm.jiecao:jiecaovideoplayer:3.3'

或直接下載

2.添加布局

<fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard
    android:id="@+id/custom_videoplayer_standard"
    android:layout_width="match_parent"
    android:layout_height="200dp"/>

3.設置視頻地址、縮略圖地址、標題

JCVideoPlayerStandard jcVideoPlayerStandard = (JCVideoPlayerStandard) findViewById(R.id.custom_videoplayer_standard);
jcVideoPlayerStandard.setUp("http://2449.vod.myqcloud.com/2449_bfbbfa3cea8f11e5aac3db03cda99974.f20.mp4"
                , "嫂子想我沒");
jcVideoPlayerStandard.thumbImageView.setThumbInCustomProject("http://p.qpic.cn/videoyun/0/2449_43b6f696980311e59ed467f22794e792_1/640");

4.在包含播放器的FragmentActivityonPause()方法中調用JCVideoPlayer.releaseAllVideos();

其他接口

直接進入全屏,比如在webview中視頻播放的適配很麻煩很無頭緒,調用此接口直接全屏播放

JCFullScreenActivity.startActivity(this,
    "http://video.jiecao.fm/5/1/%E8%87%AA%E5%8F%96%E5%85%B6%E8%BE%B1.mp4",
    JCVideoPlayerStandard.class,
    "嫂子別摸我");

用代碼控制播放按鈕的點擊,如果是普通狀態會播放視頻,如果是播放中會暫停視頻

jcVideoPlayerStandard.startButton.performClick();

混淆

無需添加

自定義UI

參照JCVideoPlayerSimple,JCVideoPlayerStandard,JCVideoPlayerStandardWithShareButton
  1. 繼承JCVideoPlayer,JCVideoPlayer中包含所有關於播放的代碼,不包含任何UI的代碼
  2. getLayoutId();佈局的id
  3. Override init(Context context);這裏初始化自定義控件
  4. Override setStateAndUi(int state);是重點,自定義各個狀態的UI,如果在其他地方修改UI應該保持謹慎
  5. Override onTouch(),onClick();如果有需要
  6. 在自定義UI之後,應該依然按照README.md中的4步驟來調用播放器

關於控件id的問題,在Base simple ui example中的所有最基礎的id是寫死在JCVideoPlayer中的,下面的控件id已經findViewById過了不需要再findViewById

控件 id
開始按鈕 start
全屏按鈕 fullscreen
進度條 progress
總共時間 total
下方layout layout_bottom
上方layout layout_top
SurfaceView的容器 surface_container

如果想快速的集成視頻播放功能,建議參照JCVideoPlayerStandardWithShareButton來做,它繼承JCVideoPlayerStandard,JCVideoPlayerStandard的目標是和今日頭條的細節保持一致

如果想完全自定義UI,參照JCVideoPlayerStandard

如果在JCVideoPlayer之外寫任何關於控制視頻的代碼不是我們的初衷,請提issue


發佈了68 篇原創文章 · 獲贊 58 · 訪問量 25萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章