我正在尝试使用guzzle来加载并播放在子域(subdomain.domain.com)中上传到主域(domain.com)中的位置的远程视频。
我发现很难播放视频。
刀片文件中的视频播放器具有以下视频源网址
`<source src="{{url('video/'.$token.'/'.$videoname)}}" type="{{$video_mime_type}}">
...`
源的路由通向带有以下代码的控制器
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Storage;
use Response;
use File;
use GuzzleHttp\Mimetypes;
use GuzzleHttp\Client;
use GuzzleHttp\Stream\Stream;
use GuzzleHttp\Stream\Utils;
class ResourceController extends Controller
{
public function show_video_api($videoname)
{
$client = new Client(['base_uri' => 'http://subdomain.domain.com/api/']);
$resp = $client->request('GET',"video/".$videoname,['stream'=>true]);
$body=$resp->getBody();
echo $body;
}
}
子域api方法如下:
<?php
namespace App\Http\Controllers\Api;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Log;
class ServiceController extends Controller
{
public function video($videoname)
{
return response()->file(storage_path("app/lesson-files/$videoname"));
}
}
然而,视频没有播放。我需要尽可能快地解决这个问题,所以我将非常感谢你帮助解决这个问题。
谢谢
答案 0 :(得分:0)
我认为在Laravel中你必须返回一个Response
,而不仅仅是打印到标准输出(不确定它是否被缓冲)。请创建Response
对象,而不仅仅是echo
内容。
但最好是查看sink
option in Guzzle并使用它直接在cURL中输出响应,跳过PHP。
但是......您可能不希望以任何方式在PHP中执行此操作,因为这是一种非常慢的视频服务方式。看看nginx,它对于这样的用例非常灵活和快速。