この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
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 最後に
非常に簡単に利用可能です。場面によっては便利に使えるかも知れません。