let http-remux ts stream support guess_has_av feature;
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
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- 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 - open chrome browser, open
http://localhost:8080/players/srs_player.html?schema=http, go toLivePlayer, input URL:http://localhost:8080/live/livestream.ts, click play. - the
http://localhost:8080/live/livestream.tscan 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.