Перекодировать файлы сегмента без заикания для прямой трансляции http
Я сегментировал многоадресный видеопоток на маленькие ts-файлы для моего сервиса HTTP live streaming, и он работал довольно хорошо. Затем я обнаружил, что битрейт источника слишком высок (1,5 Мбит / с), поэтому я настроил фоновое задание для перекодирования файлов TS на меньший битрейт (500 Кбит / с) с помощью FFmpeg. Проблема в том, что воспроизведение 500k .m3u8 заикается (при загрузке каждого нового файла) и не так гладко, как 1.5 Мбит / с.
Моя командная строка транскодирования выглядит следующим образом:
ffmpeg -i /home/rca/tst.ts -f mpegts -acodec libmp3lame -ar 48000 -ab 64k -vcodec libx264 -b 500k /home/rca/tst.ts
Есть идеи для этого? Спасибо!
1 ответ
Уменьшите разрешение и / или пропустите кадры. Это ваша торговая площадка для соединений с меньшей пропускной способностью.
К счастью, коллега ( enobrev) только что проделал большую работу по рассмотрению различных способов снижения пропускной способности:
Лучше всего начинать с необработанного незашифрованного формата, в противном случае установка скорости передачи в ffmpeg мало что даст (хотя снижение разрешения и частоты кадров).
ffmpeg -i audio.wav -i "concat:0.avi|1.avi|2.avi" -vcodec libx264 -preset fast -crf 23 -threads 0 -b:v 64000 -r 10 -vf "scale=240:-1" -ab 24k -ar 22050 -map 0 -vbsf h264_mp4toannexb -f segment -segment_time 10 -segment_format mpegts -segment_list autoStream.m3u8 -segment_list_type m3u8 out_lowres_64kbps%d.ts
ffmpeg -i audio.wav -i "concat:0.avi|1.avi|2.avi" -vcodec libx264 -preset fast -crf 23 -threads 0 -b:v 300000 -r 24 -vf "scale=480:-1" -ab 96k -ar 22050 -map 0 -vbsf h264_mp4toannexb -f segment -segment_time 10 -segment_format mpegts -segment_list autoStream.m3u8 -segment_list_type m3u8 out_midres_300kbps%d.ts
ffmpeg -i audio.wav -i "concat:0.avi|1.avi|2.avi" -vcodec libx264 -preset fast -crf 23 -threads 0 -b:v 1200000 -r 24 -vf "scale=640:-1" -ab 192k -ar 44100 -map 0 -vbsf h264_mp4toannexb -f segment -segment_time 10 -segment_format mpegts -segment_list autoStream.m3u8 -segment_list_type m3u8 out_hires_1.2mbps%d.ts
Есть еще много параметров, которые вы можете настроить, но в приведенном выше примере я устанавливаю битрейт -b:v, частоту кадров -r, разрешение видео -vf и битрейт звука -ab (я думаю) и частоту дискретизации звука - Арканзас