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

2020-10-16 14:12:45 +08:00
 rikka

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

所以要求就是:

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

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

3.最好能用浏览器播放

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

我一顿搜索后

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

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

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

3530 次点击
所在节点    问与答
48 条回复
loading
2020-10-16 17:38:41 +08:00
内存不舍得加的话,傲腾可能会便宜些,几十块钱。
shenjinpeng
2020-10-16 17:50:23 +08:00
flv 格式, m3u8 , 参考直播推流 .

不写硬盘 只能写内存了 .

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

不如直接远程桌面管理上服务器看去, 省得写代码 .
rikka
2020-10-16 18:54:52 +08:00
@shenjinpeng #22 不知道我了解的对不对

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

而直播推流,好像可以用 websokct 来传输,是不写缓存了,但是没法控制播放进度啊
rikka
2020-10-16 19:12:11 +08:00
@shenjinpeng #22 我想了想,Samba 、nfs 这些协议假设他不写本地硬盘缓存,好像就完全满足我的需求了
msg7086
2020-10-16 19:20:40 +08:00
samba 一把梭可以。samba 本身就相当于是一个硬盘,所以不再需要本地硬盘了。

话说硬盘有啥好心疼的?硬盘转起来就在磨损,你 3 年疯狂读写和 3 年零读写,磨损不会差很多……
yeqizhang
2020-10-16 19:26:02 +08:00
@msg7086 可能他的是金贵的固态[手动狗头]
imn1
2020-10-16 19:28:28 +08:00
pass 吧
伪需求

远程播放各大播放器都已经支持,基本不用考虑其中技术细节,你想想那些几十 T 的 NAS,播放视频,难道都要本地下载一次才能播?搞定传输协议就够了。至于播放器的内存缓存,就算本地视频播放也是要的,无法避免
rikka
2020-10-16 19:28:46 +08:00
@msg7086 #25 嗯,我刚刚还在想如果播放器播放过程把整个视频一点一点读进内存,导致物理内存耗光,进而至使系统去写虚拟内存,也就是变相在写硬盘呢?但应该没谁这么蠢

心疼硬盘可能就是一种迷信吧😂
rikka
2020-10-16 19:31:19 +08:00
@imn1 #27 嗯,我想明白了
rikka
2020-10-16 19:33:28 +08:00
@yeqizhang #26 是固态不金贵,大概就是一种特殊性癖喽,这也导致平常写代码能不写临时文件就不写,尽可能在内存操作完成
dtgxx
2020-10-16 19:38:16 +08:00
不要考虑硬盘不够用,都 2020 了
msg7086
2020-10-16 19:38:48 +08:00
@rikka (内存用久了也会坏呢( x
linxiaojialin
2020-10-16 19:39:38 +08:00
我感觉你想了解的是 [解码] ,而不是 [缓存] 问题。
任何视频要播放都得缓存到客户端的,哪怕直播也是切成一个个小的片段文件下载到客户端,然后客户端再解码拼接播放,只不过解码当前片段后,可能就立即删除缓存文件了。

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

至于你说到 [内网] 😂大致猜到你的场景了,其实不用那么麻烦,在同一个内网下,Windows 自带有 [共享流媒体] 功能,手机下载个客户端就可以了,市场上有很多,随便搜索一个。
azh7138m
2020-10-16 20:54:51 +08:00
淦 你们的 xp 好奇怪哦
rikka
2020-10-16 22:28:03 +08:00
@linxiaojialin #33 其实不是啊,缓存、解码我大概都知道,我关注点在于:比方我有总计 100G 视频,那我播放完这些视频不就得往硬盘里写入 100G 缓存数据,这很“伤硬盘”,我想解决这个问题
docx
2020-10-17 00:16:20 +08:00
切片是不是增加服务端的硬盘读写了?
natashahollyz
2020-10-17 08:18:21 +08:00
@rikka 有些东西根本就没想的必要。你上班摸鱼发这个帖子对硬盘键盘鼠标内存显示器 CPU 显卡电源都挺伤的,还挺费电,对水电站也挺伤的。建议不要水了,保护电脑,从你做起
Rheinmetal
2020-10-17 08:38:10 +08:00
看到内网那一个回复脑补了一出保密和间谍的大戏
心想直接用液氮冻上内存照样 dump 视频 先解决录屏问题吧
拉倒下面你给我看这个?

怕伤硬盘 关闭虚拟内存 不用 win10 (这玩意疯狂读写硬盘 以为人人 nvme ssd )好了
怕写坏 请上 optane 企业 ssd
硬盘有价数据无价 有这个强迫症不如备份 /raid
GeruzoniAnsasu
2020-10-17 09:49:08 +08:00
你想想自己有没有心疼过余额宝每天多出来的那几块钱
carlclone
2020-10-17 09:53:17 +08:00
自己写一个程序不就知道了 , 从 socket 读数据出来还能放哪里? 不是内存就是硬盘啊 , 你还想放在光纤里啊?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/715612

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX