1、確認框架中安裝了第三方alibabacoud控件
實現代碼如下
上傳過程中遇到任務問題,可以進行留言
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
|
<?php namespace App\Api\xxxx\Controllers; use DB; use Illuminate\Http\Request; use AlibabaCloud\Tea\Utils\Utils; use AlibabaCloud\SDK\Vod\V20170321\Vod; use AlibabaCloud\SDK\Vod\V20170321\Models\DeleteImageRequest; use AlibabaCloud\SDK\Vod\V20170321\Models\GetPlayInfoRequest; use AlibabaCloud\SDK\Vod\V20170321\Models\DeleteVideoRequest; use AlibabaCloud\SDK\Vod\V20170321\Models\GetImageInfoRequest; use AlibabaCloud\SDK\Vod\V20170321\Models\CreateUploadVideoRequest; use AlibabaCloud\SDK\Vod\V20170321\Models\CreateUploadImageRequest; use Darabonba\OpenApi\Models\Config; use OSS\OssClient; use AlibabaCloud\Tea\Tea; class CommonController extends XXController { //視頻點播上傳 public function uploadVideo( $fileName , $title ) { $title = explode ( '.' , $param [ 'title' ]); $fileName = $param [ 'fileName' ]; if ( $title [1] == 'mp4' ) { $cateId = 3479; //分類ID,阿里云點播可以設置 } $client = self::createClient( "xxx" , "xxx" ); //根據申請的值放入 $createUploadVideoRequest = new CreateUploadVideoRequest([ 'Action' => 'CreateUploadVideo' , //請求的上傳函數 "fileName" => $fileName , //文件名稱 "cateId" => $cateId , //類型名稱 'title' => $param [ 'title' ], //標題 ]); $createRes = $client ->createUploadVideo( $createUploadVideoRequest ); $videoId = $createRes ->body->videoId; //獲取視頻播放地址需要的參數 $formats = $title [1]; //base64解碼 $uploadAddress = json_decode( base64_decode ( $createRes ->body->uploadAddress), true); $uploadAuth = json_decode( base64_decode ( $createRes ->body->uploadAuth), true); // 使用UploadAuth和UploadAddress初始化OSS客戶端 $ossClient = $this ->init_oss_client( $uploadAuth , $uploadAddress ); $localFile = $fileName ; // 需要上傳到VOD的本地視頻文件的完整路徑 改這個有效果 // 上傳文件,注意是同步上傳會阻塞等待,耗時與文件大小和網絡上行帶寬有關 $result = $this ->upload_local_file( $ossClient , $uploadAddress , $localFile ); //$result = multipart_upload_file($ossClient, $uploadAddress, $localFile); $arr = $this ->playinfo( $videoId , $formats ); $data = Utils::toArray(Tea::merge( $arr ->body)); $brr = array (); $brr [ 'VideoId' ] = $data [ 'VideoBase' ][ 'VideoId' ]; //視頻id $brr [ 'PlayURL' ] = $data [ 'PlayInfoList' ][ 'PlayInfo' ][0][ 'PlayURL' ]; //返回的播放地址 return $brr ; } public function init_oss_client( $uploadAuth , $uploadAddress ) { $ossClient = new OssClient( $uploadAuth [ 'AccessKeyId' ], $uploadAuth [ 'AccessKeySecret' ], $uploadAddress [ 'Endpoint' ], false, $uploadAuth [ 'SecurityToken' ]); $ossClient ->setTimeout(86400*7); // 設置請求超時時間,單位秒,默認是5184000秒, 建議不要設置太小,如果上傳文件很大,消耗的時間會比較長 $ossClient ->setConnectTimeout(10); // 設置連接超時時間,單位秒,默認是10秒 return $ossClient ; } } |
到此這篇關于Laravel框架實現點播上傳阿里云功能的文章就介紹到這了,更多相關Laravel點播上傳阿里云內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!
原文鏈接:https://blog.csdn.net/xi_weina/article/details/120550922