Флудильняbmp > mp4

cs16 steam , немного постреляли

Что не вошло по тематике и просто общение. Подфорумы.
Ответить
Аватара пользователя

Автор темы
Stock Verified
stock.treadstone
stock.treadstone
Сообщения: 249
Стаж: 1 год
Откуда: Ярославль
Благодарил (а): 65 раз
Поблагодарили: 77 раз
Контактная информация:

bmp > mp4

#1

Сообщение Stock Verified »

weee.._jke
(sound: Lowx Excused)

размялись и решил вспомнить "старую школу" с командой startmovie через playdemo в /cs16/ без всяких плат видеозахвата.
куча bmp с большим весом в 50 кадров в сек. на выходе 1 кадр 4,1 Mb (1600/900). секунда уж весила 205 Mb. минута 12 Gb.
нужен хороший ssd ) видео ряд собирал через мощнейшую ffmpeg для linux в терминале.

In:
Stream #0:0: Video: bmp, bgr24, 1600x900, 50 fps, 50 tbr, 50 tbn
Stream #1:0: Audio: mp3, 44100 Hz, stereo, fltp, 320 kb/s
Out:
Stream #0:0: Video: h264 (avc1 / 0x31637661), yuv420p(tv, progressive), 1600x900, q=2-31, 50 fps, 12800 tbn
profile High, level 4.2, 4:2:0, 8-bit, 264 - core 164 r3108 31e19f9 - H.264/MPEG-4 AVC codec
Stream #0:1: Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 320 kb/s

result3.mp4
(291.81 МБ) 2 скачивания

указываем rate в 50 кадров, путь ко всем bmp по шаблону, видеокодек, совместимость sdr 8bit, битрейт на выходе и перемещаем метаданные в самое начало: ffmpeg -framerate 50 -i "dndn%05d.bmp" -c:v libx264 -pix_fmt yuv420p -crf 20 -movflags +faststart result2.mp4

докидываем аудиопоток с зацикливанием, видеопоток без изменений, делаем приглушение в начале и конце, обрезаем аудио по концу видео, аудиокодек, битрейт: ffmpeg -i result2.mp4 -stream_loop -1 -i audio.mp3 -c:v copy -af "afade=t=in:st=0:d=3, afade=t=out:st=425:d=5" -map 0 : v :0 -map 1 : a : 0 -c:a aac -b:a 320k -shortest result3.mp4

Снимок экрана_2026-02-17_02-23-46.png
желательно докинуть пресет -preset slow
качество картинки улучшится , размер не измениться. не стал заморачиваться , время кодирования увеличивается.
VK: stock.treadstone
Монтаж дверей г. Ярославль
Предварительная запись: +7 (4852) 33·53·26


Изображение
Аватара пользователя

Автор темы
Stock Verified
stock.treadstone
stock.treadstone
Сообщения: 249
Стаж: 1 год
Откуда: Ярославль
Благодарил (а): 65 раз
Поблагодарили: 77 раз
Контактная информация:

#2

Сообщение Stock Verified »

немного усложним задачу и будем использовать аппаратное кодирование видео через gpu , а не cpu.
задача на выходе получить h.265 HDR (10 bit) в mp4 контейнере с переменным битрейтом хорошего качества и "развязанными руками" в динамике. вообще задача глупая , изначально только потому , что bmp сам по себе это SDR и по хорошему ему нужно делать цветокоррекцию. но не в этом случае. задача просто получить поток HDR.

сразу немного справки по теме:

h.264/avc может только sdr (8 bit), 4K будет сыпаться.. край FHD, кодеки: libx264 (cpu) и h264_nvenc (gpu). запускается на любом утюге.
h.265/hevc умеет уже 4K и HDR (10 bit), кодеки: libx265 (cpu) и hevc_nvenc (gpu), на ~40-50% эффективнее h.264. запуск так же почти везде.
VP9 родной для youtube от google, кодеки: libvpx-vp9 (cpu). прямой конкурент h.265. больше для web сервисов.
AV1, кодеки: libsvtav1 (cpu - intel/netflix) и libaom-av1 (cpu - эталон), av1_nvenc (gpu/nvidia от 40-й серии) av1_qsv (gpu/intel arch). самый современный, примерно на 30% лучше VP9. на практике пока еще сложновато.

контейнеры: для VP9 это WebM и mkv. для h.264, h.265, av1 это mp4

сама команда:


ffmpeg -hwaccel cuda -hwaccel_output_format cuda -framerate 50 -i "dndn%05d.bmp" -i audio.mp3 \
-c:v hevc_nvenc -preset slow -profile:v main10 -pix_fmt p010le \
-rc vbr -cq 25 -b:v 0 -maxrate 50M -bufsize 100M \
-color_primaries 9 -color_trc 16 -colorspace 9 \
-map 0: v:0 -map 1: a:0 -shortest \
-af "afade=t=in:st=0:d=1, afade=t=out:st=430:d=4" \
-c:a aac -b:a 320k -movflags +faststart \
result1_hdr.mp4


In:
Stream #0:0: Video: bmp, bgr24, 1600x900, 50 fps, 50 tbr, 50 tbn
Stream #1:0: Audio: mp3, 44100 Hz, stereo, fltp, 320 kb/s
Out:
Stream #0:0: Video: hevc (Main 10) (hev1 / 0x31766568), p010le(tv, bt2020nc/bt2020/smpte2084, progressive), 1600x900, q=2-31, 50 fps, 12800 tbn
Stream #0:1: Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 320 kb/s

разбираем:

первая строка и последняя строка это входные и выходные данные.
вторая строка выбор кодека hevc_nvenc для кодирования видеопотока на gpu с медленным пресетом + профиль и цветность для HDR.
третья строка выбор переменного битрейта + качество и динамика с разумным ограничением.
четвертая строка для метаданных HDR , а именно цветовой охват, кривая яркости и математическая формула с YUV на RGB.
пятая строка делает затухание аудио в начале и конце.
шестая строка карта потоков данных для сборки с обрезкой звука по концу с заголовком в начало.


result2_hdr.mp4
(415.65 МБ) 4 скачивания
размер конечно же увеличился. картинка стала насыщеннее, плавнее, качественнее, цветопередача другая. но итог все равно один. исходники были в sdr )

ffmpeg рекомендую собрать из исходников с GitHub. последний релиз 8.0.1 на момент написания этого текста.
VK: stock.treadstone
Монтаж дверей г. Ярославль
Предварительная запись: +7 (4852) 33·53·26


Изображение
Аватара пользователя

One Two Verified
Сообщения: 31
Стаж: 1 год
Благодарил (а): 18 раз
Поблагодарили: 14 раз

#3

Сообщение One Two Verified »

них не понятно, но очень интересно.
Аватара пользователя

Автор темы
Stock Verified
stock.treadstone
stock.treadstone
Сообщения: 249
Стаж: 1 год
Откуда: Ярославль
Благодарил (а): 65 раз
Поблагодарили: 77 раз
Контактная информация:

#4

Сообщение Stock Verified »

One Two писал(а): 20 фев 2026, 20:21 них не понятно, но очень интересно.
давай разберем вместе ? что непонятно , пиши )
VK: stock.treadstone
Монтаж дверей г. Ярославль
Предварительная запись: +7 (4852) 33·53·26


Изображение
Ответить