テレビでの4分割表示方法

LiveCapture3の動画配信にはJavaScriptを使用したビューワを使用します。
このビューワはHTML5で記述しており、これを拡張することで、リビングのテレビで4分割表示の動画配信を見ることができます。

TVのブラウザでもHTML5対応のものは増えてきていますが、やはり処理能力が低いので、動画というわけにはいかないようです。(表示はできますが。。。)
ただし、TVにつないだゲーム機のブラウザなら、ちゃんと動画で表示できました。
ここでは、TVの大画面を生かして、4画面分割表示のやり方を説明します。


4画面表示の方法

LiveCapture3から直接配信されるJavaScriptページは、対象カメラ1つだけを表示するものです。
4画面表示を行う場合は、LiveCapture3から直接配信されるJavaScriptを使用せず、別途4画面表示のJavaScriptを記述したHTMLを用意する必要があります。

4画面表示を行うJavaScriptを記述した下記のようなHTMLを作成します。

<title>4分割画面</title>
 
<style>
 
body{ 
    background-color: #808080;
    margin-left: 0px;
    margin-top: 0px;
    margin-right: 0px;
    margin-bottom: 0px;
    overflow-x: hidden;
    overflow-y: hidden;
} 
 
</style>
 
<script type="text/javascript">
 
    function init() {
        expand();
        draw();
    }
     
    function draw() {
        var canvas = document.getElementById('c1');
        var ctx = canvas.getContext('2d');
        var canW = canvas.width;
        var canH = canvas.height;
         
        var img0 = new Image();
         
        // LiveCapture3から配信されるSnapJpegのURLを記述(1つ目)
        img0.src = "http://192.168.1.3:50000/SnapJpeg?t=" +  new Date().getTime();
        img0.onload = function() {
            drawImage(ctx, img0, 0, canW, canH);
        }
 
        var img1 = new Image();
 
        // LiveCapture3から配信されるSnapJpegのURLを記述(2つ目)
        img1.src = "http://192.168.1.3:50001/SnapJpeg?t=" +  new Date().getTime();
        img1.onload = function() {
            drawImage(ctx, img1, 1, canW, canH);
        }
 
        var img2 = new Image();
 
        // LiveCapture3から配信されるSnapJpegのURLを記述(3つ目)
        img2.src = "http://192.168.1.3:50002/SnapJpeg?t=" +  new Date().getTime();
        img2.onload = function() {
            drawImage(ctx, img2, 2, canW, canH);
        }
 
        var img3 = new Image();
 
        // LiveCapture3から配信されるSnapJpegのURLを記述(4つ目)
        img3.src = "http://192.168.1.3:50003/SnapJpeg?t=" +  new Date().getTime();
        img3.onload = function() {
            drawImage(ctx, img3, 3, canW, canH);
        }
    }
     
    function drawImage(ctx, img, pos, canW, canH) {
         
        var imgW = img.width;
        var imgH = img.height;
             
        var dstW = canW / 2;
        var dstH = imgH * canW / 2 / imgW;
        if (dstH > canH / 2) {
            dstH = canH / 2;
            dstW = imgW * canH / 2 / imgH;
        }
         
        dstW = dstW - 5;
        dstH = dstH - 5;
         
        switch(pos){
        case 0:
            var dstX = (canW / 2 - dstW) / 2;
            var dstY = (canH / 2 - dstH) / 2;
            break;
        case 1:
            var dstX = (canW / 2 - dstW) / 2 + canW /2;
            var dstY = (canH / 2 - dstH) / 2;
            break;
        case 2:
            var dstX = (canW / 2 - dstW) / 2;
            var dstY = (canH / 2 - dstH) / 2 + canH /2;
            break;
        case 3:
            var dstX = (canW / 2 - dstW) / 2 + canW /2;
            var dstY = (canH / 2 - dstH) / 2 + canH /2;
            break;
        }
             
        ctx.drawImage(img, dstX, dstY, dstW, dstH);
    }
     
    function expand(){
        var canvas = document.getElementById('c1');
        canvas.width = window.innerWidth;
        canvas.height = window.innerHeight;
    }
     
</script>
 
 
 
 
 
<canvas id="c1" style="background-color:gray;"></canvas>
 
 
<script type="text/javascript">
    window.onload = function(){init();}
    window.onresize = function(){expand();}
    setInterval("draw()", 100);
</script>

上記JavaScriptを記述したHTMLをここに置いておきます。

このHTML中の配信URLにhttp://localhostと記述して、配信しているLiveCapture3と同じPC上でローカル実行すれば、そのまま4画面表示プレビュー画面になります。

TVに接続したゲーム機等で表示する場合には、別途HTTPサーバが必要になります。

IISやApacheなどをインストールしたPCを別途用意するか、LiveCapture3を実行しているPCに、これらのHTTPサーバをインストールし、前述の4分割用HTMLを公開ディレクトリに配置し、そのHTMLをTVやゲーム機で開くことで4分割の動画配信をリビングで見ることができるようになります。

手元のPlayStation3では、Firmware Updateをすることで、WebブラウザがHTML5に対応できるようになりました。
また、2011年製のSony BRAVIAのWebブラウザでも表示することはできましたが、こちらは処理能力が足りず、コマ送り画像でした。
他のメーカのTVやゲーム機でもHTML5対応のものが増えていますので、試してみてください。
やはり、大画面で見ると違いますね!
配信するHTMLを加工すれば、家の間取り図にカメラ画像を重ねたHTMLを作ることもできますので、色々と試してみると面白そうです。

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です