编程语言
首页 > 编程语言> > php – Laravel 5 HTTP响应,M4V文件和iOS MPMoviePlayerViewController

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