Задать вопрос
@duoman

Ресайз стрима через ffmpeg?

Добрый день! Пробую ресайзить стрим из 1280x720 в 720x480
Получается так я беру три rtsp потока с трех камер с помощью ffmpeg и перевожу их в папку dash и hls в двух разрешениях: 1280x720 и 720x480. итого того 12 потоков. И получается что все это дело запускает очен много процессов ffmpeg и загружает все ядра i7-3770K CPU @ 3.50GH на 100%.
Прилагаю аппликуху(nginx) от одного стрима
application src {
            live on;
            exec_options on;
            exec_static ffmpeg -threads 0 -rtsp_transport tcp -re
-i "rtsp://admin:admin@10.0.0.11:554/cam/realmonitor?channel=1&subtype=0"
-c copy -f flv -r 25 -bufsize 2M -s 1280x720 -an "rtmp://localhost:1935/hls/camera1 2>>/var/log/nginx/ffmpeg.log"
-c libx264 -f flv -r 25 -bufsize 2M -vf scale=720:480  -an "rtmp://localhost:1935/hls/720pcamera1 2>>/var/log/nginx/ffmpeg.log"
-c copy -f flv -r 25 -bufsize 2M -s 1280x720 -an "rtmp://localhost:1935/dash/camera1 2>>/var/log/nginx/ffmpeg.log"
-c libx264 -f flv -r 25 -bufsize 2M -vf scale=720:480 -an "rtmp://localhost:1935/dash/720pcamera1 2>>/var/log/nginx/ffmpeg.log";
        }

Если я не использую ресайз видео потока, то загрузка занимает не более 5 - 10% одного ядра.
Возможно я в чем то ошибся или действительно нужно столько ресурсов на смену разрешения?
  • Вопрос задан
  • 837 просмотров
Подписаться 1 Оценить 3 комментария
Пригласить эксперта
Ответы на вопрос 1
@monah_tuk
Moskus вам правильно намекнул на перекодировку.

Вариантов борьбы немного: использовать железячное кодирование (например Intel QSV, который доступен с FFmpeg 2.7.1 или nVidia NVENC который появился раньше), что несколько понизит загрузку; смириться или использовать ферму для кодирования (кодировать стрим на других машинах и делать рестрим).

Оптимально сделать микс из железячного кодирования и распределения нагрузки по ферме.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы