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