视频在线播放卡慢,如何实现视频分片加载呢?前段 vue,后台 go - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
NotreDame
V2EX    程序员

视频在线播放卡慢,如何实现视频分片加载呢?前段 vue,后台 go

  •  
  •   NotreDame 2021 年 10 月 23 日 3970 次点击
    这是一个创建于 1540 天前的主题,其中的信息可能已经有所发展或是发生改变。

    现在就是直接请求一整个视频文件,浏览器直接播放,几百兆的视频几乎无法在线播放。我看视频网站都是把视频切分成 ts 文件,具体怎么实现呢?

    第 1 条附言    2021 年 10 月 24 日

    感谢大家的回复,这东西真的看经历,会者不难。像我没有任何音视频相关经验的,只能自己去摸索,看看各大网站的网络请求,之后完全没落地思路,效率奇低。
    发帖之前,我甚至还想着后台把原视频转码一下,但转念一想,转完还是很大不仍是废的嘛。。。

    请教下大家,如果碰到自己完全没接触的领域需求,如何最高效的解决问题呢(身边也没有可以请教的人)?就像这次的需求,我搜索类似“web在线播放视频卡”的关键字,出来的结果完全没用。。。

    第 2 条附言    2021 年 10 月 25 日
    谢谢大家的回复,我就不一一回复感谢了,怪打扰的。正视自己的不足,努力积累!
    22 条回复    2021-10-25 15:40:01 +08:00
    NowTime
        1
    NowTime  
       2021 年 10 月 23 日 via Android
    这个没记错的话 Nginx 可以满足你的需求,关键字 nginx range 请求

    http://chenzhenianqing.com/articles/926.html
    liangxin149
        2
    liangxin149  
       2021 年 10 月 23 日
    使用 ffmpeg 分割成 ts 文件
    easychen
        3
    easychen  
       2021 年 10 月 23 日   2
    一般视频都是存到云服务商那里,他们会帮忙切片。

    还有一种是浏览器端播放器可以自己通过 206 部分载入内容,可以在不切片的情况下不加载整个视频文件。
    jim9606
        4
    jim9606  
       2021 年 10 月 23 日
    切 ts 片的通常是基于 m3u8 的 HLS 。如果没什么防盗链或者 DRM 之类的需求可以预先切好 m3u8+ts 放服务器上。
    xiaoz
        5
    xiaoz  
       2021 年 10 月 24 日 via Android
    4 楼正解,关键词 m3u8 ,ts 切片。
    old9
        6
    old9  
       2021 年 10 月 24 日 via Android
    如果视频开头有 moov 元数据,web 服务器支持 range ,那浏览器会自动处理的,不会下载完了才播放
    MonikaCeng
        7
    MonikaCeng  
       2021 年 10 月 24 日 via Android
    youtube 那种 dash mpd 切片方式比 hls m3u8 更好,不过用的也比较少。我曾经用 ffmpeg 尝试去切成 mpd ,也可以用。
    dash mpd 的优点可以谷歌一下
    ch2
        8
    ch2  
       2021 年 10 月 24 日
    选个支持 http 的 range 功能的播放器就行了
    pupboss
        9
    pupboss  
       2021 年 10 月 24 日
    针对楼主的附言,我来给点建议吧

    其实没什么好办法,你不懂的东西就是不懂,如果想提高的话主要是靠平时积累,平时看帖子刷新闻的时候,感兴趣不感兴趣的都点开看看多积累,如果自己好奇心够强就更好了,接着发帖人的问题刨根问底,慢慢就能在所有领域有不错的积累,并且打通各个领域,有一些独到的见解
    NotreDame
        10
    NotreDame  
    OP
       2021 年 10 月 24 日
    @pupboss 是啊,不懂得东西真的就是不懂,自己想破脑袋都没有思路。
    xsen
        11
    xsen  
       2021 年 10 月 24 日   1
    这个需要专门的流媒体服务器来做的

    关键字(可以基于 nginx ):
    1 ) nginx + rtmp
    2 ) nginx + hls
    fredcc
        12
    fredcc  
       2021 年 10 月 24 日 via Android
    直接用公有云的解决方案就行了,源文件丢上去,直接出播放地址,最多对接个防盗链。lz 距离能自己实现知识储备还差很远
    20015jjw
        13
    20015jjw  
       2021 年 10 月 25 日
    顺便再回 lz 一句
    不懂很正常的,写 mobile 的不懂 ml 很正常,写 backend 的连博客都搭不出来完全合理。需要的时候问+学 /找人帮忙就行了,重要的更多的还是学习和沟通的能力。
    dany813
        14
    dany813  
       2021 年 10 月 25 日
    不懂,就多搜,多交流吧
    markgor
        15
    markgor  
       2021 年 10 月 25 日
    实话说,你要弄清楚哪部分卡;
    1 、就算 ts 切片,你服务器带宽就 5M ,10 个人在线看,还不是照样卡吗?
    2 、不知道你后端业务是怎样的,nginx 的话大文件会自动 range ,类似 ts 切片,一次加载一部分,大多数浏览器都支持 range 请求;但和第一点一样,带宽如何?
    3 、一个视频几百兆,首先要做的就是针对请求限流吧?次要就是看带宽是否能支持;
    4 、其实国内 CDN 大多按量计费,你这种场景非常适合上 CDN ,费用起码比你加大服务器带宽要便宜的多。
    5 、如果一毛不拔,建议上传第三方视频平台。
    NotreDame
        16
    NotreDame  
    OP
       2021 年 10 月 25 日
    @markgor 感谢,您说到关键点了。我用的阿里云 ecs ,4M 带宽,现在想着把图片视频都放到阿里云 oss 上。
    markgor
        17
    markgor  
       2021 年 10 月 25 日
    @NotreDame
    可以你参考,不过我用的是腾讯云,
    resource.xxx.com -> COS 对象存储 ->回源地址 -> 源服务器。
    这样当请求 A.JPG 文件 不存在时,COS 会回去源服务器拉取,然后存在 COS 。
    代码中几乎不用改动(前提是资源域名做了划分,COS 可否根据请求类型区分是否回源我不确定。
    提醒下,COS 回源有超时策略,大文件不多的情况下建议直接把大文件手动转移到同目录下的 COS 。
    剩余的小文件就按上面的策略跑。

    如果都是大文件的话那还是直接用工具转移去 COS 吧.
    ysc3839
        18
    ysc3839  
       2021 年 10 月 25 日 via Android
    切片解决不了带宽问题吧?
    NotreDame
        19
    NotreDame  
    OP
       2021 年 10 月 25 日
    @markgor 外网流出流量是不是无解?我看 oss 对象存储内网走 esc 服务器可以免流,但这不最终还是走的 ecs 的带宽,结果还不是一样的卡顿吗?不知道我的理解对不对。
    markgor
        20
    markgor  
       2021 年 10 月 25 日
    @NotreDame 阿里云的产品我不清楚,腾讯云的话 oss 对象外网访问是会产生外网费用,但不是走 cvm 带宽。
    shenmirenba
        21
    shenmirenba  
       2021 年 10 月 25 日
    云切片对服务器硬件要求较高!
    分享一个自用的方法,视频本地切片好后压缩上传到服务器解压,播放页面引用 index.m3u8 文件即可。
    本地切片如果想折腾的的话 ffmpeg 了解一下,不想折腾直接某宝买个切片软件 68 米。
    关于播放器 Dplayer 了解一下。当初这块也是过不少坑,希望对你有所帮助。
    gadfly3173
        22
    gadfly3173  
       2021 年 10 月 25 日
    @NotreDame 你完全可以在页面上直接用 OSS 的文件地址,没有特殊需求的话把 bucket 设为公共读就好了,这时候这些静态文件走的是 OSS 的流量,就和你 ECS 没关系了
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2620 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 04:03 PVG 12:03 LAX 20:03 JFK 23:03
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86