关于视频播放,视频切片以及对视频的跨域访问

电脑杂谈  发布时间:2020-06-29 10:04:46  来源:网络整理

什么视频播放器有tv版_视频播放器java版_视频剪切器手机版

最近开始部署发布的视频网站. 将其部署到云服务器并开始测试视频观看并发量后,我们发现了一个非常严重的问题: 带宽不足. 当9或10个人同时观看视频时,会出现一些用户无法加载视频的问题.

我们的云服务器是一美元的腾讯云,其带宽非常低,因此肯定没有足够的带宽来支持如此大的流量传输. 对于视频网站,带宽问题非常严重. 在不改变带宽的情况下,我们一直在寻找提高性能的方法.

我们的视频网站使用内置的Flash播放器播放视频. 当用户观看视频时,整个视频将直接完全加载(无论您观看多长时间). 它从一开始就开始加载,并且没有. 用户暂停并暂停加载. 它会继续加载,直到加载完成. 对于绝大多数用户来说,他们不一定会看完视频. 如果加载较小的视频没有大问题,但是如果加载较大的视频,则会浪费大量流量,并且加载过程将继续占用带宽,因此在有很多用户的情况下,视频加载问题.

什么视频播放器有tv版_视频剪切器手机版_视频播放器java版

了解了此问题之后,我们去看看其他人的视频网站如何支持大量用户. 在视频播放过程中,我们发现他们并没有从头开始完全加载视频,而是一段时间内. 加载和搜索后,发现这是一种用于控制流量传输的切片技术. 具体的切片原理可以参考.

了解切片技术之后,我们开始在我们的项目中应用切片技术. 我们使用ffmpeg对视频进行切片. 方法是调用程序中的ffmpeg程序,然后调用slicing命令对视频进行切片,生成m3u8文件和ts文件,然后使用Flash Player播放视频播放器java版,可以看到它确实可以通过以下方式加载视频片段段.

修改为这一步,似乎可以解决我们的问题,但是又出现了新的问题,我们发现切片大视频时,服务器的内存会占用很多,至于为什么会占用那么大的内存,我们猜测可能是因为在切片视频时,ffmpeg将整个视频加载到内存中,所以内存使用率很高. 同时切片多个视频时,服务器爆炸. 因此我们寻求新的解决方法.

什么视频播放器有tv版_视频剪切器手机版_视频播放器java版

因为我们没有想到解决本地切片内存占用问题的好方法,所以我们使用了一种新的方式来存储和播放视频,即,我们使用云存储来存储视频,因此我们选择了秦牛云服务器来存储它. 它还提供了各种声音的SDK,供开发人员参考.

使用Qi Nuu Yun,我在Java Web项目中导入了必要的4个软件包,并编写了一个工具类,用于上传视频和执行切片预处理. 刚开始使用它时,我也遇到了很多问题.

在一开始,我们在任何格式的视频上调用了相同的切片命令,以为它将生成相同格式的视频文件. 但是,当我们上传MP4格式的视频时,上传切片后,直接在浏览器中输入外部链接(文件的访问链接)即可正常播放;但是上传avi或flv格式的视频时,在上传切片后,直接输入外部链将成为下载文件.

视频播放器java版_视频剪切器手机版_什么视频播放器有tv版

当时,此问题的原因始终不清楚,因为显然调用了相同的命令片,并且格式应该相同,但是行为不同. 后来,他通过Qiniuyun的Q&A平台找到了一个解决方案,他发现,如果在上载时不使用saveas参数将结果保存为xxx.m3u8格式,他仍将其保存为原始格式. 因此,基于浏览器对不同视频格式的支持,以mp4,avi,flv等格式显示的视频会有不同的效果.

解决了视频上传问题后,播放器通过外部链接播放视频时,发现跨域被拒绝(错误: HLSError(code / url / msg)= 1tp: 无法加载M3U8 : 拒绝跨域访问: 错误#2048),Google出现问题,并发现原始Flash Player加载跨域视频时,它将首先在云中加载corssdomain.xml文件,然后判断是否允许加载

解决方案: 您需要将crossdomian.xml文件上传到Qiniu Cloud

视频播放器java版_视频剪切器手机版_什么视频播放器有tv版

<cross-domain-policy>
<allow-access-from domain="*"/>
<allow-http-request-headers-from domain="*" headers="*"/>
</cross-domain-policy>

基于Qiniuyun的API,我编写了一个界面视频播放器java版,用于上传和切片视频以供参考;如果有错误,我们可以一起讨论

使用配置文件video.properties加载接口的配置信息. 具体的配置文件配置内容为:

access_key=your access key
secert_key=your secert key
bucketname=你的存储空间
pipeline=你的多媒体处理队列名
fops=avthumb/m3u8/noDomain/1/vb/500k/t/120(这是切片命令)若是要做其他处理,请参照七牛云 SDK
domain=你的七牛云映射域名


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/bofangqi/article-262232-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      热点图片
      拼命载入中...