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