Saya sedang memutar konten hls bitrate langsung dari aliran rtsp langsung. Saya menggunakan perintah berikut
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
Bagaimana saya bisa memodifikasi perintah ffmpg di atas untuk menghasilkan beberapa konten output bitrate? Tolong bantu aku.
Konsep yang Anda butuhkan untuk menghasilkan banyak output dari satu input dengan ffmpeg ditunjukkan dengan sangat jelas (setidaknya bagi saya itu) di https://trac.ffmpeg.org/wiki/Creating%20multiple%20outputs
pada dasarnya,
ffmpeg -i someinput [output_options] someoutput1 [output2_options] someoutput2
adalah polanya. Sepertinya Anda sudah tahu cara menggunakan rtsp sebagai input dan Anda tahu cara menghasilkan output tunggal dengan bitrate yang diberikan. Anda juga dapat mengulangi seluruh blok output (semuanya setelah string input rtsp Anda), dan setiap kali ubah resolusi Anda dengan-s
dan bitrate Anda (Anda menggunakan -crf sehingga Anda ingin menguranginya untuk res yang lebih tinggi / kualitas yang lebih tinggi dan meningkatkan itu untuk res rendah, kualitas lebih rendah).Secara pribadi, saya akan menggunakan crf untuk renditions HLS dan dengan libx265, aturan yang saya gunakan adalah
frame_width * frame_height * frame_rate * 0.1
untuk mendapatkan bitrate "ideal" untuk ukuran frame yang diberikan. Anda harus membalik persamaan jika Anda ingin memilih bitrate yang akan ditargetkan, lalu cari frameize dari itu. Nilai ".1" bisa lebih tinggi, tetapi Anda tidak akan melihat banyak manfaat secara umum (konten yang lebih kompleks akan lebih baik menggunakan nilai yang lebih tinggi) dan saya jarang pergi di bawah 0,07.sumber