Часто маю задачі з 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}.
Матеріали:
Немає коментарів:
Дописати коментар