MYCSS

2020-05-13

Нотатки: ffmpeg. Заморока останнього кадру. Змінна швидкості наприкінці медіа.

Часто маю задачі з ffmpeg, але вони бувають тимчасові і про рішення забуваю.

Заморока останнього кадру

Цей скрипт додає 4 секунди наприкінці відео з стоп-кадром.
#!/bin/bash

ffmpeg -i ${INPUT} \
  -filter_complex "tpad=stop_mode=clone:stop_duration=4 \
  ${OUPUT}
Цей скрипт додає 4 секунди наприкінці відео з стоп-кадром і вирізає рівно 3 сек.
ffmpeg -i ${INPUT} \
  -filter_complex "tpad=stop_mode=clone:stop_duration=4,trim=start=1:duration=3" \
  ${OUPUT}


Змінна швидкості наприкінці медіа.

Цей скрипт поступово (експоненційно) змінює швидкість медіа починаючи з позиції 13.4 сек. це за 1 сек до кінця, і цю секунду розтягує на 2 сек (2000мілісекунд).
#!/bin/bashfunction AddSlowEffect(){
 if [ -f "${1}" ] ;then
  local StartTime=13.4
  local Duration=2000.0
  local codec='-pix_fmt yuv420p -c:v libx265'
  local fps=60
  local f=( ffmpeg -y -i $1  -filter_complex "setpts='if (gte(T,${StartTime}),PTS+((exp(T-${StartTime})-1.0)*${Duration}
),PTS)',fps='fps=${fps}'" ${codec} $2 )

  echo  "AddSlowEffect Command: ${f[@]}"
  "${f[@]}"
 fi
}

AddSlowEffect $INPUT $OUTPUT

Акселерація кодування

Для того щоб мати звичайному користувачу, а не тільки root, до можливостей прискорення відеокарти, треба додати користувача до групи video.
sudo usermod -a -G video $USER

Зайти до нової сесії користувача і буде результат :
vainfo --display drm  --device /dev/dri/renderD128
libva info: VA-API version 1.1.0
libva info: va_getDriverName() returns 0
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/r600_drv_video.so
libva info: Found init function __vaDriverInit_1_1
libva info: va_openDriver() returns 0
vainfo: VA-API version: 1.1 (libva 2.1.0)
vainfo: Driver version: Mesa Gallium driver 19.2.8 for AMD TAHITI (DRM 2.50.0, 5.3.0-51-generic, LLVM 9.0.0)
vainfo: Supported profile and entrypoints
      VAProfileMPEG2Simple            : VAEntrypointVLD
      VAProfileMPEG2Main              : VAEntrypointVLD
      VAProfileVC1Simple              : VAEntrypointVLD
      VAProfileVC1Main                : VAEntrypointVLD
      VAProfileVC1Advanced            : VAEntrypointVLD
      VAProfileH264ConstrainedBaseline: VAEntrypointVLD
      VAProfileH264ConstrainedBaseline: VAEntrypointEncSlice
      VAProfileH264Main               : VAEntrypointVLD
      VAProfileH264Main               : VAEntrypointEncSlice
      VAProfileH264High               : VAEntrypointVLD
      VAProfileH264High               : VAEntrypointEncSlice
      VAProfileNone                   : VAEntrypointVideoPro

Приклад використання:

 ${ffmpeg} -y \
  -vaapi_device /dev/dri/renderD128 \
  -i ${SFILE} \
  -i ${SCLOCK} \
  -i ${SCLOCKTITLE} \
  -y -r 60 \
  -filter_complex \
"[2:0]scale=iw/4:-1[title];[0:0][title]overlay=x=1600:y=920[ctitle];\
[1:0]scale=iw/4:-1[clock];[ctitle][clock]overlay=x=1600:y=650,format=nv12|vaapi,hwupload[out]"\
  -map '[out]'  -c:v h264_vaapi -q 28 -bf 0   ${DIMG}/${SMKV}.

Матеріали:

Немає коментарів:

Коли забув ти рідну мову, біднієш духом ти щодня...
When you forgot your native language you would become a poor at spirit every day ...

Д.Білоус / D.Bilous
Рабів до раю не пускають. Будь вільним!

ipv6 ready