Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在谷歌应用程序引擎Blobstore上提供mp4流媒体视频_Java_Google App Engine_Video Streaming_Mp4_Blobstore - Fatal编程技术网

Java 如何在谷歌应用程序引擎Blobstore上提供mp4流媒体视频

Java 如何在谷歌应用程序引擎Blobstore上提供mp4流媒体视频,java,google-app-engine,video-streaming,mp4,blobstore,Java,Google App Engine,Video Streaming,Mp4,Blobstore,我使用GAE来服务大文件,我可以使用一个简单的blobstoreService.service(key,res)成功地服务mp3如果我将资源url放入浏览器,媒体控件将出现和/或媒体播放器将启动,音乐将在下载完成之前启动 然而,当我把一个MP4URL放到Chrome中时,控件出现了,但什么也没发生。以下是我所做的: 没有避免下载的内容配置。如果我放置了内容配置,那么浏览器将下载视频 我甚至使用ffmpeg转换视频,并将-movflags快速启动选项放在那里,但没有区别 我还将响应头设置为第一个请

我使用GAE来服务大文件,我可以使用一个简单的
blobstoreService.service(key,res)成功地服务mp3
如果我将资源url放入浏览器,媒体控件将出现和/或媒体播放器将启动,音乐将在下载完成之前启动

然而,当我把一个MP4URL放到Chrome中时,控件出现了,但什么也没发生。以下是我所做的:

  • 没有避免下载的内容配置。如果我放置了内容配置,那么浏览器将下载视频
  • 我甚至使用ffmpeg转换视频,并将-movflags快速启动选项放在那里,但没有区别
  • 我还将响应头设置为第一个请求的
    Accept Ranges:bytes
    ,并且我观察到下一个请求仍然要求完整的75MB范围。即使浏览器要求全部,我是否应该只提供部分服务
  • 或者如何让浏览器知道我想一件一件地提供服务,这样请求就会有范围。内容长度是否必要?我应该处理HEAD请求吗?我相信现在只有我的servlet进程才能得到
  • 我的url就像Chrome控制台显示只有1MB被下载,然后就停止了
  • html代码如下所示,只是我的GAE url是src。示例mp4可以工作,但如果我的gae链接在那里,它根本不显示视频

    您的浏览器不支持HTML5视频。

  • 问题: 在GAE服务器端使用流媒体服务视频需要做些什么

    答复 标记的答案有足够的关于如何提供mp4文件的信息,它还提供了一个用于演示的实时网页。从那个演示中,我可以看出我的网站可以提供mp4文件,只要Chrome浏览器能够解码它。我遇到的问题是,Chrome无法识别ffmpeg中使用的编解码器。换成H.264,一切正常

    以下是ffmpeg命令行的一个示例,其中OK.MTS是摄像机文件,output1.mp4将被上传:

    ffmpeg -i ok.MTS -codec:v libx264 -profile:v baseline -preset slow -b:v 500k -maxrate 800k -bufsize 1000k -vf scale=-1:432 -threads 0 -b:a 96k output1.mp4
    

    处理程序是否将正确的内容类型放入响应头中?您需要设置“内容类型:视频/mp4”才能正确播放视频

    是我在AppEngine上写的一个测试站点,它可以播放来自云存储和BlobStore的mp3、ogg和mp4文件


    是指向BlobStore中使用serve()返回该文件的mp4文件的链接。当我将此链接粘贴到chrome中时,内容将正确播放。

    感谢您的网站。真奇怪。我的浏览器也有类似的响应,只是Chrome只下载1MB并停止。另一个文件在1.1M处停止。我注意到,尽管我明确尝试设置ContentLength,但标头没有设置。我认为我们不允许您在使用serve()时设置该标头,因为响应是分块的。感谢您提供此信息。如果只使用bsService.service(key,res),blob服务如何查看范围?我使用Chrome,可以看到响应范围与请求范围相匹配,尽管块在几MB后停止。也许我的文件太大了?75MB是不是太大了?请阅读文档,其中特别提到了如何提供一系列服务: