ossrs / srs

SRS is a simple, high-efficiency, real-time media server supporting RTMP, WebRTC, HLS, HTTP-FLV, HTTP-TS, SRT, MPEG-DASH, and GB28181.
https://ossrs.io
MIT License
25.43k stars 5.35k forks source link

FFmepg: Transcode will result in endless ffmpeg process #4055

Closed suzp1984 closed 4 months ago

suzp1984 commented 4 months ago

Describe the bug

Do transcode according to guide: https://ossrs.net/lts/zh-cn/docs/v4/doc/sample-ffmpeg.

If I start a ffmpeg transcode srs process and set the output to same srs process. It will result in endless ffmpeg process being triggered until the system's memory or cpu power exhausted.

Version SRS 6 or maybe any SRS version support transcode

To Reproduce Steps to reproduce the behavior:

  1. start srs process: ./objs/srs -c conf/ffmpeg.transcode.conf
  2. publish a rtmp stream: ffmpeg -re -stream_loop -1 -i test.mp4 -vcodec h264 -profile:v baseline -acodec copy -f flv rtmp://localhost/live/livestream
  3. wait and monitor the ffmpeg processes, or check the srs log.
  4. the ffmpeg processes will be started to do transcode and republish the transcoded stream to same srs process, which will trigger another ffmpeg process to do another transcode, dead endless loops. e.g. live/livestream_ff will trigger live/livestream_ff_ff; live/livestream_ff_ff will trigger live/livestream_ff_ff_ff; ... endless;

Expected behavior the tutorial https://ossrs.net/lts/zh-cn/docs/v4/doc/sample-ffmpeg update, maybe remind the user don't sent the output to same srs process.

Or

refactor the transcode feature, let it only accept certain streams [app]/[stream].

winlinvip commented 4 months ago

Duplicated to #3516