Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.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
Video 上传的视频未在移动浏览器中播放,但正在桌面broswer上播放_Video_Mobile_Browser_Nginx_Video Streaming - Fatal编程技术网

Video 上传的视频未在移动浏览器中播放,但正在桌面broswer上播放

Video 上传的视频未在移动浏览器中播放,但正在桌面broswer上播放,video,mobile,browser,nginx,video-streaming,Video,Mobile,Browser,Nginx,Video Streaming,我已经设置了一个服务器(gunicorn和nginx),使用Python/Django上传视频,并在浏览器中观看。我使用的视频播放器是videojs。所有视频都是h.264 mp4。视频大小在5-40MB之间 视频上传很好,我也可以在桌面和笔记本电脑浏览器上观看上传的视频 问题是我不能在移动设备上观看相同的视频(在桌面浏览器上播放) 我得到这个错误: 无法加载此视频,可能是因为服务器或网络出现故障,或者是因为不支持该格式 怎么了 更新 Input #0, mov,mp4,m4a,3gp,3g2,

我已经设置了一个服务器(gunicorn和nginx),使用Python/Django上传视频,并在浏览器中观看。我使用的视频播放器是videojs。所有视频都是h.264 mp4。视频大小在5-40MB之间

视频上传很好,我也可以在桌面和笔记本电脑浏览器上观看上传的视频

问题是我不能在移动设备上观看相同的视频(在桌面浏览器上播放)

我得到这个错误:

无法加载此视频,可能是因为服务器或网络出现故障,或者是因为不支持该格式

怎么了

更新

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'faststart.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf56.40.100
  Duration: 00:03:36.56, start: 0.046440, bitrate: 350 kb/s
    Stream #0:0(und): Video: h264 (Constrained Baseline) (avc1 / 0x31637661), yu
v420p, 640x360 [SAR 1:1 DAR 16:9], 249 kb/s, 23.98 fps, 23.98 tbr, 24k tbn, 47.9
5 tbc (default)
    Metadata:
      handler_name    : VideoHandler
    Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, flt
p, 96 kb/s (default)
    Metadata:
      handler_name    : SoundHandler
然而,我在手机和Opera上用webm视频测试了手机浏览器,Chrome可以完美地播放视频。这是我用于webm的命令:

ffmpeg -i test2.mov -codec:v libvpx -quality good -cpu-used 0 -b:v 600k -maxrate 600k -bufsize 1200k -qmin 10 -qmax 42 -vf scale=-1:480 -threads 4 -codec:a vorbis -b:a 128k -strict -2 test2_webmmm.webm
这适用于h.264 mp4(仅适用于firefox):

更新

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'faststart.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf56.40.100
  Duration: 00:03:36.56, start: 0.046440, bitrate: 350 kb/s
    Stream #0:0(und): Video: h264 (Constrained Baseline) (avc1 / 0x31637661), yu
v420p, 640x360 [SAR 1:1 DAR 16:9], 249 kb/s, 23.98 fps, 23.98 tbr, 24k tbn, 47.9
5 tbc (default)
    Metadata:
      handler_name    : VideoHandler
    Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, flt
p, 96 kb/s (default)
    Metadata:
      handler_name    : SoundHandler
更新

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'faststart.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf56.40.100
  Duration: 00:03:36.56, start: 0.046440, bitrate: 350 kb/s
    Stream #0:0(und): Video: h264 (Constrained Baseline) (avc1 / 0x31637661), yu
v420p, 640x360 [SAR 1:1 DAR 16:9], 249 kb/s, 23.98 fps, 23.98 tbr, 24k tbn, 47.9
5 tbc (default)
    Metadata:
      handler_name    : VideoHandler
    Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, flt
p, 96 kb/s (default)
    Metadata:
      handler_name    : SoundHandler
