#1 - 2023-2-28 12:04
h3nt4i
在Mac下挂载webdav并播放里面的视频,如果是几百M到1个G左右的可能没啥影响,但是一旦播放那种十几到几十G的电影,就会发现,webdavfs_agent进程会先下载大量缓存到本地硬盘然后才开始播放,这期间Finder就会卡死。这个缓存大小至少几个G,经多次清理缓存、重新挂载、再打开文件的测试,发现即使是同一个文件,每次打开的初始的缓存大小都不一样,不知道为啥。
而当电影播放到未缓存的部分或者直接拖到进度条后面时,就会可能出现两种情况,一是先缓存好一会(又是一阵等)再接着播放,二是不做缓存而是直接就结束播放了,同一个文件在多次测试下也会出现这两种情况,后者的概率更高。
使用的播放器分别为IINA和Infuse,如果是直接从Finder里面点击打开的话,这两个播放器都会出现上述的情况。实际上有时候(也存在一定概率)哪怕只是在Finder中单击文件而不打开或者只是进入文件所在目录,也会直接卡住然后大量缓存。IINA的GitHub里面也有人发过这样的issue(https://github.com/iina/iina/issues/3449、https://github.com/iina/iina/issues/1266)。
即使不通过Finder点击,也会出现同样的上述情况。IINA支持在浏览器中通过URL Scheme打开(iina://open?url=/Volume/192.168.x.x/xxx.mkv),使用这种方式打开也是一样的毛病。但是,实际上Mac的webdav是可以只缓存少量数据的,我用Python写了个简单的脚本,调用read()只读取几个字节并输出,这个操作马上就能完成,而不是像上述那样大量缓存。
我还设想过一种可能,Finder或者播放器会不会把webdav中的文件当成了本地文件所以才会大量缓存,但仔细想想,如果是这样的话那应该会先把整个视频完整缓存下来,而不是只缓存几个G。于是我用C写了段程序,调用系统的fstatfs()函数,可以发现系统是可以识别出这是来自webdav的文件。在翻阅mpv的源码(https://github.com/mpv-player/mp ... tream/stream_file.c)的时候,也可以找到这一部分的判断代码(check_stream_network())。
当然,要想愉快地播放webdav的视频,也不是非得通过Mac的webdavfs挂载。Infuse有自己的远程视频库功能,IINA也可以通过http地址来播放webdav视频,在这种情况下是不需要大量缓存并且可以正常流畅播放的。
以后有空我也会瞅瞅Mac的webdavfs的源码(https://github.com/apple-oss-distributions/webdavfs),看能不能找到更多问题所在,但以我目前的技术力大概还是挺难。
而当电影播放到未缓存的部分或者直接拖到进度条后面时,就会可能出现两种情况,一是先缓存好一会(又是一阵等)再接着播放,二是不做缓存而是直接就结束播放了,同一个文件在多次测试下也会出现这两种情况,后者的概率更高。
使用的播放器分别为IINA和Infuse,如果是直接从Finder里面点击打开的话,这两个播放器都会出现上述的情况。实际上有时候(也存在一定概率)哪怕只是在Finder中单击文件而不打开或者只是进入文件所在目录,也会直接卡住然后大量缓存。IINA的GitHub里面也有人发过这样的issue(https://github.com/iina/iina/issues/3449、https://github.com/iina/iina/issues/1266)。
即使不通过Finder点击,也会出现同样的上述情况。IINA支持在浏览器中通过URL Scheme打开(iina://open?url=/Volume/192.168.x.x/xxx.mkv),使用这种方式打开也是一样的毛病。但是,实际上Mac的webdav是可以只缓存少量数据的,我用Python写了个简单的脚本,调用read()只读取几个字节并输出,这个操作马上就能完成,而不是像上述那样大量缓存。
我还设想过一种可能,Finder或者播放器会不会把webdav中的文件当成了本地文件所以才会大量缓存,但仔细想想,如果是这样的话那应该会先把整个视频完整缓存下来,而不是只缓存几个G。于是我用C写了段程序,调用系统的fstatfs()函数,可以发现系统是可以识别出这是来自webdav的文件。在翻阅mpv的源码(https://github.com/mpv-player/mp ... tream/stream_file.c)的时候,也可以找到这一部分的判断代码(check_stream_network())。
当然,要想愉快地播放webdav的视频,也不是非得通过Mac的webdavfs挂载。Infuse有自己的远程视频库功能,IINA也可以通过http地址来播放webdav视频,在这种情况下是不需要大量缓存并且可以正常流畅播放的。
以后有空我也会瞅瞅Mac的webdavfs的源码(https://github.com/apple-oss-distributions/webdavfs),看能不能找到更多问题所在,但以我目前的技术力大概还是挺难。
#2 - 2023-2-28 12:14
Rivers
(Don't feel. Think.)
#3 - 2023-2-28 22:22
技术规范书阿卡卡
#4 - 2024-3-10 23:20
yuygfgg
#5 - 2024-4-2 20:00
sousou
#6 - 2024-4-2 20:10
缇亚拉
(亡死来招会但人迷爱可然虽我。)
#7 - 2024-4-5 19:00
lslqtz
#8 - 2024-4-5 19:07
神戸小鳥
(Nice Fever)
#9 - 2024-4-5 19:08
烈之斩
(V1046-R MAHORO)