srs icon indicating copy to clipboard operation
srs copied to clipboard

let http-remux ts stream support guess_has_av feature;

Open suzp1984 opened this issue 1 year ago • 0 comments

Describe

http_remux feature support config has_audio, has_video & guess_has_av prop.

https://github.com/ossrs/srs/blob/282d94d7bbfa127868caab401bb7616e26d4c54d/trunk/src/app/srs_app_http_stream.cpp#L630-L632

Take http_flv as example, srs can accept both RTMP streams with only audio, only video or both audio and video streams. It is controlled by above three properties.

But guess_has_av is not implemented by http_ts. The problem is that if I want publish a RTMP stream with audio or video track, the has_audio and has_video, which are default true/on, must to be config to match the RTMP stream, otherwise the mpegts.js player can't play the http-ts stream.

How to reproduce

  1. export SRS_VHOST_HTTP_REMUX_HAS_AUDIO=on; export SRS_VHOST_HTTP_REMUX_HAS_VIDEO=on; export SRS_VHOST_HTTP_REMUX_GUESS_HAS_AV=on; ./objs/srs -c conf/http.ts.live.conf
  2. publish rtmp stream without video: ffmpeg -re -stream_loop -1 -i srs/trunk/doc/source.200kbps.768x320.flv -vn -acodec copy -f flv rtmp://localhost/live/livestream
  3. open chrome browser, open http://localhost:8080/players/srs_player.html?schema=http, go to LivePlayer, input URL: http://localhost:8080/live/livestream.ts, click play.
  4. the http://localhost:8080/live/livestream.ts can not play.

Solution

Let http-ts support guess_has_av, http-flv already supported. The guess_has_av default value is ture/on, so the http-ts|flv can play any streams with audio, video or both.

suzp1984 avatar May 21 '24 14:05 suzp1984