как генерировать множественный битрейт HLS контента из живого rtsp потока?

Я gerating один битрейт живой контент hls из живого rtsp потока . Я использую следующую команду

ffmpeg -v verbose -i rtsp://127.0.0.1:8080/test.sdp 
 -vcodec libx264 -acodec aac -ac 1 -strict -2 -crf 18 -profile:v baseline 
 -maxrate 400k -bufsize 1835k -pix_fmt yuv420p -flags -global_header 
 -hls_time 10 -hls_list_size 3 -hls_wrap 4 -hls_flags delete_segments 
 -start_number 1 /usr/local/apache-tomcat-7.0.53/webapps/ROOT/hls/index1.m3u8

Как я могу изменить приведенную выше команду ffmpg для создания нескольких выходных данных битрейта ? Пожалуйста, помогите.

2
задан Isaac Sutherland
09.02.2023 21:10 Количество просмотров материала 2698
Распечатать страницу

2 ответа

ffmpeg -v verbose -i rtsp://127.0.0.1:8080/test.sdp \
-vcodec libx264 -acodec aac -ac 1 -strict -2 -crf 18 \
-profile:v baseline -maxrate 400k -bufsize 1835k \
-pix_fmt yuv420p -flags -global_header \
-hls_time 10 -hls_list_size 3 -hls_wrap 4 -hls_flags delete_segments \
-start_number 1 /usr/local/apache-tomcat-7.0.53/webapps/ROOT/hls/index1.m3u8 \
-vcodec libx264 -acodec aac -ac 1 -strict -2 -crf 18 \
-profile:v baseline -maxrate 700k -bufsize 1835k \
-pix_fmt yuv420p -flags -global_header \
-hls_time 10 -hls_list_size 3 -hls_wrap 4 -hls_flags delete_segments \
-start_number 1 /usr/local/apache-tomcat-7.0.53/webapps/ROOT/hls/index2.m3u8

и создать индекс.m3u8, указывающий на потоки выше:

#EXTM3U
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=400000
hls/index1.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=700000
hls/index2.m3u8
5
отвечен vayvanne 2023-02-11 04:58

концепция, необходимая для генерации нескольких выходов из одного входа с помощью 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.

2
отвечен rainabba 2023-02-11 07:15

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх