コマンドを使用して、ハードディスク上のビデオにテキストを追加してから、それをブラッドキャストすることができます。
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:yahoo 00:00:30:msft 。 。 。 00:00:60:amzn 。 。 。 00:05:30:Java
Ffmpegにファイルを読み取らせ、指定された時間にテキストを追加する方法はありますか?最終的には、ビデオを放送する前に、ライブのティッカーシンボルをビデオに追加したいと思います。
From drawtext
フィルターのソースコード (from libavfilter/vf_drawtext.c
ソースツリー内)、描画する文字列を含むファイルへのパスを指定できるtextfile
パラメータがあるようです(例のようにtext
パラメータを設定するのとは対照的です) )。ファイルパスをtextfile
として渡し、ビデオ出力を表示しながらファイルを更新してみてください。
また、ファイルを更新するために別のプログラム/デーモンを並行して実行する必要があります(表示される現在のテキストのみが含まれます)が、システムクロックと同期できると仮定すると、このプログラムはかなり簡単です。
または、drawtext
フィルター自体を変更して、現在のタイムコードに基づいて特定の文字列を表示することもできます(FFmpegフィルターでisを使用できます) 。これにはフィルターのソースコードを変更して最初から再コンパイルする必要がありますが、並行して実行される別のプログラム/デーモンの使用も回避されます(FFmpegが文字列を描画しようとするたびに独自のコードが呼び出されるため)。
ただし、textfile
パラメーターが機能すると仮定すると(読み取り:フレームごとに更新されます)、テキストファイルを更新する単純なデーモンをPythonなどのスクリプト言語で記述できるため、おそらくこれがより適切な方法です。