Концепция, которая вам нужна для генерации нескольких выходов из одного входа с помощью ffmpeg, очень четко продемонстрирована (по крайней мере, для меня так) на https://trac.ffmpeg.org/wiki/Creating%20multiple%20outputs
в основном, ffmpeg -i someinput [output_options] someoutput1 [output2_options] someoutput2
является шаблоном. Похоже, вы уже знаете, как использовать rtsp в качестве входных данных, и вы знаете, как генерировать один выход с заданным битрейтом. Вы также хотите повторить весь выходной блок (все после входной строки rtsp) и каждый раз менять разрешение с помощью -s
и вашего битрейта (вы используете -crf, так что вы захотите уменьшить его для более высокого разрешения / более высокого качества). и увеличить его для более низкого разрешения, более низкого качества).
Лично я бы использовал crf для воспроизведения HLS, а с libx265 я использую правило frame_width * frame_height * frame_rate * 0.1
чтобы получить "идеальную" скорость передачи битов для данного размера кадра. вам нужно будет перевернуть уравнение, если вы хотите выбрать битрейт для цели, а затем выяснить размер кадра. Значение «.1» может возрасти, но в целом вы не увидите большой выгоды (более сложный контент лучше будет использовать более высокое значение), и я редко опускаюсь ниже 0,07.