跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 如何在完全不写硬盘的情况下播放一个远程视频?
未分類
24 10 月 2020

如何在完全不写硬盘的情况下播放一个远程视频?

如何在完全不写硬盘的情况下播放一个远程视频?

資深大佬 : rikka 6

比方服务器放着一个 MP4,我起个 nginx 然后 chrome 打开就能播放了,但这过程实际是 chrome 把视频下载到缓存中,下载就意味着有写硬盘的操作

所以要求就是:

1.播放过程绝对不能有写操作

2.播放能控制进度、倍速播放

3.最好能用浏览器播放

4.不要用 flash 相关的技术,都 2020 了

我一顿搜索后

好像可以用 ffserver 把视频转成 rtmp?rtsp?来实现,这两种协议我该用哪种?

而且 ffserver 在 2 年前被 ffmpeg 删除了啊,现在有啥代替的么?

对视频播放这方面完全不了解,有知道的来讲讲

大佬有話說 (47)

  • 資深大佬 : codehz

    你把浏览器缓存放 ramdisk 里就好

  • 資深大佬 : chenluo0429

    仿照摄像头预览的实现方式,服务端将视频流通过 websocket 按照播放速度逐帧推送给客户端,客户端解码并使用 canvas 渲染

  • 主 資深大佬 : rikka

    @codehz #1 内存容量有限,视频往往很大,寸土寸金,万一物理内存不够系统自动去写虚拟内存这不还是在写硬盘

  • 主 資深大佬 : rikka

    @chenluo0429 #2 这种方式能控制播放进度吗?

  • 資深大佬 : yushiro

    把硬盘拆了,用无盘工作站,在 chrome 里面看视频,就绝对不会有写盘操作了

  • 主 資深大佬 : rikka

    @chenluo0429 #2 以我的理解这种服务端推流方式没法控制播放进度吧?
    想要控制播放进度不就得有个协议,客户端给服务端发个信息:“我要看看 x 分 x 秒的片段”,服务端收到后就把对应的视频数据返回给客户端

  • 資深大佬 : wowboy

    @rikka 内存有限,还不允许用硬盘,那就要求网络传输速度和播放速度强一致。然后还要求倍速播放?网络速度可以随便调吗?

  • 主 資深大佬 : rikka

    @wowboy #7 实际情况是服务端和客户端在一个内网中,无需担心网络问题

  • 資深大佬 : chenluo0429

    @rikka 就是要客户端向服务端发送播放位置,速度,然后服务端对视频文件进行切分后向客户端推流。
    你不想缓存到硬盘,要么实时发送,要么放在内存里面。但是内存也是有限的,你也只能请求一个个视频片段,做好提前加载,视频推流只是分段获取视频的最极端情况

  • 資深大佬 : Ediacaran

    Samba nfs….

  • 主 資深大佬 : rikka

    @chenluo0429 #9 道理都懂,就想找找具体的落地实现方案,客户端服务端之间交互播放位置速度等信息的协议,视频数据传输协议,服务端对视频的解码分片读取处理,客户端对应的播放器怎么搞,这一系列的问题我个人没那个能力搞定

  • 資深大佬 : kop1989

    想要问出成熟的方案估计很难。
    因为需求相对比较刁钻且矛盾(本地无缓存,甚至内存都最好不要写。还要能倍速和控制进度,还要跑在 web 环境里)。
    1 、视频不写硬盘,那么网页本身写不写硬盘?如果能写,那么网页能写视频不能写?
    2 、如果都不能写,那只能自己做浏览器了。网页数据写不写硬盘不是 web 应用这个层级决定的。
    3 、都自己做浏览器了,还拘泥于 web 应用?

    所以我觉得更脚踏实地的需求是:根据既定网络条件,如何最大限度的控制视频缓存大小。

  • 主 資深大佬 : rikka

    @kop1989 #12 网页可以写,一个网页才几 k,但视频往往上 G
    我告诉你真实的需求是,我把视频下到内网的一台机器里,然后就是怎么播放问题,浏览器直接播放会缓存啊,视频老大大的,老写我硬盘,我心疼硬盘啊,就有了此帖

  • 資深大佬 : polaa

    硬盘有什么好心疼的 还不如心疼心疼浪费的时间

  • 資深大佬 : natashahollyz

    @rikka 建议把硬盘拆了供起来,这样就不心疼了

  • 資深大佬 : supermoonie

    视频切片制作成 m3u8

  • 主 資深大佬 : rikka

    @polaa #14
    @natashahollyz #15
    一顿折腾下来既解决了需求,又多少学到点东西,岂不美哉

  • 主 資深大佬 : rikka

    @supermoonie #16 用浏览器播放会写缓存啊

  • 資深大佬 : ETiV

    冯诺依曼要敲棺材板了……

  • 主 資深大佬 : rikka

    @Ediacaran #10 这看起来是另外一种思路,用网络文件共享协议来搞,如果协议本实现底层在读过程不会有写操作的话,就看我本地播放器是否缓存了

  • 資深大佬 : loading

    内存不舍得加的话,傲腾可能会便宜些,几十块钱。

  • 資深大佬 : shenjinpeng

    flv 格式, m3u8 , 参考直播推流 .

    不写硬盘 只能写内存了 .

    局域网的话 ,文件共享服务器 Samba , 不知道写不写本地硬盘缓存 .

    不如直接远程桌面管理上服务器看去, 省得写代码 .

  • 主 資深大佬 : rikka

    @shenjinpeng #22 不知道我了解的对不对

    m3u8 不就是把视频切片,播放过程把切片从服务端读回来,如果用浏览器播放,走的是 http 协议,不还是有在写缓存吗

    而直播推流,好像可以用 websokct 来传输,是不写缓存了,但是没法控制播放进度啊

  • 主 資深大佬 : rikka

    @shenjinpeng #22 我想了想,Samba 、nfs 这些协议假设他不写本地硬盘缓存,好像就完全满足我的需求了

  • 資深大佬 : msg7086

    samba 一把梭可以。samba 本身就相当于是一个硬盘,所以不再需要本地硬盘了。

    话说硬盘有啥好心疼的?硬盘转起来就在磨损,你 3 年疯狂读写和 3 年零读写,磨损不会差很多……

  • 資深大佬 : yeqizhang

    @msg7086 可能他的是金贵的固态[手动狗头]

  • 資深大佬 : imn1

    pass 吧
    伪需求

    远程播放各大播放器都已经支持,基本不用考虑其中技术细节,你想想那些几十 T 的 NAS,播放视频,难道都要本地下载一次才能播?搞定传输协议就够了。至于播放器的内存缓存,就算本地视频播放也是要的,无法避免

  • 主 資深大佬 : rikka

    @msg7086 #25 嗯,我刚刚还在想如果播放器播放过程把整个视频一点一点读进内存,导致物理内存耗光,进而至使系统去写虚拟内存,也就是变相在写硬盘呢?但应该没谁这么蠢

    心疼硬盘可能就是一种迷信吧

  • 主 資深大佬 : rikka

    @imn1 #27 嗯,我想明白了

  • 主 資深大佬 : rikka

    @yeqizhang #26 是固态不金贵,大概就是一种特殊性癖喽,这也导致平常写代码能不写临时文件就不写,尽可能在内存操作完成

  • 資深大佬 : dtgxx

    不要考虑硬盘不够用,都 2020 了

  • 資深大佬 : msg7086

    @rikka (内存用久了也会坏呢( x

  • 資深大佬 : linxiaojialin

    我感觉你想了解的是 [解码] ,而不是 [缓存] 问题。
    任何视频要播放都得缓存到客户端的,哪怕直播也是切成一个个小的片段文件下载到客户端,然后客户端再解码拼接播放,只不过解码当前片段后,可能就立即删除缓存文件了。

    如果直接通过 浏览器 访问 MP4,因为没有解码器,所以实际过程是变成 [下载] 然后再用本机的播放器打开下载后的 MP4 进行解码播放,而本机的播放器可能没有控制进度、倍速等等功能。
    如果通过 APP/网页 JS 访问 MP4,再用 Flash/JS/其它解码脚本 等等进行解码,就可以实现实时播放了(边下边播,感觉就像没有缓存一样,实际上还是有临时缓存的,播放完会自动删除缓存文件),然后还可以拓展 进度、倍数等功能。

    至于你说到 [内网]

  • 資深大佬 : azh7138m

    淦 你们的 xp 好奇怪哦

  • 主 資深大佬 : rikka

    @linxiaojialin #33 其实不是啊,缓存、解码我大概都知道,我关注点在于:比方我有总计 100G 视频,那我播放完这些视频不就得往硬盘里写入 100G 缓存数据,这很“伤硬盘”,我想解决这个问题

  • 資深大佬 : dzyou2007

    切片是不是增加服务端的硬盘读写了?

  • 資深大佬 : natashahollyz

    @rikka 有些东西根本就没想的必要。你上班摸鱼发这个帖子对硬盘键盘鼠标内存显示器 CPU 显卡电源都挺伤的,还挺费电,对水电站也挺伤的。建议不要水了,保护电脑,从你做起

  • 資深大佬 : Rheinmetal

    看到内网那一个回复脑补了一出保密和间谍的大戏
    心想直接用液氮冻上内存照样 dump 视频 先解决录屏问题吧
    拉倒下面你给我看这个?

    怕伤硬盘 关闭虚拟内存 不用 win10 (这玩意疯狂读写硬盘 以为人人 nvme ssd )好了
    怕写坏 请上 optane 企业 ssd
    硬盘有价数据无价 有这个强迫症不如备份 /raid

  • 資深大佬 : GeruzoniAnsasu

    你想想自己有没有心疼过余额宝每天多出来的那几块钱

  • 資深大佬 : carlclone

    自己写一个程序不就知道了 , 从 socket 读数据出来还能放哪里? 不是内存就是硬盘啊 , 你还想放在光纤里啊?

  • 資深大佬 : cheng6563

    Firefox 好像有选项完全使用内存缓存

  • 資深大佬 : haf007

    你需要一台群晖,局域网播放,就只写内存,

  • 資深大佬 : openbsd

    Windows RDP 远程
    应该不会写本地存储

  • 資深大佬 : tkl

    你把电脑都供起来 然后服务器接上显示器吧

    有毒有病

  • 資深大佬 : Ritr

    @rikka 那往内存里写 100G 数据也会伤内存的吧,硬盘不就是买来用的吗,买个硬盘还要供起来吗?

  • 資深大佬 : mscststs

    要不你从源拉一根视频线裸传视频到显示器算了。

  • 資深大佬 : cmheia

    我也是心疼硬盘星人,分了一半内存(16G)做 RAMDISK,除了转移已知的临时目录,平时使用临时文件什么的都在里面搞

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具