вторник, 2 июля 2024 г.

ffmpeg hw acceleration в 2024г.

Заметка под аффектом от ffmpeg.

В двух вещах понадобился ffmpeg и как оказалось что он гораздо круче gui тулз.

  1. Совместить видео и аудио без декодирования.

Хотел скачать видео в дорогу с youtube через savefrom

Насколько понимаю отдельно лежат video и аудиофайлы, при скачивании в нужном мне качестве имеем два файла (videoplayback.mp4 и звук - videoplayback.m4a) собрать из них один очень просто (скорость моментальная):

time ffmpeg -i videoplayback.mp4 -i videoplayback.m4a  -vcodec copy -acodec copy output.mp4

real    0m1.677s
user    0m0.287s
sys     0m0.105s
  1. Грабинг DVD h256.

Раньше (когда дотрагивался) этот процесс занимал целую вечность, сейчас при аппаратном ускорении буквально минуты, да и размер файла оказывается минимальным.

ffmpeg дб собрать с поддержкой HW-acceleration, для nvivdia -- nvenc

equery u  ffmpeg |grep nvenc
+nvenc

ffmpeg -hwaccels shows
...
Hardware acceleration methods:
vdpau
cuda
vaapi
opencl
vulkan

...

В папке DVD (как правило VIDEO_TS) находятся видеофайлы. Для уменьшения размера выходного файла оставляем только нужную дорожку:

ffprobe VTS_01_1.VOB
...
  Stream #0:0[0x1bf]: Data: dvd_nav_packet
  Stream #0:1[0x1e0]: Video: mpeg2video (Main), yuv420p(tv, progressive), 720x576 [SAR 64:45 DAR 16:9], 25 fps, 25 tbr, 90k tbn
    Side data:
      cpb: bitrate max/min/avg: 8500000/0/0 buffer size: 1835008 vbv_delay: N/A
  Stream #0:2[0x80]: Audio: ac3, 48000 Hz, 5.1(side), fltp, 448 kb/s
  Stream #0:3[0x81]: Audio: ac3, 48000 Hz, 5.1(side), fltp, 448 kb/s

Имеется 2 аудио-дорожки, искомая (0:2) - отображается в mpv как 1 звуковая дорожка, 0:1 - видео дорожка.

Ну и сам граббинг

time ffmpeg -i concat:VTS_01_1.VOB\|VTS_01_2.VOB\|VTS_01_3.VOB\|VTS_01_4.VOB\|VTS_01_5.VOB -map 0:1 -map 0:2 -c:v hevc_nvenc  output.mp4
real    3m44.409s
user    5m39.764s
sys     0m11.438s

за 4 минуты из 6Гб выходной файл размером в 1.5Гб, при этом мне кажется даже карта особо не напрягается -- каеф...

Комментариев нет: