Мне понадобилась помощь в выполнении моей задачи.
Я использую 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 потоков.