上载的视频无法在移动浏览器中播放,但可以在桌面浏览器中播放
作者:互联网
我已经设置了服务器(gunicorn和nginx)来使用Python / Django上传视频,并在浏览器中观看它们.我正在使用的视频播放器是videojs.所有视频均为h.264 mp4.视频大小在5-40 MB之间.
视频上传正常,我也可以在台式机和笔记本电脑浏览器上观看上传的视频.
问题是我无法在移动设备上观看相同的视频(在桌面浏览器上播放).
我收到此错误:
This video could not be loaded, either because the server or network failed or because the format is not supported.
怎么了?
更新资料
但是,我在移动设备中使用webm视频测试了移动浏览器,Opera和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):
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
更新资料
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和iPhone 6)上拍摄并用ffmpeg对其进行编码的视频无法在移动浏览器上播放,而只能在台式机浏览器上播放.
>但是,Amazon s3上托管的相同视频(我从移动设备上获取的视频)的URL在所有浏览器(甚至是非编码视频)上都能很好地播放.
解决方法:
什么官方文档tells:
流媒体和AAC播放器兼容性
By default when encoding AAC files using libfdk_aac the metadata
(‘moov’ atom) is written after the audio stream (‘mdat’ atom) at the
end of the file. In order to enable streaming of the encoded file the
‘moov’ atom has to be moved before the ‘mdat’ atom. In addition some
AAC player implementations have issues decoding such files.
FFmpeg提供选项“ -movflags faststart”,涵盖可在编码期间使用的功能:
ffmpeg -i input.wav -c:a libfdk_aac -movflags +faststart output.m4a
可以使用“ qt-faststart”程序修改现有的m4a文件,该程序与FFmpeg一起分发在“工具”目录中
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
标签:nginx,mobile,video,video-streaming,browser 来源: https://codeday.me/bug/20191028/1949593.html