harlanc/xiu

hls playback 404 not found for rtmp streaming

SaulMoonves opened this issue · 9 comments

XIU version
v0.12.6

Describe the bug
hls m3u8 404 not found

To Reproduce

xiu --rtmp 1935 --rtsp 1554 --hls 8081 -l debug
ffmpeg -re -stream_loop -1 -i test.mp4 -c:a copy -c:v copy -f flv -flvflags no_duration_filesize rtmp://<my-server>:1935/live/test

on the streaming machine:

# curl http://localhost:8081/live/test/test.m3u8
Not Found

However rtmp playback via ffplay does work.

What am I doing wrong?

Expected behavior
playback

The issue can be reproduced using the Docker image environment but not with a locally build because the generation of .ts and .m3u8 files relies on relative paths. Using absolute paths can fix this problem.

I am having the problem even if it is built from Cargo or if I download a release. I did not try from source though.

It seems to still get not found.

Could you paste the logs of xiu when playing the hls stream which should contain "m3u8 folder:" and "ts folder:" as follows:

[2024-04-06T22:39:45Z INFO  hls::m3u8] m3u8 folder: /Users/username/github/xiu/target/debug/live/test
[2024-04-06T22:39:45Z INFO  hls::ts] ts folder: /Users/username/github/xiu/target/debug/live/test

check whether below cmd works?
ffplay -i http://localhost:8081/live/test/test.m3u8

otherwise, stop the service, then delete ${xiu running folder}/live/test/ directory, then run boot the service again.
you need to wait around one ts segment time gap, around 6 ~ 10 seconds, to get first ts segment generated.

I met once the ${xiu running folder}/live/test/ has ts segment, maybe generated before, but no index m3u8 file. After I clean the live/test, and reboot service, hls recovered.

I got this issue too

running in powershell:

.\xiu-0.12.5-x86_64-pc-windows-msvc.exe  -r 1935  -f 8888 -s 9999 --log debug

some info:

[2024-04-18T04:58:15Z INFO  streamhub] subscribe:  stream identifier: RTMP - app_name: live, stream_name: test

OBS setting:
image

ffplay command:

 ffplay -i http://localhost:8888/live/test/test.flv

httpflv works fine:

Input #0, flv, from 'http://localhost:8888/live/test/test.flv':/0
  Metadata:
    fileSize        : 0
    audiochannels   : 2
    2.1             : false
    3.1             : false
    4.0             : false
    4.1             : false
    5.1             : false
    7.1             : false
    encoder         : obs-output module (libobs version 30.1.2)
  Duration: 00:00:00.00, start: 0.033000, bitrate: N/A
  Stream #0:0: Audio: aac (LC), 48000 Hz, stereo, fltp, 163 kb/s
  Stream #0:1: Video: hevc (Main), yuv420p(tv, bt709), 1600x900 [SAR 1:1 DAR 16:9], 2560 kb/s, 60 fps, 60 tbr, 1k tbn
   2.99 A-V: -0.012 fd=   5 aq=   19KB vq=  336KB sq=    0B f=0/0

ffplay command:

ffplay -i http://localhost:8888/live/test/test.m3u8

hls 404:

[http @ 0000026278cd3300] HTTP error 404 Not Foundsq=    0B f=0/0
http://localhost:8888/live/test/test.m3u8: Server returned 404 Not Found

The xiu running path generate no index m3u8 and ts (its acctially generated once , but after I delete it , no more )
image

@fs8vsx59h
It seems that you are not using the correct port number, the correct one may be :

ffplay -i http://localhost:9999/live/test/test.m3u8

If the problems persists, try the following step:

Try to build from this branch https://github.com/harlanc/xiu/tree/fix_116

@fs8vsx59h 您似乎没有使用正确的端口号,正确的端口号可能是:

ffplay -i http://localhost:9999/live/test/test.m3u8

如果问题仍然存在,请尝试以下步骤:

Try to build from this branch https://github.com/harlanc/xiu/tree/fix_116

sorry for that , I delete the live/test folder and restart , it works now and generate correct index m3u8
I'm trying fix_116 see if this issue fixed