AliYunVodController.php 3.4 KB

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