debugly / ijkplayer

iOS/macOS/tvOS video player based on ijkplayer, using FFmpeg 6, support Metal、hw accel、HDR、ass subtitle effect...
https://ijkplayer.debugly.cn/
GNU General Public License v2.0
116 stars 20 forks source link

k0.11.8 版本note里面写的 support Network or Local Blu-ray Disc/BDMV,经测试发现远程的 iso 镜像播放报错。 #56

Open huaibaobao2017 opened 2 weeks ago

huaibaobao2017 commented 2 weeks ago

ffmpeg的协议里支持bluray协议,但貌似只支持本地路径,想了解下远程播放的实现逻辑。

debugly commented 1 week ago

估计是传给播放的地址有问题,比如现在 smb 服务器上有个 iso 的文件,地址如下:

smb2://user:password@host/videos/xx.iso

那么传给播放器的地址需要先百分号编码,然后加上 bluray:// 前缀,即:

bluray://smb2%3A%2F%2Fuser%3Apassword%40host%2Fvideos%2Fxx.iso
huaibaobao2017 commented 1 week ago

的确可以了。谢谢

huaibaobao2017 commented 1 week ago

另外想请教下,播放远程iso文件的实现原理是啥?是通过代码的方式挂载镜像还是什么办法实现?我之前测试过貌似只支持本地路径。谢谢

debugly commented 1 week ago

对bluray库做了移植,支持了Apple各个平台,然后自定义bluray读取数据的方式,替代本地file方式的默认实现,自定义读取数据层内部调用了 FFmpeg 内置的 url protocol 层,所以理论上可以支持任意协议播放 iso 镜像。 实现起来还是很麻烦的,不介意的话买杯咖啡给我哈。

huaibaobao2017 commented 2 days ago

对bluray库做了移植,支持了Apple各个平台,然后自定义bluray读取数据的方式,替代本地file方式的默认实现,自定义读取数据层内部调用了 FFmpeg 内置的 url protocol 层,所以理论上可以支持任意协议播放 iso 镜像。 实现起来还是很麻烦的,不介意的话买杯咖啡给我哈。

经测试发现有个bug。测试过一些镜像,有些可以正常播放,有些不行(只能播放第一段,远程和本地都一样的问题)。 不行的这些iso镜像可能是分了好几段的,比如第一段是几秒钟,然后后面才是真正完整的内容。使用ijk只能播放第一段,然后就触发了eof了,不会再接着播放。我使用mpv来播放是可以正常播放的,播放顺序和ijk一样,但是mpv能接着后面的stream播放。

比如这个镜像: magnet:?xt=urn:btih:7409fb070f9e01e0cddfd42dd4d75ff1a7829d16&dn=%E3%80%90%E9%AB%98%E6%B8%85%E6%8E%A7%E8%81%94%E7%9B%9F%E3%80%91%5B%E5%8E%9F%E7%9B%98%5D%E4%BC%8D%E4%BD%B0%E5%85%89%E5%92%8C%E7%83%AD%EF%BC%9A%E6%97%A0%E5%B0%BD%E9%97%AA%E4%BA%AE%E7%9A%84%E4%B8%96%E7%95%8C%E5%8F%B0%E5%8C%97%E6%BC%94%E5%94%B1%E4%BC%9A.Wubai.%26.China.Blue.-.Light.%26.Hot.Live.In.Taipei.2014.1080i.Blu-ray.AVC.DTS-HD.MA.5.1-TTG&xl=46511021461

huaibaobao2017 commented 2 days ago

bluray://longest 可能需要加一个这样的参数。