Skip to content
项目
群组
代码片段
帮助
正在加载...
帮助
为 GitLab 提交贡献
登录
切换导航
R
RTSPDemo
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分枝图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
计划
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
分枝图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
ubains-android-demo
RTSPDemo
Commits
474815a7
提交
474815a7
authored
11月 06, 2019
作者:
汪显鹏
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
GSY 多任务播放模式
上级
76b9e47d
显示空白字符变更
内嵌
并排
正在显示
7 个修改的文件
包含
151 行增加
和
297 行删除
+151
-297
AndroidManifest.xml
app/src/main/AndroidManifest.xml
+7
-6
EmptyActivity.java
app/src/main/java/com/ubains/rtspdemo/EmptyActivity.java
+4
-3
MutliActivity.java
app/src/main/java/com/ubains/rtspdemo/MutliActivity.java
+81
-100
ListMultiNormalAdapter.java
...ava/com/ubains/rtspdemo/vedio/ListMultiNormalAdapter.java
+7
-7
MultiSampleVideo.java
...main/java/com/ubains/rtspdemo/vedio/MultiSampleVideo.java
+8
-19
activity_mutli.xml
app/src/main/res/layout/activity_mutli.xml
+40
-10
video_layout_cover.xml
app/src/main/res/layout/video_layout_cover.xml
+4
-152
没有找到文件。
app/src/main/AndroidManifest.xml
浏览文件 @
474815a7
...
@@ -6,6 +6,7 @@
...
@@ -6,6 +6,7 @@
<application
<application
android:allowBackup=
"true"
android:allowBackup=
"true"
android:appComponentFactory=
""
android:appComponentFactory=
""
android:hardwareAccelerated=
"true"
android:icon=
"@mipmap/ic_launcher"
android:icon=
"@mipmap/ic_launcher"
android:label=
"@string/app_name"
android:label=
"@string/app_name"
android:roundIcon=
"@mipmap/ic_launcher_round"
android:roundIcon=
"@mipmap/ic_launcher_round"
...
@@ -19,6 +20,10 @@
...
@@ -19,6 +20,10 @@
android:screenOrientation=
"landscape"
android:screenOrientation=
"landscape"
android:theme=
"@style/Theme.AppCompat.NoActionBar"
>
android:theme=
"@style/Theme.AppCompat.NoActionBar"
>
<intent-filter>
<action
android:name=
"android.intent.action.MAIN"
/>
<category
android:name=
"android.intent.category.LAUNCHER"
/>
</intent-filter>
</activity>
</activity>
...
@@ -28,18 +33,14 @@
...
@@ -28,18 +33,14 @@
android:configChanges=
"orientation|keyboardHidden|screenSize"
android:configChanges=
"orientation|keyboardHidden|screenSize"
android:screenOrientation=
"landscape"
android:screenOrientation=
"landscape"
android:theme=
"@style/Theme.AppCompat.NoActionBar"
>
android:theme=
"@style/Theme.AppCompat.NoActionBar"
>
<intent-filter>
<action
android:name=
"android.intent.action.MAIN"
/>
<category
android:name=
"android.intent.category.LAUNCHER"
/>
</intent-filter>
</activity>
</activity>
<activity
<activity
android:name=
".EmptyActivity"
android:name=
".EmptyActivity"
android:configChanges=
"orientation|keyboardHidden|screenSize"
android:configChanges=
"orientation|keyboardHidden|screenSize"
android:screenOrientation=
"landscape"
android:screenOrientation=
"landscape"
android:theme=
"@style/Theme.AppCompat.NoActionBar"
>
android:theme=
"@style/Theme.AppCompat.NoActionBar"
></activity>
</activity>
<activity
<activity
android:name=
".MainActivity"
android:name=
".MainActivity"
...
...
app/src/main/java/com/ubains/rtspdemo/EmptyActivity.java
浏览文件 @
474815a7
...
@@ -20,6 +20,8 @@ import com.ubains.rtspdemo.vedio.EmptyControlVideo;
...
@@ -20,6 +20,8 @@ import com.ubains.rtspdemo.vedio.EmptyControlVideo;
import
java.util.ArrayList
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.List
;
import
tv.danmaku.ijk.media.exo2.Exo2PlayerManager
;
import
tv.danmaku.ijk.media.exo2.ExoPlayerCacheManager
;
import
tv.danmaku.ijk.media.player.IjkMediaPlayer
;
import
tv.danmaku.ijk.media.player.IjkMediaPlayer
;
public
class
EmptyActivity
extends
AppCompatActivity
{
public
class
EmptyActivity
extends
AppCompatActivity
{
...
@@ -49,7 +51,7 @@ public class EmptyActivity extends AppCompatActivity {
...
@@ -49,7 +51,7 @@ public class EmptyActivity extends AppCompatActivity {
}
}
private
void
init
()
{
private
void
init
()
{
//
PlayerFactory.setPlayManager(Exo2PlayerManager.class);
PlayerFactory
.
setPlayManager
(
Exo2PlayerManager
.
class
);
//系统内核模式
//系统内核模式
//PlayerFactory.setPlayManager(SystemPlayerManager.class);
//PlayerFactory.setPlayManager(SystemPlayerManager.class);
//ijk内核,默认模式 ijk 模式才支持RTSP 播放
//ijk内核,默认模式 ijk 模式才支持RTSP 播放
...
@@ -100,10 +102,9 @@ public class EmptyActivity extends AppCompatActivity {
...
@@ -100,10 +102,9 @@ public class EmptyActivity extends AppCompatActivity {
String
url
=
"rtsp://admin:huawei@123@192.168.11.20/LiveMedia/ch1/Media1"
;
String
url
=
"rtsp://admin:huawei@123@192.168.11.20/LiveMedia/ch1/Media1"
;
String
ur2
=
"rtsp://admin:huawei@123@192.168.11.20/LiveMedia/ch1/Media1"
;
videoPlayer1
.
setUp
(
url
,
true
,
""
);
videoPlayer1
.
setUp
(
url
,
true
,
""
);
videoPlayer2
.
setUp
(
ur2
,
true
,
""
);
//
videoPlayer2.setUp(ur2, true, "");
//过渡动画
//过渡动画
initTransition
();
initTransition
();
...
...
app/src/main/java/com/ubains/rtspdemo/MutliActivity.java
浏览文件 @
474815a7
...
@@ -7,6 +7,7 @@ import android.os.Bundle;
...
@@ -7,6 +7,7 @@ import android.os.Bundle;
import
android.transition.Explode
;
import
android.transition.Explode
;
import
android.view.View
;
import
android.view.View
;
import
android.view.Window
;
import
android.view.Window
;
import
android.view.WindowManager
;
import
com.shuyu.gsyvideoplayer.GSYVideoManager
;
import
com.shuyu.gsyvideoplayer.GSYVideoManager
;
import
com.shuyu.gsyvideoplayer.cache.CacheFactory
;
import
com.shuyu.gsyvideoplayer.cache.CacheFactory
;
...
@@ -22,15 +23,23 @@ import java.util.ArrayList;
...
@@ -22,15 +23,23 @@ import java.util.ArrayList;
import
java.util.List
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Map
;
import
tv.danmaku.ijk.media.exo2.Exo2PlayerManager
;
import
tv.danmaku.ijk.media.exo2.ExoPlayerCacheManager
;
import
tv.danmaku.ijk.media.player.IjkMediaPlayer
;
import
tv.danmaku.ijk.media.player.IjkMediaPlayer
;
public
class
MutliActivity
extends
AppCompatActivity
{
public
class
MutliActivity
extends
AppCompatActivity
{
MultiSampleVideo
videoPlayer1
,
videoPlayer2
;
MultiSampleVideo
videoPlayer1
,
videoPlayer2
,
videoPlayer3
,
videoPlayer4
;
@Override
@Override
protected
void
onCreate
(
Bundle
savedInstanceState
)
{
protected
void
onCreate
(
Bundle
savedInstanceState
)
{
super
.
onCreate
(
savedInstanceState
);
super
.
onCreate
(
savedInstanceState
);
//设置全屏
// getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
//保持屏幕常亮
getWindow
().
addFlags
(
WindowManager
.
LayoutParams
.
FLAG_KEEP_SCREEN_ON
);
if
(
Build
.
VERSION
.
SDK_INT
>=
Build
.
VERSION_CODES
.
LOLLIPOP
)
{
if
(
Build
.
VERSION
.
SDK_INT
>=
Build
.
VERSION_CODES
.
LOLLIPOP
)
{
getWindow
().
requestFeature
(
Window
.
FEATURE_CONTENT_TRANSITIONS
);
getWindow
().
requestFeature
(
Window
.
FEATURE_CONTENT_TRANSITIONS
);
getWindow
().
setEnterTransition
(
new
Explode
());
getWindow
().
setEnterTransition
(
new
Explode
());
...
@@ -39,21 +48,24 @@ public class MutliActivity extends AppCompatActivity {
...
@@ -39,21 +48,24 @@ public class MutliActivity extends AppCompatActivity {
setContentView
(
R
.
layout
.
activity_mutli
);
setContentView
(
R
.
layout
.
activity_mutli
);
videoPlayer1
=
findViewById
(
R
.
id
.
detail_player1
);
videoPlayer1
=
findViewById
(
R
.
id
.
detail_player1
);
videoPlayer2
=
findViewById
(
R
.
id
.
detail_player2
);
videoPlayer2
=
findViewById
(
R
.
id
.
detail_player2
);
videoPlayer3
=
findViewById
(
R
.
id
.
detail_player3
);
videoPlayer4
=
findViewById
(
R
.
id
.
detail_player4
);
init
();
}
}
private
void
init
()
{
private
void
init
()
{
//
PlayerFactory.setPlayManager(Exo2PlayerManager.class);
PlayerFactory
.
setPlayManager
(
Exo2PlayerManager
.
class
);
//系统内核模式
//系统内核模式
//PlayerFactory.setPlayManager(SystemPlayerManager.class);
//PlayerFactory.setPlayManager(SystemPlayerManager.class);
//ijk内核,默认模式 ijk 模式才支持RTSP 播放
//ijk内核,默认模式 ijk 模式才支持RTSP 播放
PlayerFactory
.
setPlayManager
(
IjkPlayerManager
.
class
);
PlayerFactory
.
setPlayManager
(
IjkPlayerManager
.
class
);
//exo缓存模式,支持m3u8,只支持exo
//exo缓存模式,支持m3u8,只支持exo
//
CacheFactory.setCacheManager(ExoPlayerCacheManager.class);
CacheFactory
.
setCacheManager
(
ExoPlayerCacheManager
.
class
);
//代理缓存模式,支持所有模式,不支持m3u8等,默认
//代理缓存模式,支持所有模式,不支持m3u8等,默认
CacheFactory
.
setCacheManager
(
ProxyCacheManager
.
class
);
CacheFactory
.
setCacheManager
(
ProxyCacheManager
.
class
);
List
<
VideoOptionModel
>
list
=
new
ArrayList
<>();
List
<
VideoOptionModel
>
list
=
new
ArrayList
<>();
//设置RTSP 连接方式
//设置RTSP 连接方式
VideoOptionModel
videoOptionModel
=
new
VideoOptionModel
(
IjkMediaPlayer
.
OPT_CATEGORY_FORMAT
,
"rtsp_transport"
,
"tcp"
);
VideoOptionModel
videoOptionModel
=
new
VideoOptionModel
(
IjkMediaPlayer
.
OPT_CATEGORY_FORMAT
,
"rtsp_transport"
,
"tcp"
);
...
@@ -64,18 +76,15 @@ public class MutliActivity extends AppCompatActivity {
...
@@ -64,18 +76,15 @@ public class MutliActivity extends AppCompatActivity {
//硬解码:1、打开,0、关闭
//硬解码:1、打开,0、关闭
videoOptionModel
=
new
VideoOptionModel
(
IjkMediaPlayer
.
OPT_CATEGORY_PLAYER
,
"mediacodec"
,
1
);
videoOptionModel
=
new
VideoOptionModel
(
IjkMediaPlayer
.
OPT_CATEGORY_PLAYER
,
"mediacodec"
,
1
);
list
.
add
(
videoOptionModel
);
list
.
add
(
videoOptionModel
);
//软解码:1、打开,0、关闭
//软解码:1、打开,0、关闭
videoOptionModel
=
new
VideoOptionModel
(
IjkMediaPlayer
.
OPT_CATEGORY_PLAYER
,
"videotoolbox"
,
1
);
videoOptionModel
=
new
VideoOptionModel
(
IjkMediaPlayer
.
OPT_CATEGORY_PLAYER
,
"videotoolbox"
,
1
);
list
.
add
(
videoOptionModel
);
list
.
add
(
videoOptionModel
);
//根据媒体类型来配置
//根据媒体类型来配置
videoOptionModel
=
new
VideoOptionModel
(
IjkMediaPlayer
.
OPT_CATEGORY_FORMAT
,
"allowed_media_types"
,
"video"
);
videoOptionModel
=
new
VideoOptionModel
(
IjkMediaPlayer
.
OPT_CATEGORY_FORMAT
,
"allowed_media_types"
,
"video"
);
list
.
add
(
videoOptionModel
);
list
.
add
(
videoOptionModel
);
videoOptionModel
=
new
VideoOptionModel
(
IjkMediaPlayer
.
OPT_CATEGORY_FORMAT
,
"timeout"
,
20000
);
videoOptionModel
=
new
VideoOptionModel
(
IjkMediaPlayer
.
OPT_CATEGORY_FORMAT
,
"timeout"
,
20000
);
list
.
add
(
videoOptionModel
);
list
.
add
(
videoOptionModel
);
videoOptionModel
=
new
VideoOptionModel
(
IjkMediaPlayer
.
OPT_CATEGORY_FORMAT
,
"buffer_size"
,
1
316
);
videoOptionModel
=
new
VideoOptionModel
(
IjkMediaPlayer
.
OPT_CATEGORY_FORMAT
,
"buffer_size"
,
1
024
);
list
.
add
(
videoOptionModel
);
list
.
add
(
videoOptionModel
);
videoOptionModel
=
new
VideoOptionModel
(
IjkMediaPlayer
.
OPT_CATEGORY_FORMAT
,
"infbuf"
,
1
);
// 无限读
videoOptionModel
=
new
VideoOptionModel
(
IjkMediaPlayer
.
OPT_CATEGORY_FORMAT
,
"infbuf"
,
1
);
// 无限读
list
.
add
(
videoOptionModel
);
list
.
add
(
videoOptionModel
);
...
@@ -88,125 +97,97 @@ public class MutliActivity extends AppCompatActivity {
...
@@ -88,125 +97,97 @@ public class MutliActivity extends AppCompatActivity {
// 关闭播放器缓冲,这个必须关闭,否则会出现播放一段时间后,一直卡主,控制台打印 FFP_MSG_BUFFERING_START
// 关闭播放器缓冲,这个必须关闭,否则会出现播放一段时间后,一直卡主,控制台打印 FFP_MSG_BUFFERING_START
videoOptionModel
=
new
VideoOptionModel
(
IjkMediaPlayer
.
OPT_CATEGORY_PLAYER
,
"packet-buffering"
,
0
);
videoOptionModel
=
new
VideoOptionModel
(
IjkMediaPlayer
.
OPT_CATEGORY_PLAYER
,
"packet-buffering"
,
0
);
list
.
add
(
videoOptionModel
);
list
.
add
(
videoOptionModel
);
videoOptionModel
=
new
VideoOptionModel
(
IjkMediaPlayer
.
OPT_CATEGORY_PLAYER
,
"reconnect"
,
5
);
list
.
add
(
videoOptionModel
);
videoOptionModel
=
new
VideoOptionModel
(
IjkMediaPlayer
.
OPT_CATEGORY_PLAYER
,
"framedrop"
,
30
);
list
.
add
(
videoOptionModel
);
GSYVideoManager
.
instance
().
setOptionModelList
(
list
);
GSYVideoManager
.
instance
().
setOptionModelList
(
list
);
// String url = "rtsp://admin:huawei@123@192.168.11.16/LiveMedia/ch1/Media1";
String
url
=
"rtsp://admin:huawei@123@192.168.11.20/LiveMedia/ch1/Media1"
;
// String url = "rtsp://admin:huawei@123@192.168.11.16/LiveMedia/ch1/Media2";
// String url = "rtsp://admin:huawei@123@192.168.11.19/LiveMedia/ch1/Media3";
String
ur2
=
"rtsp://admin:huawei@123@192.168.11.21/LiveMedia/ch1/Media1"
;
String
url
=
"rtsp://admin:HZ0000001988@192.168.10.26:554/h264/ch3/main/av_stream"
;
videoPlayer1
.
setPlayTag
(
"videoPlayer1"
);
videoPlayer1
.
setPlayTag
(
"videoPlayer1"
);
videoPlayer1
.
setPlayPosition
(
1
);
videoPlayer1
.
setPlayPosition
(
1
);
videoPlayer2
.
setPlayTag
(
"videoPlayer2"
);
videoPlayer2
.
setPlayPosition
(
2
);
boolean
isPlaying
=
videoPlayer1
.
getCurrentPlayer
().
isInPlayingState
();
boolean
isPlaying
=
videoPlayer1
.
getCurrentPlayer
().
isInPlayingState
();
boolean
isPlaying2
=
videoPlayer2
.
getCurrentPlayer
().
isInPlayingState
();
if
(!
isPlaying
){
if
(!
isPlaying
)
{
videoPlayer1
.
setUpLazy
(
url
,
false
,
null
,
null
,
""
);
videoPlayer1
.
setUpLazy
(
url
,
false
,
null
,
null
,
""
);
}
}
if
(!
isPlaying2
){
// videoPlayer1.setRotateViewAuto(true);
videoPlayer2
.
setUpLazy
(
url
,
false
,
null
,
null
,
""
);
// videoPlayer1.setLockLand(true);
}
// videoPlayer1.setReleaseWhenLossAudio(false);
// videoPlayer1.setShowFullAnimation(true);
videoPlayer1
.
getTitleTextView
().
setVisibility
(
View
.
GONE
);
// videoPlayer1.setIsTouchWiget(false);
videoPlayer2
.
getTitleTextView
().
setVisibility
(
View
.
GONE
);
// videoPlayer1.setNeedLockFull(true);
videoPlayer1
.
getBackButton
().
setVisibility
(
View
.
GONE
);
videoPlayer2
.
getBackButton
().
setVisibility
(
View
.
GONE
);
videoPlayer1
.
startPlayLogic
();
// String ur2 = "rtsp://admin:huawei@123@192.168.11.17/LiveMedia/ch1/Media1";
// String ur2 = "rtsp://admin:huawei@123@192.168.11.17/LiveMedia/ch1/Media2";
videoPlayer2
.
setRotateViewAuto
(
true
);
String
ur2
=
"rtsp://admin:huawei@123@192.168.11.17/LiveMedia/ch1/Media3"
;
videoPlayer2
.
setLockLand
(
true
);
videoPlayer2
.
setPlayTag
(
"videoPlayer2"
);
videoPlayer2
.
setReleaseWhenLossAudio
(
false
);
videoPlayer2
.
setPlayPosition
(
2
);
videoPlayer2
.
setShowFullAnimation
(
true
);
boolean
isPlaying2
=
videoPlayer2
.
getCurrentPlayer
().
isInPlayingState
();
videoPlayer2
.
setIsTouchWiget
(
false
);
if
(!
isPlaying2
)
{
videoPlayer2
.
setNeedLockFull
(
true
);
videoPlayer2
.
setUpLazy
(
ur2
,
false
,
null
,
null
,
""
);
}
// videoPlayer2.setRotateViewAuto(true);
// videoPlayer2.setLockLand(true);
// videoPlayer2.setReleaseWhenLossAudio(false);
// videoPlayer2.setShowFullAnimation(true);
// videoPlayer2.setIsTouchWiget(false);
// videoPlayer2.setNeedLockFull(true);
videoPlayer2
.
startPlayLogic
();
videoPlayer1
.
setRotateViewAuto
(
true
);
// String url3 = "rtsp://admin:huawei@123@192.168.11.19/LiveMedia/ch1/Media1";
videoPlayer1
.
setLockLand
(
true
);
// String url3 = "rtsp://admin:huawei@123@192.168.11.19/LiveMedia/ch1/Media2";
videoPlayer1
.
setReleaseWhenLossAudio
(
false
);
String
url3
=
"rtsp://admin:HZ0000001988@192.168.10.21:554/h264/ch1/main/av_stream"
;
videoPlayer1
.
setShowFullAnimation
(
true
);
videoPlayer1
.
setIsTouchWiget
(
false
);
videoPlayer1
.
setNeedLockFull
(
true
);
videoPlayer1
.
startPlayLogic
();
videoPlayer3
.
setPlayTag
(
"videoPlayer3"
);
videoPlayer2
.
startPlayLogic
();
videoPlayer3
.
setPlayPosition
(
3
);
boolean
isPlaying3
=
videoPlayer3
.
getCurrentPlayer
().
isInPlayingState
();
if
(!
isPlaying3
)
{
videoPlayer3
.
setUpLazy
(
url3
,
false
,
null
,
null
,
""
);
}
// videoPlayer3.setRotateViewAuto(true);
// videoPlayer3.setLockLand(true);
// videoPlayer3.setReleaseWhenLossAudio(false);
// videoPlayer3.setShowFullAnimation(true);
// videoPlayer3.setIsTouchWiget(false);
// videoPlayer3.setNeedLockFull(true);
videoPlayer3
.
startPlayLogic
();
// String url4 = "rtsp://admin:huawei@123@192.168.11.19/LiveMedia/ch1/Media1";
// String url4 = "rtsp://admin:huawei@123@192.168.11.23/LiveMedia/ch1/Media2";
String
url4
=
"rtsp://admin:huawei@123@192.168.11.23/LiveMedia/ch1/Media3"
;
// videoPlayer1.setVideoAllCallBack(new GSYSampleCallBack() {
videoPlayer4
.
setPlayTag
(
"videoPlayer4"
);
//
videoPlayer4
.
setPlayPosition
(
4
);
//
boolean
isPlaying4
=
videoPlayer4
.
getCurrentPlayer
().
isInPlayingState
();
// @Override
if
(!
isPlaying4
)
{
// public void onQuitFullscreen(String url, Object... objects) {
videoPlayer4
.
setUpLazy
(
url4
,
false
,
null
,
null
,
""
);
// super.onQuitFullscreen(url, objects);
// // fullKey = "null";
// }
//
// @Override
// public void onEnterFullscreen(String url, Object... objects) {
// super.onEnterFullscreen(url, objects);
// videoPlayer1.getCurrentPlayer().getTitleTextView().setText((String) objects[0]);
// //fullKey = holder.gsyVideoPlayer.getKey();
// }
//
// @Override
// public void onAutoComplete(String url, Object... objects) {
// super.onAutoComplete(url, objects);
// }
// });
//过渡动画
if
(
CustomManager
.
instance
().
size
()
>=
0
)
{
Map
<
String
,
CustomManager
>
map
=
CustomManager
.
instance
();
List
<
String
>
removeKey
=
new
ArrayList
<>();
for
(
Map
.
Entry
<
String
,
CustomManager
>
customManagerEntry
:
map
.
entrySet
())
{
CustomManager
customManager
=
customManagerEntry
.
getValue
();
//当前播放的位置
int
position
=
customManager
.
getPlayPosition
();
//对应的播放列表TAG
// if (customManager.getPlayTag().equals(ListMultiNormalAdapter.TAG) && (position < firstVisibleItem || position > lastVisibleItem)) {
CustomManager
.
releaseAllVideos
(
customManagerEntry
.
getKey
());
removeKey
.
add
(
customManagerEntry
.
getKey
());
// }
}
}
if
(
removeKey
.
size
()
>
0
)
{
// videoPlayer4.setRotateViewAuto(true);
for
(
String
key
:
removeKey
)
{
// videoPlayer4.setLockLand(true);
map
.
remove
(
key
);
// videoPlayer4.setReleaseWhenLossAudio(false);
}
// videoPlayer4.setShowFullAnimation(true);
//listMultiNormalAdapter.notifyDataSetChanged();
// videoPlayer4.setIsTouchWiget(false);
}
// videoPlayer4.setNeedLockFull(true);
}
videoPlayer4
.
startPlayLogic
();
}
}
private
boolean
isPause
;
private
boolean
isPause
;
// @Override
// public void onBackPressed() {
// if (CustomManager.backFromWindowFull(this, listMultiNormalAdapter.getFullKey())) {
// return;
// }
// super.onBackPressed();
// }
@Override
@Override
protected
void
onPause
()
{
protected
void
onPause
()
{
super
.
onPause
();
super
.
onPause
();
...
...
app/src/main/java/com/ubains/rtspdemo/vedio/ListMultiNormalAdapter.java
浏览文件 @
474815a7
...
@@ -66,9 +66,9 @@ public class ListMultiNormalAdapter extends BaseAdapter {
...
@@ -66,9 +66,9 @@ public class ListMultiNormalAdapter extends BaseAdapter {
}
}
//
final String url = "http://9890.vod.myqcloud.com/9890_4e292f9a3dd011e6b4078980237cc3d3.f20.mp4";
final
String
url
=
"http://9890.vod.myqcloud.com/9890_4e292f9a3dd011e6b4078980237cc3d3.f20.mp4"
;
final
String
url
=
"rtsp://admin:huawei@123@192.168.11.21/LiveMedia/ch1/Media1"
;
//
final String url = "rtsp://admin:huawei@123@192.168.11.21/LiveMedia/ch1/Media1";
//多个播放时必须在setUpLazy、setUp和getGSYVideoManager()等前面设置
//多个播放时必须在setUpLazy、setUp和getGSYVideoManager()等前面设置
holder
.
gsyVideoPlayer
.
setPlayTag
(
TAG
);
holder
.
gsyVideoPlayer
.
setPlayTag
(
TAG
);
...
@@ -101,11 +101,11 @@ public class ListMultiNormalAdapter extends BaseAdapter {
...
@@ -101,11 +101,11 @@ public class ListMultiNormalAdapter extends BaseAdapter {
holder
.
gsyVideoPlayer
.
setNeedLockFull
(
true
);
holder
.
gsyVideoPlayer
.
setNeedLockFull
(
true
);
if
(
position
%
2
==
0
)
{
//
if (position % 2 == 0) {
holder
.
gsyVideoPlayer
.
loadCoverImage
(
url
,
R
.
mipmap
.
ic_launcher
);
//
holder.gsyVideoPlayer.loadCoverImage(url, R.mipmap.ic_launcher);
}
else
{
//
} else {
holder
.
gsyVideoPlayer
.
loadCoverImage
(
url
,
R
.
mipmap
.
ic_launcher
);
//
holder.gsyVideoPlayer.loadCoverImage(url, R.mipmap.ic_launcher);
}
//
}
holder
.
gsyVideoPlayer
.
setVideoAllCallBack
(
new
GSYSampleCallBack
()
{
holder
.
gsyVideoPlayer
.
setVideoAllCallBack
(
new
GSYSampleCallBack
()
{
...
...
app/src/main/java/com/ubains/rtspdemo/vedio/MultiSampleVideo.java
浏览文件 @
474815a7
...
@@ -24,7 +24,7 @@ public class MultiSampleVideo extends StandardGSYVideoPlayer {
...
@@ -24,7 +24,7 @@ public class MultiSampleVideo extends StandardGSYVideoPlayer {
private
final
static
String
TAG
=
"MultiSampleVideo"
;
private
final
static
String
TAG
=
"MultiSampleVideo"
;
ImageView
mCoverImage
;
//
ImageView mCoverImage;
String
mCoverOriginUrl
;
String
mCoverOriginUrl
;
...
@@ -45,7 +45,7 @@ public class MultiSampleVideo extends StandardGSYVideoPlayer {
...
@@ -45,7 +45,7 @@ public class MultiSampleVideo extends StandardGSYVideoPlayer {
@Override
@Override
protected
void
init
(
Context
context
)
{
protected
void
init
(
Context
context
)
{
super
.
init
(
context
);
super
.
init
(
context
);
mCoverImage
=
(
ImageView
)
findViewById
(
R
.
id
.
thumbImage
);
//
mCoverImage = (ImageView) findViewById(R.id.thumbImage);
if
(
mThumbImageViewLayout
!=
null
&&
if
(
mThumbImageViewLayout
!=
null
&&
(
mCurrentState
==
-
1
||
mCurrentState
==
CURRENT_STATE_NORMAL
||
mCurrentState
==
CURRENT_STATE_ERROR
))
{
(
mCurrentState
==
-
1
||
mCurrentState
==
CURRENT_STATE_NORMAL
||
mCurrentState
==
CURRENT_STATE_ERROR
))
{
mThumbImageViewLayout
.
setVisibility
(
VISIBLE
);
mThumbImageViewLayout
.
setVisibility
(
VISIBLE
);
...
@@ -101,28 +101,17 @@ public class MultiSampleVideo extends StandardGSYVideoPlayer {
...
@@ -101,28 +101,17 @@ public class MultiSampleVideo extends StandardGSYVideoPlayer {
return
R
.
layout
.
video_layout_cover
;
return
R
.
layout
.
video_layout_cover
;
}
}
public
void
loadCoverImage
(
String
url
,
int
res
)
{
// public void loadCoverImage(String url, int res) {
mCoverOriginUrl
=
url
;
// mCoverOriginUrl = url;
mDefaultRes
=
res
;
// mDefaultRes = res;
// mCoverImage.setBackgroundResource(res);
mCoverImage
.
setBackgroundResource
(
res
);
// }
// Glide.with(getContext().getApplicationContext())
// .setDefaultRequestOptions(
// new RequestOptions()
// .frame(1000000)
// .centerCrop()
// .error(res)
// .placeholder(res))
// .load(url)
// .into(mCoverImage);
}
@Override
@Override
public
GSYBaseVideoPlayer
startWindowFullscreen
(
Context
context
,
boolean
actionBar
,
boolean
statusBar
)
{
public
GSYBaseVideoPlayer
startWindowFullscreen
(
Context
context
,
boolean
actionBar
,
boolean
statusBar
)
{
GSYBaseVideoPlayer
gsyBaseVideoPlayer
=
super
.
startWindowFullscreen
(
context
,
actionBar
,
statusBar
);
GSYBaseVideoPlayer
gsyBaseVideoPlayer
=
super
.
startWindowFullscreen
(
context
,
actionBar
,
statusBar
);
MultiSampleVideo
multiSampleVideo
=
(
MultiSampleVideo
)
gsyBaseVideoPlayer
;
MultiSampleVideo
multiSampleVideo
=
(
MultiSampleVideo
)
gsyBaseVideoPlayer
;
multiSampleVideo
.
loadCoverImage
(
mCoverOriginUrl
,
mDefaultRes
);
//
multiSampleVideo.loadCoverImage(mCoverOriginUrl, mDefaultRes);
return
multiSampleVideo
;
return
multiSampleVideo
;
}
}
...
...
app/src/main/res/layout/activity_mutli.xml
浏览文件 @
474815a7
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
<RelativeLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:app=
"http://schemas.android.com/apk/res-auto"
xmlns:tools=
"http://schemas.android.com/tools"
xmlns:tools=
"http://schemas.android.com/tools"
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:layout_height=
"match_parent"
tools:context=
".MutliActivity"
>
tools:context=
".MutliActivity"
>
<LinearLayout
<LinearLayout
android:orientation=
"horizontal"
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
>
android:layout_height=
"match_parent"
<com.ubains.rtspdemo.vedio.MultiSampleVideo
android:orientation=
"horizontal"
>
<LinearLayout
android:id=
"@+id/ll_rtsp1"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:layout_weight=
"1"
android:layout_weight=
"1"
android:orientation=
"vertical"
>
<com.ubains.rtspdemo.vedio.MultiSampleVideo
android:id=
"@+id/detail_player1"
android:id=
"@+id/detail_player1"
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
/>
android:layout_height=
"match_parent"
android:layout_weight=
"1"
/>
<com.ubains.rtspdemo.vedio.MultiSampleVideo
<com.ubains.rtspdemo.vedio.MultiSampleVideo
android:id=
"@+id/detail_player3"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:layout_weight=
"1"
/>
</LinearLayout>
<LinearLayout
android:id=
"@+id/ll_rtsp2"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:layout_weight=
"1"
android:layout_weight=
"1"
android:orientation=
"vertical"
>
<com.ubains.rtspdemo.vedio.MultiSampleVideo
android:id=
"@+id/detail_player2"
android:id=
"@+id/detail_player2"
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
/>
android:layout_height=
"match_parent"
android:layout_weight=
"1"
/>
<com.ubains.rtspdemo.vedio.MultiSampleVideo
android:id=
"@+id/detail_player4"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:layout_weight=
"1"
/>
</LinearLayout>
</LinearLayout>
</LinearLayout>
</RelativeLayout>
</RelativeLayout>
\ No newline at end of file
app/src/main/res/layout/video_layout_cover.xml
浏览文件 @
474815a7
...
@@ -4,160 +4,12 @@
...
@@ -4,160 +4,12 @@
android:layout_height=
"match_parent"
android:layout_height=
"match_parent"
android:background=
"@android:color/black"
>
android:background=
"@android:color/black"
>
<ImageView
<FrameLayout
android:id=
"@+id/back_tiny"
android:layout_width=
"24dp"
android:layout_height=
"24dp"
android:layout_marginLeft=
"6dp"
android:layout_marginTop=
"6dp"
android:visibility=
"gone"
/>
<ImageView
android:id=
"@+id/small_close"
android:layout_width=
"30dp"
android:layout_height=
"30dp"
android:paddingLeft=
"10dp"
android:paddingTop=
"10dp"
android:scaleType=
"centerInside"
android:src=
"@drawable/video_small_close"
android:visibility=
"gone"
/>
<ImageView
android:id=
"@+id/lock_screen"
android:layout_width=
"30dp"
android:layout_height=
"30dp"
android:layout_alignParentRight=
"true"
android:layout_centerVertical=
"true"
android:layout_marginRight=
"50dp"
android:scaleType=
"centerInside"
android:src=
"@drawable/unlock"
android:visibility=
"gone"
/>
<LinearLayout
android:id=
"@+id/layout_bottom"
android:layout_width=
"match_parent"
android:layout_height=
"40dp"
android:layout_alignParentBottom=
"true"
android:background=
"#99000000"
android:gravity=
"center_vertical"
android:orientation=
"horizontal"
android:visibility=
"invisible"
>
<ImageView
android:id=
"@+id/fullscreen"
android:layout_width=
"wrap_content"
android:layout_height=
"fill_parent"
android:paddingRight=
"16dp"
android:scaleType=
"center"
android:src=
"@drawable/video_enlarge"
/>
<SeekBar
android:id=
"@+id/progress"
android:layout_width=
"0dp"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_vertical"
android:layout_weight=
"1.0"
android:background=
"@null"
android:max=
"100"
android:maxHeight=
"4dp"
android:minHeight=
"4dp"
android:paddingTop=
"8dp"
android:paddingBottom=
"8dp"
android:progressDrawable=
"@drawable/video_seek_progress"
android:thumb=
"@drawable/video_seek_thumb"
/>
<TextView
android:id=
"@+id/total"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginRight=
"16dp"
android:text=
"00:00"
android:textColor=
"#ffffff"
/>
<TextView
android:id=
"@+id/current"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginLeft=
"16dp"
android:text=
"00:00"
android:textColor=
"#ffffff"
/>
</LinearLayout>
<LinearLayout
android:id=
"@+id/layout_top"
android:layout_width=
"match_parent"
android:layout_height=
"48dp"
android:background=
"@drawable/video_title_bg"
android:gravity=
"center_vertical"
>
<ImageView
android:id=
"@+id/back"
android:layout_width=
"48dp"
android:layout_height=
"48dp"
android:paddingLeft=
"10dp"
android:scaleType=
"centerInside"
android:src=
"@drawable/video_back"
/>
<TextView
android:id=
"@+id/title"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:paddingLeft=
"10dp"
android:textColor=
"@android:color/white"
android:textSize=
"18sp"
/>
</LinearLayout>
<ProgressBar
android:id=
"@+id/bottom_progressbar"
style=
"?android:attr/progressBarStyleHorizontal"
android:layout_width=
"match_parent"
android:layout_height=
"1.5dp"
android:layout_alignParentBottom=
"true"
android:max=
"100"
android:progressDrawable=
"@drawable/video_progress"
/>
<RelativeLayout
android:id=
"@+id/surface_container"
android:id=
"@+id/surface_container"
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:layout_height=
"match_parent"
android:gravity=
"center"
></RelativeLayout>
android:gravity=
"center"
>
</FrameLayout>
<RelativeLayout
android:id=
"@+id/thumb"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:layout_alignParentStart=
"true"
android:layout_alignParentLeft=
"true"
android:layout_alignParentTop=
"true"
android:layout_alignParentEnd=
"true"
android:layout_alignParentRight=
"true"
android:layout_alignParentBottom=
"true"
android:background=
"#000000"
android:scaleType=
"fitCenter"
>
<ImageView
android:id=
"@+id/thumbImage"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:scaleType=
"centerCrop"
/>
</RelativeLayout>
<moe.codeest.enviews.ENDownloadView
android:id=
"@+id/loading"
android:layout_width=
"28dp"
android:layout_height=
"28dp"
android:layout_centerHorizontal=
"true"
android:layout_centerVertical=
"true"
android:visibility=
"invisible"
/>
<moe.codeest.enviews.ENPlayView
android:id=
"@+id/start"
android:layout_width=
"60dp"
android:layout_height=
"60dp"
android:layout_centerHorizontal=
"true"
android:layout_centerVertical=
"true"
android:layout_gravity=
"center_vertical"
/>
</RelativeLayout>
</RelativeLayout>
\ No newline at end of file
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论