input('tk', ''); if ($token != $innerToken) { return self::responseM3u8Raw(''); } $module = trim(strtolower($request->input('module', ''))); $pk = substr($request->input('pk', ''), 0, 16); $rateType = substr($request->input('rate_type', ''), 0, 32); // 指定的比特率. $item = null; $m3u8PlayUrl = ''; switch ($module) { case 'video': $item = $videoRepository->findBy('id', $pk, ['id', 'mu']); if (!empty($item->mu)) { $m3u8PlayUrl = $item->mu; } break; case 'ad': $item = $adRepository->findBy('id', $pk, ['id', 'play']); if (!empty($item->play)) { $m3u8PlayUrl = $item->play; } break; case 'shop': $item = $shopsRepository->findBy('uid', $pk, ['video_address']); if (!empty($item->video_address)) { $m3u8PlayUrl = $item->video_address; } break; case 'goods': $item = $goodsRepository->findBy('uid', $pk, ['video_address']); if (!empty($item->video_address)) { $m3u8PlayUrl = $item->video_address; } break; } if (empty($m3u8PlayUrl)) { return self::responseM3u8Raw(''); } $raw = M3u8CacheRepository::getMu38Raw($m3u8PlayUrl, false); return self::responseM3u8Raw($raw); } /** * @return string[] */ private function getHeaders() { return [ 'Content-Type' => 'application/x-mpegURL', ]; } /** * 返回raw * @param $raw * @return \Psr\Http\Message\ResponseInterface */ private function responseM3u8Raw($raw) { return response($raw, 200, self::getHeaders()); } }