DVB Java JNI

DVB デバイスのストリームを Java の InputStream で直接取得する件

投稿日:

外部のプログラムを介して DVB デバイスのストリームを標準出力に出してそれを Java の InputStream で取得する、というのはできるのですが、外部のプログラムを介すことなく DVB デバイスのストリームを直接 Java の InputStream で取得できないものかと考えていたところ、既に GitHub で公開されていました。これはすごい。

ということで実際に動きを確かめてみました。(週末の多くの時間を費やしてしまった...)

DVB Input Stream for Java
https://github.com/vbence/dvb-is

といっても直接 DVB デバイスと話すところは C で書かれていて、それを JNI で使用することになります。

で、1 つの jar ファイルとして動作させてみたかったので Spring Boot と Ubuntu 16.10 と DVB デバイスを合わせて試してみました。

メモ用に GitHub にプロジェクトを push しました。dvb-is が GPLv3 なのでプロジェクトも GPLv3 です。
https://github.com/hirooka/haryuka

src/main/jni の libnativedvbio.sh を実行すると、src/main/resources/libs に libNativeDVBIO.so が生成されます。

ビルドした Runnable jar の引数には、アダプタ名 (/dvb/dev/adapter1 等)、周波数 (Hz)、キャプチャ時間 (s)、出力先パス、の 4 つを与えます。キャプチャ時間を 0 にすると無限キャプチャ、出力先パスを - にすると標準出力に出力します。

別に開発しているアプリが DVB デバイスと直接話せるような布石を打つことができましたが、ライセンスを GPLv3 に変更しないと。

あと実際にソースコードは確認していないですが、下記のようなプロジェクトもあるようです。後者はウェブカメラ向けですかね。

DVB Central in Java
https://sourceforge.net/projects/dvbcentral/

v4l4j
https://code.google.com/archive/p/v4l4j/

-DVB, Java, JNI

Copyright© hirooka.pro , 2013-2018 All Rights Reserved.