如何使用 FFmpeg 為即時視訊添加股票/變化文字?

如何使用 FFmpeg 為即時視訊添加股票/變化文字?

在廣播影片之前,我可以使用該命令向硬碟上的影片添加文字。

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

現在,我想在不同的時間添加不同的文字。它應該從具有以下格式的文件中讀取:例如

00:00:10:Google
00:00:20:雅虎
00:00:30:微軟公司
00:00:60 : 亞馬遜
00:05:30:java

有沒有辦法讓 ffmpeg 讀取文件並在指定時間添加文字?最後,我想在播放影片之前添加即時股票符號。

答案1

drawtext過濾器的原始碼(來自libavfilter/vf_drawtext.c來源樹中),似乎有一個參數可以指定包含要繪製的字串的檔案的路徑(與範例中textfile設定參數相反)。text您可能想嘗試將檔案路徑傳遞為textfile,並在查看影片輸出時更新檔案。

您還需要並行運行另一個程式/守護程式來更新檔案(其中僅包含要顯示的當前文字),但假設您可以將其與系統時鐘同步,則該程式將相當簡單。


或者,您可以修改drawtext過濾器本身以根據當前時間碼(其中可用於 FFmpeg 過濾器)。雖然這需要修改過濾器的原始程式碼並從頭開始重新編譯,但它也可以避免使用並行運行的單獨程式/守護程式(因為每當 FFmpeg 嘗試繪製字串時都會呼叫您自己的程式碼)。

但是,假設textfile參數有效(讀取:每幀更新),這可能是更好的方法,因為可以用 Python 等腳本語言編寫更新文字檔案的簡單守護程式。

相關內容