視頻伺服器如何暫停
❶ 安卓視頻播放(阿里雲視頻點播播放器SDK+SurfaceView)
本篇文章講述使用阿里雲視頻視頻播放sdk中的高級播放器加上SurfaceView實現,採用id+STS方法進行視頻播放。
流程:用戶App獲取STS憑證 -> 服務端下發STS憑證 -> 用戶上傳視頻並獲取vid -> 服務端獲取STS憑證 -> 將STS憑證下發給客戶端 -> 完成視頻播放。
請看阿里雲文檔=========》》》》》》 阿里雲-高級播放器Android使用說明
接下來我們來看一下安卓給我們提供的手勢控制類
介面
setOnTouchListener(this);
其中定義了四種狀態 NONE = 0, VOLUME = 1, BRIGHTNESS = 2, FF_REW = 3;
接下來我們來看一下我們自定義的SurfaceViewOnGestureListener繼承 GestureDetector.SimpleOnGestureListener主要用到了
onDown(MotionEvent e)
onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY)兩個方法
a.在onDown的時候把狀態設置NONE
b.判斷橫向滑動的距離大於縱向滑動的距離,就把模式賦值為快進和後退
c.在onScroll中進行狀態賦值,根據滑動的距離,如果按下的點在屏幕的左半部分就吧狀態設置為調節亮度BRIGHTNESS,如果在右半部分就是調節音量
d.各種情況調用各自的介面方法
快進和後退,我們需要知道的就是我們滑動的距離如何與視頻的長度關聯起來。
那麼咱們就可以把視頻的總長度與屏幕的總長度相比,這樣就能知道你手指滑動的距離占視頻的多少了。
我們可以通過 l = ration / mySurfaceView.getWidth();來獲得這個比例,然後用當前的進度加上指滑動的距離占視頻的長度就是要播放的視頻位置
抬起點的x坐標與按下點的X坐標所得的距離,大於0是快進,小於零是後退。
系統的音量有很多,包括通話音量值,系統鈴聲值,音樂音量值,鬧鈴音量值,等等吧。
做一下筆記以備以後用到
視頻播放我們用的是音樂音量值,同樣的道理,我們需要把音量和高度進行關聯,我們可以控制項的高度閉上最大音量得出比例後就可以知道你滑動的距離占音量的多少了。
這里有個注意點就是activity是當前的這個界面,設置的是當前的界面,離開這個界面後就不管用了。
相同的道理和滑動調節音量一樣也是獲得屏幕的高度比上最大的亮度,然後計算滑動的距離轉換成亮度是多少。(這里不多講了)
為什麼會出現黑屏,就是按Home鍵再點App回來後,只有聲音沒有圖片的問題,因為我們用的是SurfaceView,每次點擊Home鍵時會銷毀這個SurfaceView,再回來時又會重新創建,這樣我們的阿里雲播放器與SurfaceView就沒有綁定了,畫面就沒有了。
這樣我們需要 給surfaceView添加mySurfaceView.getHolder().addCallback(this);
我們在按home鍵的時候會走surfaceDestroyed。這樣,我們就可以在這里做一個標識,讓他暫停,然後再回來的時候就會走surfaceCreated,判斷標識,然後進行處理就可以了。切記一定要重新讓aliyunVodPlayer與SurfaceView進行關聯,這樣才能有畫面也有聲音。
由於我們的視頻在阿里雲的伺服器上存著,訪問阿里雲的伺服器需要臨時憑證,我們通過STS來獲取Token,但是這個Token是有時間限制,正好阿里雲的播放器給我們提供了播放視頻出錯時候的回調介面,我們只需要在這裡面進行重新請求Token就可以了
❷ 要一個能播放視頻文件的php 源碼,能制「播放」「暫停」「停止」等
這個播放視頻確實是前端控制的,如果你想簡單點的話,那就搜搜html5里的video,這個元素能夠播放視頻,還能通過js來控制,比如獲取當前影片的總時長和播放時長,便於下次的續播,等等。
給你看看這段代碼
===================
<!DOCTYPE HTML>
<html>
<head>
<title>html5_video</title>
<meta charset="UTF-8"/>
</head>
<body>
<div>
<video id="video" width="400" height="300" controls="controls">
<source src="mov_bbb.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>
</div>
<div id="check"></div>
<input type="button" id="change" value="播放" />
</html>
<script type="text/javascript">
/*
可以為video添加的事件還有很多,比如:
error 視頻載入時發生錯誤
progress 正在載入視頻時
loadstart 瀏覽器開始載入視頻元素時
volumechange音量被改變時
當然,video自己本身還有一些事件和屬性
startTime float 開始播放時間
currentTime float 獲取或設定當前視頻的播放時間
ration float 視頻的總播放時長
paused boolean 當前影片是否處於暫停狀態
ended boolean 影片是否已結束
volume int 獲取或設置音量
pause() 使影片暫停
play() 使影片播放
*/
var video = document.getElementById("video");
var check = document.getElementById("check");
var change = document.getElementById("change");
//暫停事件
video.addEventListener("pause", function(){
var msg = "處於暫停狀態,當前播放時間為:"+video.currentTime;
check.innerHTML = msg;
});
//播放事件
video.addEventListener("playing", function(){
var msg = "開始播放,從"+video.currentTime+"播放";
check.innerHTML = msg;
});
//正在拖動播放條事件
video.addEventListener("seeking", function(){
var msg = "正在拖動";
check.innerHTML = msg;
});
//拖動播放條結束事件
video.addEventListener("seeked", function(){
var msg = "拖動結束";
check.innerHTML = msg;
});
//視頻結束時
video.addEventListener("ended", function(){
var msg = "視頻已播放完畢,總時長為:"+video.ration;
check.innerHTML = msg;
});
change.addEventListener("click", function(){
if(video.paused){
video.play();
change.value = "暫停";
}else{
video.pause();
change.value = "播放";
}
})
</script>