【小ネタ】Kinesis Video Streamsへ送信する動画にclockoverlayで時間を挿入する
1 はじめに
CX事業本部の平内(SIN)です。
Kinesis Video Streamsで動画を送信する場合、時刻の情報を併せて残したい場面があるかも知れません。 今回は、clockoverlayエレメントを使用して、そのようなニーズに答える要領を確認してみました。
2 環境
確認に使用した環境は、Model 4B と Logicool HD Pro Webcam C920です。
OSは、昨年9月の最新版(Raspbian GNU/Linux 10 (buster) 2019-09-26-raspbian-buster-full.img です。
$ cat /proc/cpuinfo | grep Revision Revision : c03112 $ lsb_release -a No LSB modules are available. Distributor ID: Raspbian Description: Raspbian GNU/Linux 10 (buster) Release: 10 Codename: buster $ uname -a Linux raspberrypi 4.19.75-v7l+ #1270 SMP Tue Sep 24 18:51:41 BST 2019 armv7l GNU/Linux
3 clockoverlay
clockoverlayは、GStreamerのエレメントであり、パラメータで指定した形式で時刻を動画に埋め込む事ができます。
下記は、clockoverlayのドキュメンの抜粋ですが、殆ど全ての形式の入力及び出力が可能であることが分かります。従って、H.264でエンコードする前の段階であれば、気楽に挿入しても問題なさそうです。
https://gstreamer.freedesktop.org/documentation/pango/clockoverlay.html?gi-language=c
4 とりあえず表示
下記のように、omxh264encでエンコードする前に、clockoverlayを入れてみました。
$ gst-launch-1.0 -v v4l2src ! videoconvert ! video/x-raw,width=640,height=480,framerate=30/1 ! clockoverlay font-desc="Sans bold 60px" ! omxh264enc periodicty-idr=45 inline-header=FALSE ! h264parse ! video/x-h264,stream-format=avc,alignment=au ! kvssink stream-name=testStream
送信されている動画を確認している様子です。
作業は、環境変数で認証情報とリージョンを設定した状態で行っています。
export AWS_DEFAULT_REGION=ap-northeast-1 export AWS_ACCESS_KEY_ID=xxxxxxxxxxxxxx export AWS_SECRET_ACCESS_KEY=xxxxxxxxxxxxxxxxx
また、デバイスはdevice=/dev/video0(v4l2srcでのデフォルト)で認識されてます。
5 パラメータ
clockoverlayで利用可能なパラメータは、gst-inspect-1.0で確認できます。
$ gst-inspect-1.0 clockoverlay (略) Element Properties: (略) text : Text to be display. flags: readable, writable, controllable String. Default: "" (略) halignment : Horizontal alignment of the text flags: readable, writable Enum "GstBaseTextOverlayHAlign" Default: 0, "left" (0): left - left (1): center - center (2): right - right (4): Absolute position clamped to canvas - position (5): Absolute position - absolute valignment : Vertical alignment of the text flags: readable, writable Enum "GstBaseTextOverlayVAlign" Default: 2, "top" (0): baseline - baseline (1): bottom - bottom (2): top - top (3): Absolute position clamped to canvas - position (4): center - center (5): Absolute position - absolute
以下に、主なものをまとめてみました。
パラメータ | 機能 |
---|---|
text | 指定したテキストを表示 |
shaded-background | テキスト領域の下に背景をシェーディングを入れるかどうか |
shading-value | シェーディング値 1-255 Default:80 |
halignment | テキストの水平方向の配置 left,center,right,Absolute position |
valignment | テキストの垂直方向の配置 baseline,bottom,top,center,Absolute position |
xpad | 水平方向のパディング |
ypad | 垂直方向のパディング |
deltax | X位置のシフト(ピクセル単位) |
deltax | Y位置のシフト(ピクセル単位) |
xpos | 水平位置 |
ypos | 垂直位置 |
wrap-mode | ラップのモード none,word,char,wordchar |
font-desc | フォント指定 |
silent | テキスト表示の有無 |
line-alignment | テキスト行の配置 left,center,right |
auto-resize | フォントサイズの自動調整 |
scale-mode | ビデオのスケーリングで歪みが生じないようにするためのモード設定 |
color | 色指定 |
text-x | テキストのX位置 |
text-y | テキストのY位置 |
text-width | テキストの幅 |
text-height | テキストの高さ |
time-format | 時間表示形式 "%H:%M:%S" |
6 最後に
非常に簡単に利用可能です。場面によっては便利に使えるかも知れません。