AliYunVodController.php 3.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: Administrator
  5. * Date: 2019-06-15
  6. * Time: 10:53
  7. */
  8. namespace App\Http\Controllers\V1;
  9. use Illuminate\Http\Request;
  10. use Illuminate\Support\Facades\Log;
  11. use Illuminate\Support\Facades\Validator;
  12. use ShaoZeMing\AliVod\SDK\GetPlayInfoRequest;
  13. use ShaoZeMing\AliVod\Services\UploadService;
  14. use ShaoZeMing\Aliyun\Core\DefaultAcsClient;
  15. use ShaoZeMing\Aliyun\Core\Profile\DefaultProfile;
  16. class AliYunVodController extends Controller
  17. {
  18. public function __construct()
  19. {
  20. }
  21. /**
  22. * 获取视频上传凭证信息
  23. * @param Request $request
  24. * @return array
  25. * @throws \ShaoZeMing\Aliyun\Core\Exception\ClientException
  26. * @throws \ShaoZeMing\Aliyun\Core\Exception\ServerException
  27. */
  28. public function getVodUploadAuth(Request $request)
  29. {
  30. $request = $request->all();
  31. $validator = Validator::make($request, [
  32. 'title' => 'required',
  33. 'filename' => 'required',
  34. 'cover_url' => 'url'
  35. ]);
  36. if ($validator->fails()) {
  37. return jsonError($validator->errors()->first());
  38. }
  39. $instance = new UploadService(config('aliyunvod'));
  40. $title = $request['title'];
  41. $filename = $request['filename'];
  42. $coverUrl = isset($request['cover_url']) ?: $request['cover_url'];
  43. try {
  44. $result = $instance->createUploadVideo($title, $filename, '', $coverUrl); //获取视频上传地址和凭证
  45. // $result = $instance->refreshUploadVideo($videoId); //刷新视频上传凭证
  46. // $result = $instance->uploadMediaByURL($url, $title); //url 拉去视屏上传
  47. return $this->jsonSuccess($result);
  48. } catch (\Exception $e) {
  49. return $this->jsonError('获取上传凭证失败' . $e->getMessage());
  50. }
  51. }
  52. public function getPlayUrlByVideoId(Request $request)
  53. {
  54. $request = $request->all();
  55. $validator = Validator::make($request, [
  56. 'video_id' => 'required'
  57. ]);
  58. if ($validator->fails()) {
  59. return jsonError($validator->errors()->first());
  60. }
  61. $videoId = $request['video_id'];
  62. try {
  63. $client = $this->initVodClient(config('aliyunvod.vod.AccessKeyID'), config('aliyunvod.vod.AccessKeySecret'));
  64. $playInfo = $this->getPlayInfo($client, $videoId);
  65. return $this->jsonSuccess($playInfo);
  66. } catch (\Exception $e) {
  67. Log::debug('获取视频地址失败:' . $e->getMessage());
  68. return $this->jsonError('获取视频地址失败');
  69. }
  70. }
  71. private function initVodClient($accessKeyId, $accessKeySecret)
  72. {
  73. $regionId = 'cn-shanghai'; // 点播服务接入区域
  74. $profile = DefaultProfile::getProfile($regionId, $accessKeyId, $accessKeySecret);
  75. return new DefaultAcsClient($profile);
  76. }
  77. private function getPlayInfo($client, $videoId)
  78. {
  79. $request = new GetPlayInfoRequest();
  80. $request->setVideoId($videoId);
  81. $request->setAcceptFormat('JSON');
  82. $playConfig = ['PlayDomain' => 'http://oss.caihongxingqiu.net/'];
  83. $request->setPlayConfig(json_encode($playConfig));
  84. return $client->getAcsResponse($request);
  85. }
  86. }