2016-04-01 3 views
0

Я делаю онлайн-курс, и, чтобы избежать распространения пиратства, я решил разместить водяные знаки на видео (включая персональную информацию пользователя), чтобы он не мог загружать сайты для совместного использования. Теперь сложная часть: я перемещаю водяной знак во время видео в 3/4 случайных положениях каждые 30 секунд. Это возможно с помощью ffmpeg?ffmpeg - Динамические буквы и случайное положение водяного знака для видео?

+0

Дубликат [Выполнение прыгающего текстового водяного знака] (http://stackoverflow.com/questions/30291331/making-jumping-text-watermark). – LordNeckbeard

ответ

2

Редактировать: это адаптация ответа в ссылке LN, которая будет рандомизации позиция каждые 30 секунд, без повторов:

ffmpeg -i input.mp4 \ 
-vf \ 
"drawtext=fontfile=font.ttf:fontsize=80:[email protected]:text='studentname': \ 
x=if(eq(mod(t\,30)\,0)\,rand(0\,(W-tw))\,x): \ 
y=if(eq(mod(t\,30)\,0)\,rand(0\,(H-th))\,y)" \ 
-c:v libx264 -crf 23 -c:a copy output.mp4 

Пожилым ответ

You может использовать команду, подобную приведенной ниже:

ffmpeg -i input.mp4 \ 
-vf \ 
"drawtext=fontfile=font.ttf:fontsize=80:[email protected]: \ 
text='studentname':x=200:y=350:enable='between(mod(t\,30*3),0,30)', \ 
drawtext=fontfile=font.ttf:fontsize=80:[email protected]: \ 
text='studentname':x=1000:y=600:enable='between(mod(t\,30*3),31,60)', \ 
drawtext=fontfile=font.ttf:fontsize=80:[email protected]: \ 
text='studentname':x=450:y=50:enable='between(mod(t\,30*3),61,90)'" \ 
-c:v libx264 -crf 23 -c:a copy output.mp4 

Здесь три положения вращаются с изменением каждые 30 секунд. Каждый параметр x:y устанавливается вручную. Если вы вызываете команду из сценария оболочки, вы можете использовать генератор случайных чисел и передать это в команду. Существует случайная функция, включенная в фильтр drawtext, но оценивается каждый кадр, так что это приведет к игре псевдо-пинг-понга с текстом.

+0

Это интересный пример, и я видел достаточно похожих вопросов, подобных этому, что, возможно, было бы полезно добавить его в примеры drawtext в 'doc/filters.texi', если вы хотите отправить патч. – LordNeckbeard

+0

Звучит неплохо. Можете ли вы указать руководство по форматированию и отправке патча doc? Благодарю. – Mulvya

+0

[Clone ffmpeg repo using git] (https://ffmpeg.org/download.html). Добавьте имя и адрес электронной почты в глобальную конфигурацию git (https://wiki.videolan.org/git#Configure_your_global_git_config) и перейдите в каталог 'ffmpeg'. Всегда сначала сворачивайте: 'git pull --rebase'. Сделайте локальный ветвь: 'git checkout -b drawrandom'. Внесите изменения. Локально фиксировать изменения: 'git commit -as' (см. [Примеры фиксации заголовков и сообщений] (http://git.videolan.org/?p=ffmpeg.git;a=history;f=doc/filters.texi)) , Просмотрите журнал 'git log -p -2', сделайте патч:' git format-patch -o patches origin'. Файл электронной почты в 'patches' для ffmpeg-devel при ffmpeg. – LordNeckbeard

Смежные вопросы