como gerar o conteúdo HLS de várias taxas de bits a partir do fluxo rtsp ao vivo?

5

Estou gerando conteúdo hls único de taxa de bits ao vivo do fluxo rtsp. Eu estou usando o seguinte comando

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

Como posso modificar o comando ffmpg acima para gerar vários conteúdos de saída de taxa de bits? Por favor me ajude.

    
por prashantas 09.02.2015 / 11:26

2 respostas

5

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

e crie index.m3u8 apontando para os fluxos acima:

#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
    
por 13.02.2016 / 04:11
2

O conceito que você precisa para gerar múltiplas saídas de uma única entrada com o ffmpeg é demonstrado muito claramente (pelo menos para mim) em link

basicamente, ffmpeg -i someinput [output_options] someoutput1 [output2_options] someoutput2 é o padrão. Parece que você já sabe como usar o rtsp como uma entrada e sabe como gerar uma única saída com uma determinada taxa de bits. Você também pode repetir todo o bloco de saída (tudo após a string de entrada do rtsp) e, a cada vez, alterar sua resolução com -s e sua taxa de bits (você está usando -crf para diminuí-lo para obter valores mais altos qualidade e aumentá-lo para baixa resolução, menor qualidade).

Pessoalmente, eu usaria o crf para renderizações HLS e com a libx265, a regra que eu uso é frame_width * frame_height * frame_rate * 0.1 para obter a taxa de bits "ideal" para um determinado tamanho de quadro. você terá que inverter a equação se quiser selecionar as taxas de bits a serem atingidas e, em seguida, descobrir o tamanho do quadro a partir disso. O valor ".1" pode ser maior, mas você não verá muito benefício em geral (um conteúdo mais complexo usará melhor um valor mais alto) e eu raramente vou abaixo de 0.07.

    
por 21.05.2016 / 01:53

Tags