FFmpeg: получи лучшее кодирование из моей функции - PullRequest
0 голосов
/ 25 октября 2019

Мне понадобилась помощь в выполнении моей задачи.

Я использую FFmpeg для записи времени и имени канала на видео.

Моя цель - записать поток, совместимый с html5 иследующие настройки:

Video wrapper MP4

Video codec H.264

Bitrate 1Mbps

Audio codec AAC

Audio bitrate 128Kbps

И GPU encoding.

Вот то, что я использую:

ffmpeg -hwaccel cuvid -y -i {udp} -vf "drawtext=fontfile=calibrib.tff:fontsize=25:text='{ChannelName} %{localtime}': x=10: y=10: fontcolor=white: box=1: boxcolor=0x000000" -pix_fmt yuv420p -vsync 1 -c:v h264_nvenc -r 25 -threads 0 -b:v 1M -profile:v main -minrate 1M -maxrate 1M -bufsize 10M -sc_threshold 0 -c:a aac -b:a 128k -ac 2 -ar 44100 -af "aresample=async=1:min_hard_comp=0.100000:first_pts=0" -bsf:v h264_mp4toannexb -t 00:30:00 {output}\{ChannelName}\{ChannelName}_{year}_{monthno}_{day}__{Hours}_{Minutes}_{Seconds}.mp4

{ChannelName}_{year}_{monthno}_{day}__{Hours}_{Minutes}_{Seconds} - все это переменная информация о хранении.

{udp} содержит ссылку на поток UDP.

Я сделал это таким образом, поскольку у меня есть несколько записей потока UDP.

Хотя это работает, есть ли лучший способ сделать это, сохраняя в -vf, так как мне нужно время и название канала.

В настоящее время используется от 0,8% до 1,9% GPU на моем Quadro P4000. Я не хочу использовать больше этого, поскольку у меня более 30 потоков.

1 Ответ

1 голос
/ 31 октября 2019

Вот некоторые из предложений

  1. -profile: v использовать ограниченный базовый профиль или базовый профиль - так как большинство браузеров или HTML будет поддерживать.

  2. Проверка Сколько параллельных экземпляров энкодера вы можете запустить на графическом процессоре - Quadro P4000, а остальные - на процессоре.

  3. В зависимости от разрешения и числа кадров в секунду, которые вы можете выбратьвидео битрейт диапазона кодирования мин и макс битрейт. (-b: v 1M -минат 1M -макс. 1M) - см .: https://trac.ffmpeg.org/wiki/Limiting%20the%20output%20bitrate

  4. -sc_threshold (FFmpeg) Регулирует чувствительность определения сцены x264. Редко нужно отрегулировать. Рекомендуемое значение по умолчанию: 40

...