Как добавить текст в видео с помощью ffmpeg и python - PullRequest
4 голосов
/ 18 ноября 2011

Я пытался добавить текст в avi с помощью ffmpeg, и я не могу понять, что это правильно.

Пожалуйста, помогите:

import subprocess

ffmpeg = "C:\\ffmpeg_10_6_11.exe"
inVid = "C:\\test_in.avi"
outVid = "C:\\test_out.avi"

proc = subprocess.Popen(ffmpeg + " -i " + inVid + " -vf drawtext=fontfile='arial.ttf'|text='test' -y " + outVid , shell=True, stderr=subprocess.PIPE)
proc.wait()
print proc.stderr.read()

Ответы [ 2 ]

6 голосов
/ 25 января 2013

Двоеточие ":" и обратная косая черта "\" имеют особое значение при указании параметров для drawtext. Таким образом, вы можете избежать их, преобразовав ":" в "\:" и "\" в "\\". Также вы можете заключить путь к файлу шрифта в одинарные кавычки, если путь содержит пробелы.

Так у вас будет

ffmpeg -i C:\Test\rec\vid_1321909320.avi -vf drawtext=fontfile='C\:\\Windows\\Fonts\\arial.ttf':text=test vid_1321909320.flv
5 голосов
/ 21 ноября 2011

HA

Оказывается, двойное двоеточие ":" в C: \ Windows \ Fonts и т. Д. Действовало как разделение, поэтому, когда я вводил полный путь шрифта, ffmpeg читал мою команду следующим образом

оригинальная команда

" -vf drawtext=fontfile='C:\\Windows\\fonts\\arial.ttf'|text='test' "

интерпретация ffmpeg

-vf drawtext=  # command

fontfile='C    # C is the font file because the : comes after it signalling the next key

arial.ttf'     # is the next key after fontfile = C (because the C is followed by a : signalling the next key)

:text          # is the value the key "arial.tff" is pointing to

='test'        # is some arb piece of information put in by that silly user

Таким образом, чтобы исправить это, вам нужно удалить: в пути к файлу шрифта.

Мой окончательный рабочий код:

import subprocess

ffmpeg = "C:\\ffmpeg_10_6_11.exe"
inVid = "C:\\test_in.avi"
outVid = "C:\\test_out.avi"

subprocess.Popen(ffmpeg + " -i " + inVid + ''' -vf drawtext=fontfile=/Windows/Fonts/arial.ttf:text=test ''' + outVid , shell=True)
...