
私はSSHを介したシンプルなライブビデオストリーミングと録画にとをffmpeg
使用しています。それでは、現在(サーバー)時間をストリームに含めたいと思います。形式は重要ではありません。理想的には。tee
mplayer
YYYY-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~deb9u1
Debianコンピュータで。
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つで\
十分です。結果は次のとおりです。
答え2
最初のオプションはtext='%{localtime\\:T}'
うまくいきます。 OPの引用が間違っています。彼は'text=...'
…次の例では、正しい場所に一重引用符を追加したことがわかります。