php – Laravel 5 HTTP响应,M4V文件和iOS MPMoviePlayerViewController

我有一种情况让我难过,所以我正在寻找任何可以得到的帮助.

我有一个iOS应用程序,它使用MPMoviePlayerViewController播放由Laravel 5站点管理的M4V视频文件.

如果从Laravel 5 /公共文件夹直接下载视频文件,则视频文件可以完美地播放(在iOS中).但是,我通常会从Laravel 5的Storage Facade存储和提供视频文件,因为我最终将使用S3和弹性转码器.

这适用于FireFox与QuickTime浏览器插件,VLC和其他流视频客户端,但不适用于我们的iOS应用程序.

据我所知,MPMoviePlayerViewController对于如何格式化HTTP响应非常挑剔.我尝试过StreamedResponse,但这似乎没有帮助.

因此,例如,直接从/ public文件夹中提取文件的以下URL可以在iOS上正常工作:

http://172.16.160.1/video_ae9a7da0efa211e4b115f73708c37d67.m4v

但是,如果我使用Laravel 5从存储中提取文件,iOS将无法播放.

http://172.16.160.1/api/getfile/f444b190ef5411e4b7068d1890d109e8/video_ae9a7da0efa211e4b115f73708c37d67.m4v

注意iOS没有提供任何有意义的错误,以帮助调试它,但我很肯定它是如何通过Laravel 5制作我的HTTP响应.

这是我的路线:

Route::get('myapi/getfile/{filename?}', 'APIController@getfile')->where('filename', '(.*)');

这是我的控制器:

    public function getfile($filename)
{
    return $api = API::getfile($filename);
}

这是我的模型:

public static function getfile($filename) {
$file = Storage::disk('local')->get('Files/'.$filename);
return (new Response($file, 200))->header('Content-Type', 'video/mp4');
}

如果我遗漏了任何支持信息,请告诉我,我会发布.我的下一步可能是设置Wireshark测试平台,看看握手的样子.

先谢谢您的帮助.

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...