ffmpegを使って現在時刻を挿入するには?

ffmpegを使って現在時刻を挿入するには?

私はSSHを介したシンプルなライブビデオストリーミングと録画にとをffmpeg使用しています。それでは、現在(サーバー)時間をストリームに含めたいと思います。形式は重要ではありません。理想的には。teemplayerYYYY-MM-DD HH:MM:SS

見つけました。これ次のコマンドを提案する方法:

ffmpeg -f video4linux2 -input_format mjpeg -s 1280x720 -i /dev/video0 \
-vf "drawtext=fontfile=/usr/share/fonts/dejavu/DejaVuSans-Bold.ttf: \
text='%{localtime\:%T}': [email protected]: x=7: y=700" -vcodec libx264 \
-preset veryfast -f mp4 -pix_fmt yuv420p -y output.mp4

ただし-vf、この部分を使用すると、次のエラーが発生します。

[NULL @ 0x55e4ef96b2a0] Unable to find a suitable output format for 'text=%{localtime:%T}:'
text=%{localtime:%T}:: Invalid argument

私も試しましたこれテストするためにコマンド(Qの3番目のコードブロック)を実行しましたが、やはり失敗しました。

[Parsed_drawtext_0 @ 0x55fb2862a940] Both text and text file provided. Please provide only one
[AVFilterGraph @ 0x55fb28629fc0] Error initializing filter 'drawtext' with args 'text=%{pts:hms:1553359336.166336638}'

ついに私は気づいたこれ私は質問をし、少し修正してみました(これは完全なコマンドを表示し、最後の2つの例の-vfオプションのみを調整しました)。

ffmpeg  -r 20 -s 640x480 -f video4linux2 -i /dev/video0 -vf "drawtext=fontsize=90:fontcolor=white: fontfile=/usr/share/fonts/TTF/DejaVuSans.ttf: text='%{localtime\:%X}'" -f avi -

これにより、次のエラーが発生します。

[NULL @ 0x55ae61d051a0] Unable to find a suitable output format for 'fontfile=/usr/share/fonts/TTF/DejaVuSans.ttf:'
fontfile=/usr/share/fonts/TTF/DejaVuSans.ttf:: Invalid argument

私が見つけた内容を編集ここ少し:

-vf drawtext="fontfile='/usr/share/fonts/cantarell/Cantarell-Light.otf':fontsize=14:fontcolor=white:shadowcolor=black:shadowx=2:shadowy=1:text='%H-%M-%S':x=8:y=8"

見せてください:

[Parsed_drawtext_0 @ 0x55e36db2aa40] Stray % near 'H-%M-%S'

このコメントを参照してください。ただテキスト(例:)がtext='test'正しく機能します。
1-4 \s 前の s は、エラーがあるか%変更がないことを示します。

私のffmpegバージョン:ffmpeg version 3.2.12-1~deb9u1Debianコンピュータで。
drawtextライブラリにコンパイルされましたffmpeg -filters

ベストアンサー1

わかりました、私は解決策を見つけました。FFmpegフィルタ文書

10.52.2 テキスト拡張

拡張が strftime に設定されている場合、フィルタは提供されたテキストから strftime() シーケンスを認識し、それに応じて拡張します。 strftime() のドキュメントを確認してください。この機能は廃止されました。

と言われていますが、This feature is deprecated.これは私にとってうまくいきます。これが私の最終結果です-vf

-vf drawtext="expansion=strftime:fontfile='/usr/share/fonts/cantarell/Cantarell-Light.otf':fontsize=14:fontcolor=white:shadowcolor=black:shadowx=2:shadowy=1:text='%Y-%m-%d\ %H\\\\:%M\\\\:%S':x=8:y=8"

とにかく脱出するには、これら4つが\\\\必要であることに注意してください:。このスペースを脱出するには1つで\十分です。結果は次のとおりです。

はい

おすすめ記事