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测试平台,看看握手的样子.
先谢谢您的帮助.
标签:php,laravel-5,ios,iphone,video-streaming 来源: https://codeday.me/bug/20191008/1870196.html