Jestem w stanie dodać tekst do wideo na moim dysku twardym, zanim go odłożę ... za pomocą polecenia.
ffmpeg -y -i IMG_0696.MOV -acodec libmp3lame -vcodec msmpeg4 \
-b:a 192k -b:v 1000k -ar 44100 \
-vf "drawtext=text=string1 string2 string3 string4 string5 string6 string7 :expansion=normal:fontfile=/Windows/Fonts/cambriai.ttf: y=0:x=h-(2*lh)-n: fontcolor=white: fontsize=40: box=1: boxcolor=0x00000000@1" \
-an IMG_0696.avi
Teraz chcę dodać różne teksty w różnych momentach. Powinien być odczytany z pliku, który ma format format: Na przykład
00:00:10: google 00:00:20: yahoo 00:00:30: msft . . . 00:00:60: amzn . . . 00:05:30: java
Czy istnieje sposób, aby ffmpeg odczytał plik i dodał tekst w określonym czasie? Ostatecznie chciałbym dodać symbol wideo na żywo przed jego nadaniem.
video
ffmpeg
video-streaming
mencoder
użytkownik763410
źródło
źródło
ffmpeg -i infile -i subtitle.srt -scodec copy -acodec copy -vcodec copy outfile.mkv
. Wyszukaj format srt.Odpowiedzi:
Z kodu źródłowego
drawtext
filtru (zlibavfilter/vf_drawtext.c
drzewa źródłowego) wydaje się, że istniejetextfile
parametr, który może określić ścieżkę do pliku zawierającego ciąg, który ma zostać narysowany (w przeciwieństwie do ustawianiatext
parametru jak w przykładzie). Możesz poeksperymentować z przekazaniem ścieżkitextfile
pliku jako i zaktualizowaniem pliku podczas wyświetlania wyjścia wideo.Potrzebny byłby również inny program / demon działający równolegle w celu aktualizacji pliku (który zawierałby tylko bieżący tekst do wyświetlenia), ale ten program byłby dość trywialny, zakładając, że można go zsynchronizować z zegarem systemowym.
Alternatywnie, można zmodyfikować
drawtext
sam filtr, aby wyświetlić konkretny ciąg w oparciu o bieżący Timecode (który jest dostępny do filtrów FFmpeg). Chociaż wymagałoby to modyfikacji kodu źródłowego filtru i ponownej kompilacji od podstaw, uniknęłoby to również użycia oddzielnego programu / demona działającego równolegle (ponieważ twój własny kod byłby wywoływany, gdy FFmpeg próbuje narysować ciąg).Zakładając jednak, że
textfile
parametr działa (czytaj: jest aktualizowany w każdej klatce), prawdopodobnie byłaby to lepsza metoda, ponieważ prosty demon do aktualizacji pliku tekstowego mógłby zostać napisany w języku skryptowym, takim jak Python.źródło