Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Z
zuiketang
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
夏彬
zuiketang
Commits
c2b2faad
Commit
c2b2faad
authored
Nov 01, 2016
by
汪波
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/dev' into dev
parents
2407105a
6a973d84
Changes
11
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
137 additions
and
31 deletions
+137
-31
CourseController.php
src/backend/controllers/CourseController.php
+4
-1
detail.php
src/backend/views/course/detail.php
+8
-1
QiniuTranscode.php
src/common/libs/QiniuTranscode.php
+3
-2
MyCourseController.php
src/frontend/controllers/MyCourseController.php
+2
-4
SignupForm.php
src/frontend/models/SignupForm.php
+4
-2
center.php
src/frontend/views/layouts/center.php
+9
-8
index.php
src/frontend/views/test/index.php
+97
-9
video-play.vue
src/frontend/web/js/home/components/video-play.vue
+5
-1
video.vue
src/frontend/web/js/home/components/video.vue
+2
-1
edit.js
src/frontend/web/js/my-course/edit.js
+2
-1
utils.js
src/frontend/web/js/utils/utils.js
+1
-1
No files found.
src/backend/controllers/CourseController.php
View file @
c2b2faad
...
...
@@ -77,8 +77,11 @@ class CourseController extends Controller
$qiniu
=
\Yii
::
$app
->
qiniu
;
$previewUrl
=
$qiniu
->
getUrl
(
'public'
,
$course
->
preview_pic
);
$sourceUrl
=
$qiniu
->
getUrl
(
'video'
,
$courseware
->
name
);
$baseUrl
=
$qiniu
->
getStorageConfig
(
'video'
,
'url'
)
.
$courseware
->
name
;
$avUrl
=
$qiniu
->
getAuthInstance
()
->
privateDownloadUrl
(
$baseUrl
.
'?avinfo'
);
return
$this
->
render
(
'detail'
,
compact
(
'course'
,
'courseware'
,
'class'
,
'previewUrl'
,
'sourceUrl'
));
return
$this
->
render
(
'detail'
,
compact
(
'course'
,
'courseware'
,
'class'
,
'previewUrl'
,
'sourceUrl'
,
'avUrl'
));
}
/**
...
...
src/backend/views/course/detail.php
View file @
c2b2faad
<?php
/**
* @var $class \common\models\Classes
* @var $course \common\models\Course
* @var $previewUrl string
* @var $sourceUrl string
* @var $avUrl string
*/
use
yii\helpers\Html
;
...
...
@@ -11,4 +15,7 @@ $this->title = $course->name;
<p>
<?=
$class
->
name
?>
</p>
<div><img
src=
"
<?=
$previewUrl
?>
-m.preview"
></div>
<div>
<?=
$course
->
intro
?>
</div>
<p>
[
<a
href=
"
<?=
$sourceUrl
?>
"
target=
"_blank"
>
下载源视频
</a>
]
</p>
\ No newline at end of file
<p>
[
<a
href=
"
<?=
$sourceUrl
?>
"
target=
"_blank"
>
下载源视频
</a>
]
[
<a
href=
"
<?=
$avUrl
?>
"
target=
"_blank"
>
AVINFO
</a>
]
</p>
\ No newline at end of file
src/common/libs/QiniuTranscode.php
View file @
c2b2faad
...
...
@@ -145,8 +145,9 @@ class QiniuTranscode
//FPS 对比
//Todo: 目前FPS的测算方法都不是很正确,不管是 r_frame_rate 还是 avg_frame_rate 多种情况下结果不正确,还需要继续研究
//因为预算不是很正确,所以在 FPS 在于目标值并超过 10 以上时才转换
$frate
=
explode
(
'/'
,
$video
[
'avg_frame_rate'
]);
if
(
$frate
[
0
]
/
$frate
[
1
]
>
$target
[
'fps'
])
{
if
(
$frate
[
0
]
/
$frate
[
1
]
>
$target
[
'fps'
]
+
10
)
{
$fopsMain
.=
'/r/'
.
$target
[
'fps'
];
}
...
...
@@ -191,7 +192,7 @@ class QiniuTranscode
$fops
=
''
;
//如果视频不是目标格式,或有必要参数,则进行转码
if
(
$force
||
strpos
(
$avInfo
[
'format'
][
'format_name'
],
self
::
TARGET_FORMAT
)
===
false
)
{
if
(
$force
||
$fopsMain
||
strpos
(
$avInfo
[
'format'
][
'format_name'
],
self
::
TARGET_FORMAT
)
===
false
)
{
$fops
=
'avthumb/'
.
self
::
TARGET_FORMAT
.
$fopsMain
.
$fopsAddon
;
}
...
...
src/frontend/controllers/MyCourseController.php
View file @
c2b2faad
...
...
@@ -263,9 +263,7 @@ class MyCourseController extends \yii\web\Controller
}
//保存课程数据
if
(
!
$course
->
update
())
{
Utils
::
ajaxResponse
(
false
,
'课程保存失败'
);
}
$course
->
update
();
//保存讲师与课程关联数据
CourseTeacher
::
autoSaveRelations
(
$course
->
id
,
$form
->
teacher
);
...
...
@@ -304,7 +302,7 @@ class MyCourseController extends \yii\web\Controller
AttachUpload
::
claimTmpAttachs
(
$form
->
tmp
,
'course:'
.
$course
->
id
);
Utils
::
ajaxResponse
(
true
,
null
,
[
'course_id'
=>
$course
->
id
]);
Utils
::
ajaxResponse
(
true
,
null
,
[
'course_id'
=>
$course
->
id
,
'recheck'
=>
$recheck
]);
}
/**
...
...
src/frontend/models/SignupForm.php
View file @
c2b2faad
...
...
@@ -36,7 +36,7 @@ class SignupForm extends Model
[[
'password'
,
'rePassword'
],
'required'
],
[
'password'
,
'string'
,
'min'
=>
6
],
[
'rePassword'
,
'string'
,
'min'
=>
6
],
[
'rePassword'
,
'compare'
,
'compareAttribute'
=>
'password'
],
[
'rePassword'
,
'compare'
,
'compareAttribute'
=>
'password'
,
'message'
=>
'密码不一致'
],
[
'from'
,
'integer'
],
[
'verifyCode'
,
'required'
],
[
'verifyCode'
,
'captcha'
,
'message'
=>
'验证码不正确'
]
...
...
@@ -49,7 +49,9 @@ class SignupForm extends Model
public
function
attributeLabels
()
{
return
[
'verifyCode'
=>
''
'verifyCode'
=>
''
,
'password'
=>
''
,
'rePassword'
=>
''
,
];
}
...
...
src/frontend/views/layouts/center.php
View file @
c2b2faad
...
...
@@ -51,14 +51,15 @@ $this->registerCss('[v-cloak] {display:none;}');
?>
<?php
$this
->
beginPage
()
?>
<!DOCTYPE html>
<html
lang=
"
<?=
\Yii
::
$app
->
language
?>
"
>
<html
lang=
"
<?=
\Yii
::
$app
->
language
?>
"
>
<head>
<meta
charset=
"
<?=
Yii
::
$app
->
charset
?>
"
>
<meta
name=
"viewport"
content=
"width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no"
>
<meta
http-equiv=
"X-UA-Compatible"
content=
"IE=edge,chrome=1"
>
<title>
<?=
$this
->
title
?
Html
::
encode
(
$this
->
title
)
.
'-'
:
''
?>
云涯
</title>
<?=
Html
::
csrfMetaTags
()
?>
<?php
$this
->
head
()
?>
<meta
charset=
"
<?=
Yii
::
$app
->
charset
?>
"
>
<meta
name=
"viewport"
content=
"width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no"
>
<meta
http-equiv=
"X-UA-Compatible"
content=
"IE=edge,chrome=1"
>
<title>
<?=
(
$this
->
title
?
Html
::
encode
(
$this
->
title
)
.
'-'
:
''
)
?>
云涯
</title>
<link
rel=
"shortcut icon"
href=
"
<?=
AppAsset
::
getStaticUrl
(
'img/favicon.ico'
)
?>
"
>
<?=
Html
::
csrfMetaTags
()
?>
<?php
$this
->
head
()
?>
</head>
<body>
<?php
$this
->
beginBody
();
?>
...
...
@@ -122,4 +123,4 @@ $this->registerCss('[v-cloak] {display:none;}');
<?php
$this
->
endBody
();
?>
</body>
</html>
<?php
$this
->
endPage
();
?>
<?php
$this
->
endPage
();
?>
\ No newline at end of file
src/frontend/views/test/index.php
View file @
c2b2faad
...
...
@@ -18,21 +18,109 @@
<link
href=
"http://vjs.zencdn.net/5.0.2/video-js.css"
rel=
"stylesheet"
>
<script
src=
"http://vjs.zencdn.net/ie8/1.1.0/videojs-ie8.min.js"
></script>
<script
src=
"http://vjs.zencdn.net/5.0.2/video.js"
></script>
<script
src=
"http://lib.sinaapp.com/js/jquery/1.9.1/jquery-1.9.1.min.js"
></script>
<style>
/*审核中视频样式*/
.video-main
{
position
:
relative
;
height
:
500px
;
width
:
100%
;
background-color
:
#444
;
color
:
#fff
;
text-align
:
center
;
}
.video-main
i
{
display
:
block
;
font-size
:
48px
;
padding-top
:
170px
;
padding-bottom
:
40px
;
}
.video-main
>
p
{
font-size
:
16px
;
margin-top
:
40px
;
line-height
:
1.8
;
}
/*videojs reset*/
.vjs-big-play-centered
.vjs-big-play-button
{
z-index
:
2
!important
;
}
.video-js
.vjs-mute-control
,
.video-js
.vjs-volume-menu-button
,
.vjs-icon-volume-high
{
font-size
:
12px
;
}
.video-js
.vjs-big-play-button
,
.video-js
.vjs-play-control
,
.vjs-icon-play
{
font-size
:
13px
;
}
.video-js
.vjs-fullscreen-control
{
position
:
absolute
;
right
:
0
;
bottom
:
0
;
}
.video-js
.vjs-control-bar
{
background-color
:
transparent
!important
;
bottom
:
6px
!important
;
}
.video-js
.vjs-progress-control
{
position
:
absolute
!important
;
width
:
100%
!important
;
left
:
0
!important
;
bottom
:
26px
!important
;
}
.vjs-fullscreen-control
{
position
:
absolute
!important
;
right
:
0
!important
;
bottom
:
0
!important
;
}
.vjs-icon-fullscreen-enter
,
.video-js
.vjs-fullscreen-control
{
font-size
:
12px
;
}
.vjs-remaining-time
{
position
:
absolute
!important
;
right
:
50px
;
}
.video-js
.vjs-play-progress
{
background-color
:
#f12b24
!important
;
}
</style>
</head>
</head>
<body>
<
video
id=
"example_video_1"
class=
"video-js vjs-default-skin"
controls
preload=
"none"
width=
"640"
height=
"264"
poster=
"http://img.c.pp.cc/preview/53/5c/de/YeTMnlVXEeeX2500.jpg-l.preview"
data-setup=
"{}
"
>
<
source
src=
"http://vdn.c.pp.cc/free/21/c9/e1/71O8rEzYiOUxp2N3p8k9.mp4?e=1477984337&token=Tm34_10r5kYLrUProU3Rx82HXCOnYuF8MhirB_YR:c2sU88scg6ePLF8l2UEXdglXCtU="
type=
"video/mp4"
>
<track
kind=
"captions"
src=
"../shared/example-captions.vtt"
srclang=
"en"
label=
"English"
></track
>
<!-- Tracks need an ending tag thanks to IE9 -->
<track
kind=
"subtitles"
src=
"../shared/example-captions.vtt"
srclang=
"en"
label=
"English"
></track>
<!-- Tracks need an ending tag thanks to IE9 --
>
<p
class=
"vjs-no-js"
>
To view this video please enable JavaScript, and consider upgrading to a web browser that
<a
href=
"http://videojs.com/html5-video-support/"
target=
"_blank"
>
supports HTML5 video
</a></p
>
</video>
</
body
>
<
div
style=
"width:100%;height:100%"
class=
"video-main
"
>
<
video
id=
"my-video-play"
class=
"video-js vjs-default-skin vjs-big-play-centered"
preload=
"none"
width=
"640"
height=
"264"
poster=
"http://img.c.pp.cc/preview/53/5c/de/YeTMnlVXEeeX2500.jpg-l.preview"
data-setup=
"{}"
>
<source
src=
"http://vdn.c.pp.cc/free/21/c9/e1/71O8rEzYiOUxp2N3p8k9.mp4?e=1477984337&token=Tm34_10r5kYLrUProU3Rx82HXCOnYuF8MhirB_YR:c2sU88scg6ePLF8l2UEXdglXCtU="
>
<!-- Tracks need an ending tag thanks to IE9 --
>
</video>
</
div
>
</body>
<script>
window
.
VIDEOJS_NO_BASE_THEME
=
true
;
var
rate
=
9
/
16
;
var
w
=
$
(
'.video-main'
).
width
();
var
h
=
w
*
rate
;
var
myPlayer
=
videojs
(
"my-video-play"
,
{
"controls"
:
true
,
"autoplay"
:
false
,
"language"
:
"zh-CN"
,
"width"
:
w
,
"height"
:
h
,
}).
ready
(
function
()
{
$
(
'#my-video-play'
).
css
(
'width'
,
'100%'
);
var
wVideo
=
$
(
'#my-video-play'
).
width
();
var
hVideo
=
wVideo
*
rate
;
$
(
'#my-video-play'
).
css
(
'height'
,
hVideo
);
window
.
onresize
=
function
()
{
var
wVideo
=
$
(
'#my-video-play'
).
width
();
var
hVideo
=
wVideo
*
rate
;
$
(
'#my-video-play'
).
css
(
'height'
,
hVideo
);
};
});
</script>
</html>
src/frontend/web/js/home/components/video-play.vue
View file @
c2b2faad
...
...
@@ -53,7 +53,7 @@
data-toggle="
modal
" disabled="
disabled
">已购买
</button>
<button v-else
class="
btn
btn
-
danger
m
-
l
-
20
mb
-
left
"
@click="
isMeTips
"
class="
btn
btn
-
danger
m
-
l
-
20
mb
-
left
"
>购买 ¥{{coursewareInfo.price
}}
</button>
</template>
...
...
@@ -195,6 +195,10 @@
}
}
,
methods: {
isMeTips(){
layer.alert('您发布的课程,无需购买可直接观看。', {'icon': 1, 'title': '提示'
}
)
}
,
payClick(){
if(!this.coursewareInfo.isGuest){
if(this.isMobile == false && this.isWeixin == false){
...
...
src/frontend/web/js/home/components/video.vue
View file @
c2b2faad
...
...
@@ -72,6 +72,7 @@
var
h
=
w
*
rate
;
var
myPlayer
=
videojs
(
"my-video-play"
,
{
"techOrder"
:
[
'html5'
,
'flash'
],
"customControlsOnMobile"
:
true
,
"controls"
:
true
,
"autoplay"
:
false
,
"language"
:
"zh-CN"
,
...
...
@@ -88,7 +89,7 @@
var
hVideo
=
wVideo
*
rate
;
$
(
'#my-video-play'
).
css
(
'height'
,
hVideo
);
};
})
})
;
//没购买显示
if
(
this
.
videoInfo
.
isShop
==
false
)
{
myPlayer
.
on
(
'play'
,
function
()
{
...
...
src/frontend/web/js/my-course/edit.js
View file @
c2b2faad
...
...
@@ -66,7 +66,8 @@ var vm = new Vue({
time
:
2000
,
icon
:
1
,
end
:
function
()
{
location
.
href
=
"/my-course/"
;
location
.
href
=
t
.
data
.
recheck
?
"/my-course/result?id="
+
t
.
data
.
course_id
+
"&action=edit"
:
"/my-course/"
;
},
shade
:[
0.2
,
'#000'
]
});
...
...
src/frontend/web/js/utils/utils.js
View file @
c2b2faad
...
...
@@ -12,7 +12,7 @@ var Utils = {
while
(
s
.
length
<
size
)
s
=
"0"
+
s
;
return
s
;
},
secondsToHms
(
seconds
){
secondsToHms
:
function
(
seconds
){
var
hour
=
Math
.
floor
(
seconds
/
3600
);
var
min
=
Math
.
floor
(
seconds
/
60
);
var
sec
=
Math
.
floor
(
seconds
%
60
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment