「Execute Query」をUbuntu 20.04インストールしてSQL Serverへ接続する

Ubuntu にSQL Serverをインストールしてみました。
SQL Server 2019 ExpressをUbuntu Server 20.04へインストール

データの内容はsqlcmdで確認していましたが、さすがにGUIのツールがほしいところ。
Ubuntuで動作するデータベースへクエリーが実行できるツールを探してみると、Execute Queryが良さそうです。
http://executequery.org/


インストール



http://executequery.org/download
こちらから、executequery-installer-v4.4.3.jarをダウンロードしました。

インストールを実行


$ sudo java -jar executequery-installer-v4.4.3.jar



インストーラーが起動します。
特にオプションは変更せず実行しました。

a43_01.png

a43_02.png

a43_03.png

a43_04.png

a43_05.png

a43_06.png



以下のコマンド実行で起動します。


$ /usr/local/share/executequery/eq.sh



a43_07.png



アクティビティへの追加



アクティビティから起動できるようにしておきます。
設定ファイルを新規作成。


$ sudo gedit /usr/share/applications/eq.desktop



記載内容は以下のとおり。


[Desktop Entry]
Version=1.0
Type=Application
Name=Execute Query
Name[ja]=Execute Query
Comment=Execute Query
Comment[ja]=Execute Query
Keywords=Java;java;Develop;Database
Keywords[ja]=Java;java;Develop;Database
Exec=/usr/local/share/executequery/eq.sh
Icon=/usr/local/share/executequery/eq.png
Terminal=false
Categories=Java;java;Develop;Database
StartupNotify=true
StartupWMClass=Execute Query



これで検索できるようになりました。

a43_08.png




SQL Server JDBCドライバ取得



SQL Serverへ接続するためJDBCドライバをダウンロードします。
Microsoft SQL Server 用 JDBC Driver のダウンロード

ローカルで使用しているJavaのバージョンが14だったので、
「mssql-jdbc-9.2.1.jre11.jar」
を適当なパスに保存しておきました。

a43_09.png



接続設定



Database Connectionの設定から「New Driver」をクリック

a43_10.png

適当なDriver Nameを入力
Databaseは「MS SQL Server」を指定します。
「Add Library」をクリックし、保存しておいたmssql-jdbc-9.2.1.jre11.jarのパスを指定します。

a43_11.png

jarファイルのパスが追加されたら「Sava」をクリック。

a43_12.png

ユーザー名、パスワードなどSQL Serverへの接続情報を指定します。

a43_13.png

「Test」をクリックして接続できるかテスト。
問題なければ成功のメッセージが表示されます。

a43_14.png

テストで問題なkれば「Connect」をクリック。
ちゃんとSQL Serverに登録しているデータが表示できました。

a43_15.png

Query Editorタブで、SQLも実行できます。

a43_16.png


nginx-rtmp hlsで動画の配信を行う

nginx-rtmpモジュールを使用したhls配信を試してみます。
こちらを参考にしました。
https://github.com/arut/nginx-rtmp-module/wiki/Directives#hls


nginxの設定



設定ファイルを編集。


$ sudo vi /etc/nginx/nginx.conf



「hls on」:hls機能を有効化。
「hls_path」:.tsや.m3u8ファイルの出力先を指定します。
「hls_fragment」:.tsファイルを分割する秒数を指定。
「hls_playlist_length」:再生時間を指定します。


rtmp {
    server {
        listen 1935;
        chunk_size 4096;
        access_log /var/log/nginx/rtmp_access.log;

        application live {
            live on;
            record off;
            hls on;
            hls_path /tmp/hls;
            hls_fragment 15s;
            hls_playlist_length 30s;
        }
    }
}




続いてhls配信用の設定。

$ sudo vi /etc/nginx/sites-available/default



rootでhlsファイルの出力パスを指定。
locationの値が付与されるので、/tmpまでを指定します。


http {
    server {

        location /hls {
            types {
                application/vnd.apple.mpegurl m3u8;
            }
            root /tmp;
            add_header Cache-Control no-cache;
            add_header Access-Control-Allow-Origin *;
        }
    }
}



この設定で、http://[server]/hls/は、/tmp/hlsが公開されることになります。


設定ファイルを編集したらnginxを再起動しておきます。

$ sudo service nginx restart






配信テスト



rtmpで配信を開始します。
配信先はこちら。

rtmp://[server]/live/[ストリームキー]


※ストリームキーは任意

例としてストリームキーをlivekeyとして配信を開始しました。

rtmp://192.168.11.102/live/livekey



hls_pathで指定した/tmp/hlsにこんなファイルが生成されます。

livekey-1.ts
livekey-2.ts
livekey-3.ts
...
livekey.m3u8


[ストリームキー].m3u8が再生対象です。

vlcなどで、http://[server]/hls/[ストリームキー].m3u8を指定すると動画が再生されます。
今回の例だと

http://192.168.11.102/hls/livekey.m3u8


となります。

a40_01.png

無事動画が再生できました。

a40_02.png


【参考URL】
https://github.com/arut/nginx-rtmp-module/wiki/Directives#hls

ffmpeg mp4ファイルをrtmpでストリーム配信する

nginx-rtmpをテストするとき、OBSを使用しているのですが、もっとお手軽に試せないか調べてみました。
ffmpegでmp4ファイルを読み取り、rtmp配信するのが良さそうです。


コマンド



調べた結果、こんなコマンドになりました。

ffmpeg -re -stream_loop -1 -i [mp4ファイル] -vcodec libx264 -vprofile baseline -g 30 -acodec aac -strict -2 -f flv [rtmpサーバーの配信ポイント]



「-re」でソースのフレームレートをエミュレート
※これを指定しないと一気に処理されます。

「-stream_loop -1」でずっと繰り返し

「-i」で使用するmp4ファイルを指定

[-f flv」で出力先のrtmpサーバーを指定します。


コマンドの実例はこのようになります。

ffmpeg -re -stream_loop -1 -i sample.mp4 -vcodec libx264 -vprofile baseline -g 30 -acodec aac -strict -2 -f flv rtmp://192.168.11.102/live/livekey



https://pixabay.com/ja/videos/
こちらから動画ファイルをお借りしました。

コマンド実行後、vlcの[メディア]-[ネットワークストリームを開く]で「rtmp://192.168.11.102/live/livekey」を指定。
mp4ファイルの内容が配信されていることが確認できました。

a39_01.png



【参考URL】
Setting up HLS live streaming server using NGINX + nginx-rtmp-module on Ubuntu
ffmpegでrtmp配信を行う
最新ffmpegのオプションまとめ
FFMPEG で無限入力が可能に
https://pixabay.com/ja/videos/

nginx-rtmp on_publishで呼び出すurlにhttps接続を使用する

nginx-rtmpのon_publishで認証やrtmpの転送を行ってみました。
nginx-rtmp 動画配信にパスワード認証を設定する(on_publish)
nginx-rtmpで動画の転送先を動的に変更する(on_publish)

urlにhttpsで始まるものを指定したい。
例として、https://example.com/on_publishを指定してみます。


設定ファイルの変更



設定ファイルを編集します。

$ sudo vi /etc/nginx/nginx.conf



on_publishに「https://example.com/on_publish」を指定

rtmp {
    server {
        listen 1935;
        chunk_size 4096;
        access_log /var/log/rtmp_access.log;

        application live {
            live on;
            record off;
            on_publish https://example.com/on_publish;
            notify_method post;
        }
    }
}




設定ファイルのチェックを行うとエラーになります。


$ sudo nginx -t
nginx: [emerg] invalid port in url "https://example.com/on_publish" in /etc/nginx/nginx.conf:95
nginx: configuration file /etc/nginx/nginx.conf test failed



「http://example.com:443/on_publish」という指定にすれば動くかなと思ったのですが、まあそんなわけないですよね。


調べてみると、どうやらsslには対応していないようです。
on_publish url does not support https callback it ?




proxy_pass



参考サイトではnginx_luaを使用しての解決法が提示されていますが、もう少しお手軽に対応したい。
pxory_passでの動作を試してみます。


設定ファイルを編集

$ sudo vi /etc/nginx/sites-available/default



http://localhost/の通信をhttps://example.com/に転送するよう変更します。

server {
...(略)
    location / {
        proxy_pass https://example.com/;
    }
...(略)
}




nginx-rtmpの設定ファイルを編集

$ sudo vi /etc/nginx/nginx.conf



on_publishに「http://localhost/on_publish」を指定

rtmp {
    server {
        listen 1935;
        chunk_size 4096;
        access_log /var/log/rtmp_access.log;

        application live {
            live on;
            record off;
            on_publish http://localhost/on_publish;
            notify_method post;
        }
    }
}




設定を反映


$ sudo service nginx reload




これで動画配信時にhttps://example.com/on_publishを呼び出し、認証などが行えるようになりました。


【参考URL】
on_publish url does not support https callback it ?


nginx-rtmpで動画の転送先を動的に変更する(on_publish)

以前、pushで別のサーバーへ動画を転送してみました。
nginx-rtmpで動画の転送(push)

$appや$nameといった変数が利用できますが、
「/live/to_a_serve」は「rtmp://a.example.com/live/livekey」
「/live/to_b_serve」は「rtmp://b.example.com/live/livekey」
というような柔軟な転送先の指定は行なえません。

調べてみたところ、認証で使用したon_publish
nginx-rtmp 動画配信にパスワード認証を設定する(on_publish)

こちらを用いて転送先を指定できるようです。
https://stackoverflow.com/questions/43568168/how-to-change-nginx-rtmp-stream-name-after-call-on-publish
レスポンスコード302を指定して転送先を応答すればよさそう。



nginx-rtmpの設定



nginxの設定を変更します。


$ sudo vi /etc/nginx/nginx.conf



on_publishでpush.phpを呼び出すよう構成しました。


  1. rtmp {
  2.     server {
  3.         listen 1935;
  4.         chunk_size 4096;
  5.         access_log /var/log/rtmp_access.log;
  6.         application live {
  7.             live on;
  8.             record off;
  9.             on_publish http://localhost/push.php;
  10.             notify_method post;
  11.         }
  12.     }
  13. }



設定を反映します。


$ sudo service nginx reload




呼び出されるpush.phpでは転送先を応答します。

・push.php


  1. <?php
  2. //file_put_contents('/tmp/on_publish.txt', var_export($_POST, true), FILE_APPEND);
  3. header('Location: rtmp://192.168.11.103:1935/live/another_key');



接続時、どんなデータがpostされるかダンプしてみました。
on_publishを設定したサーバーに対し動画の配信を開始すると、こんなデータがpostされています。


  1. array (
  2. 'app' => 'live',
  3. 'flashver' => 'FMLE/3.0 (compatible; FMSc/1.0)',
  4. 'swfurl' => 'rtmp://192.168.11.102/live',
  5. 'tcurl' => 'rtmp://192.168.11.102/live',
  6. 'pageurl' => '',
  7. 'addr' => '192.168.11.3',
  8. 'clientid' => '1',
  9. 'call' => 'publish',
  10. 'name' => 'livekey',
  11. 'type' => 'live',
  12. )



転送先のrtmp://192.168.11.103:1935/live/another_keyを確認すると、
ちゃんと動画の閲覧が行えました。

a38_01.png


【参考URL】
https://stackoverflow.com/questions/43568168/how-to-change-nginx-rtmp-stream-name-after-call-on-publish
https://github.com/arut/nginx-rtmp-module/blob/master/ngx_rtmp_notify_module.c#L1005

プロフィール

Author:symfo
blog形式だと探しにくいので、まとめサイト作成中です。
Symfoware まとめ

PR




検索フォーム

月別アーカイブ