THMonster / Revda

Tools to play live stream with danmaku.
GNU General Public License v2.0
217 stars 12 forks source link

dmlive HLS streamer 问题 #39

Closed hellobbn closed 2 years ago

hellobbn commented 2 years ago

您好, dmlive 中的 HLS streamer (src/streamer/hls.rs) 的实现是否存在缺陷? 我遇到的 m3u8 文件为:

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-MEDIA-SEQUENCE:1648643611
#EXT-X-TARGETDURATION:6
#EXTINF:6.000,
1648646196471.ts?k=b7f5f5e1640b241959a4d51854f82d67&t=1648646124&k=b7f5f5e1640b241959a4d51854f82d67&t=1648646124
#EXTINF:6.000,
1648646202565.ts?k=b7f5f5e1640b241959a4d51854f82d67&t=1648646124&k=b7f5f5e1640b241959a4d51854f82d67&t=1648646124
#EXTINF:6.000,
1648646208449.ts?k=b7f5f5e1640b241959a4d51854f82d67&t=1648646124&k=b7f5f5e1640b241959a4d51854f82d67&t=1648646124

使用了相对地址而不是绝对路径,在这种情况下会存在问题。

我的另外一个 (有点蠢的)问题是这些 streamer 的作用?ffmpeg 中似乎也有对应的streamer (libavformat/hls.c), 为什么要重新写这一个部分?

THMonster commented 2 years ago

相对地址和绝对地址的问题是已知的,目前只有twitch用了hls,所以我就以满足twitch为目标从简了。能问下你为什么会遇到这个问题吗? 关于第二个问题,其实我一开始就是直接用ffmpeg拉hls流的,不仅是hls,flv那些也是直接喂http链接给ffmpeg,但是这样有个问题就是我这边对下载流的感知就不够了,因为下载的步骤在ffmpeg那边,如果需要针对下载流时出现的状况做出反应或者http请求需要额外配置就不那么灵活。而且关于ffmpeg对hls的支持好像是有点奇怪的问题,没法输入为hls链接的情况下与弹幕(matroska流)混流成mkv,必须先hls重新混流一遍再起一个ffmpeg进程pipe进去和弹幕轨混流。

hellobbn commented 2 years ago

我遇到的问题与目前的 Revda 无关。我之前在向 Revda 中添加新的直播源,而这个直播源返回 m3u8 使用的是相对路径,因此我想询问一下这个问题是否已知。当然,这对 Revda 并没有影响。

请问这个问题会被修复吗,我也可以参考 ffmpeg 的实现尝试修复这个问题再提交 pr (如果您认为这个问题需要被修复的话)。

THMonster commented 2 years ago

短期内我应该不会去碰。pr也不必了,你自己fork一个自己用就行了。