Фильтр отрисовки текста FFMPEG работает для меня, вы указываете начальный тайм-код и его формат следующим образом:
-vf drawtext="fontsize=15:fontfile=/Library/Fonts/DroidSansMono.ttf:\
timecode='00\:00\:00\:00':rate=25:text='TCR\:':fontsize=72:fontcolor='white':\
boxcolor=0x000000AA:box=1:x=860-text_w/2:y=960"
Вы должны указать формат тайм-кода в форме чч: мм: сс [:;,] ff.Обратите внимание, что вы должны экранировать двоеточия в строке формата временного кода, и вы должны указать скорость временного кода (здесь 25fps).Вы также можете указать дополнительный текст - здесь это «TCR:»
Вы можете получить частоту кадров с помощью ffprobe и немного оболочки fu:
frame_rate=$(ffprobe -i "movie.mov" -show_streams 2>&1|grep fps|sed "s/.*, \([0-9.]*\) fps,.*/\1/")
Так что вы можете легко подключить все этовместе в сценарии пакетной обработки, например,
for i in *.mov
frame_rate=$(ffprobe -i "$i" -show_streams 2>&1|grep fps|sed "s/.*, \([0-9.]*\) fps,.*/\1/")
clipname=${(basename "$i")/\.*/}
ffmpeg -i "$i" -vcodec whatever -acodec whatever \
-vf drawtext="fontsize=15:fontfile=/Library/Fonts/DroidSansMono.ttf:\
timecode='00\:00\:00\:00':rate=$frame_rate:text='$clipname' TCR:':\
fontsize=72:fontcolor='white':boxcolor=0x000000AA:\
box=1:x=860-text_w/2:y=960" "${i/.mov/_tc.mov}"
done
Это добавит имя клипа и временной код прокрутки в полупрозрачном поле внизу в центре кадра 1920x1080
Edit Так как я перешел на темную сторону, я теперь делаю это в среде Windows Powershell, и вот что я использую:
ls -R -File -filter *.M*|%{
ffmpeg -n -i $_.fullname -vf drawtext="fontsize=72:x=12:y=12:`
timecode='00\:00\:00\:00':rate=25:fontcolor='white':`
boxcolor=0x000000AA:box=1" `
("c:\path\to\destination\{0}" -F ($_.name -replace 'M[OPT][V4S]', 'mp4'))}
Это создает mp4s с учетом папки, содержащей .MOV,.Файлы MP4 и .MTS (с помощью команды -filter
он ищет файлы с * .M * в имени, которые вы должны были бы изменить, если бы вы работали с файлами .AVI), и он немного более минималистичный, он просто используетlibx264 с настройками по умолчанию в качестве выходного кодека и без указания шрифта и т. д. В этом случае временной код записывается в верхнем левом углу кадра.