以下是我在此过程中收集到的一些要点:

  • 我从YouTube下载并上传到服务器上的一些视频没有编码,在所有浏览器上都播放得很好
  • 但是,如果我对同一视频(YouTube视频)进行编码并将其上传到服务器上,它将不会在移动设备上播放,而只能在桌面浏览器上播放
  • 我从手机(三星s4和iphone6)上拍摄并用ffmpeg编码的视频不会在手机浏览器上播放,只能在桌面浏览器上播放
  • 但是,托管在AmazonS3上的相同视频(我从手机上获取)的URL在所有浏览器上都播放得很好(即使是非编码视频)

  • 什么正式文件:

    流媒体和AAC播放器兼容性

    默认情况下,使用libfdk_AAC编码AAC文件时,元数据 ('moov'atom)写在 文件的结尾。要启用编码文件的流式传输 “moov”原子必须在“mdat”原子之前移动。另外一些 AAC播放器实现在解码此类文件时遇到问题

    FFmpeg提供选项“-movflags+faststart”,涵盖编码过程中可使用的功能:

    ffmpeg -i input.wav -c:a libfdk_aac -movflags +faststart output.m4a
    
    可以使用“qt faststart”程序修改现有m4a文件,该程序与FFmpeg一起发布在“tools”目录中

    qt-faststart input.m4a output.m4a
    
    所以你可以试试这个:

    ffmpeg -i inputfile.avi -codec:v libx264 -profile:v baseline -preset slow -b:v 250k -maxrate 250k -bufsize 500k -vf scale=-1:360 -threads 0 -codec:a libfdk_aac -movflags +faststart output.mp4
    

    我检查了视频本身,它看起来很好,如果下载到桌面并在Mac上用Chrome或Safari打开,就可以播放了

    它还可以使用上面提供的链接(54.169.222.113/video/62)在Mac上的Chrome上进行网络播放,但不能在Safari上进行。它还可以在默认浏览器和Chrome上的Android平板电脑(三星Note)上通过网络链接进行播放

    不过,视频本身在Safri的桌面上播放得很好。这样做会绕过你的网站,包括你的脚本、HTML和video.js播放器

    查看videojs.com网站,他们使用的是相同版本的video.js(4.12.11)正如您所知,但当您查看源代码时,他们的行数似乎有所不同,这不应该是相同版本号的情况。很可能他们只是简单地添加了一些开发人员更改以进行测试,但我认为值得再次访问您的HTML和video.js设置,并尝试尽可能地匹配它到videojs.com网站(我想你用它作为起点,因为它离你很近,但现在不太一样)

    更新

    好的-我从您的链接下载了视频,与您在上面提供的一样,1437658474_37_faststart.mp4,并将其作为简单的静态文件添加到本地web服务器中

    在通过网络连接到服务器的以下客户端中,视频可以正常播放:

    • Mac Safari
    • 苹果铬
    • Android标准浏览器和chrome浏览器
    • iPhone safari
    我还编辑了videos.com页面(在本地使用浏览器工具)并添加了您的视频,但它不会播放

    在某些浏览器上,您的视频似乎存在一个微妙的问题,这在使用videojs时表现出来-使用您的站点可以很容易地演示这个问题:

    • 该视频从未在MAC上的Safari上播放过
    • 视频总是在MAC上的Chrome上播放

    除非你已经设法以某种方式离线解决了这个问题(如果是的话,请让我们知道这是一个有趣的问题!),否则我认为在videojs论坛上提出这个问题是值得的。

    我通过使用
    qtfaststart
    (python)进行两次编码解决了我的问题起初我使用的是
    -movflags+faststart
    ,不知道为什么它不工作。但现在它几乎在所有浏览器中都能工作

    这是我使用的代码:

    第一关

    ffmpeg -i mobile.mp4 -codec:v libx264 -profile:v baseline -preset slow -b:v 250k -maxrate 250k -bufsize 500k -vf scale=-1:360 -threads 0 -codec:a libfdk_aac -movflags +faststart mobile-output.mp4
    
    第二关

    qtfaststart mobile-output.mp4 qt-mobile-output.mp4
    

    H.264 baseline+AAC?@Anatoly是的。我使用了这个命令
    ffmpeg-I inputfile.avi-codec:v libx264-profile:v baseline-preset slow-b:v 250k-maxrate 250k-bufsize 500k-vf scale=-1:360-threads 0-codec:a libfdk_AAC-b:a 96k output.mp4
    。尽管有一件事,视频在firefox手机浏览器中播放得很好,但没有打开和关闭roid chrom和ios safari。你能提供其中一个视频的链接吗?@Robin你能复制粘贴ffprobe output.mp4的结果吗?@Mick是的,你可以在这里找到它,因为视频仍然无法播放mobile@Anatoly-奇怪,这不是我看到的。我刚刚用默认的bro在三星Note 10上播放了54.169.222.113/video/62/wser和它的播放效果很好。你可能在使用iOS设备吗?@Mick哦,是吗。然后我会从video js获得确切的代码,并尝试一次,然后告诉你。@Mick我有iOS设备,它应该支持带有流的容器:h.264和AAC@Mick我按照你的要求更换了视频播放器,但还是一样。我会测试一下让你知道,谢谢,我只是