ねこライブ配信システム ffmpegでサムネイル生成(その7)







前号でffmpegの準備が終わりました。




ffmepgの持つ便利な機能を使っていきます。




まずはライブストリームの映像をlocalhost上で動作するcrtmpserverから取り出して、1秒ごとにjpgファイルのサムネイル画像を更新していくものです。




~/ffmpeg -y -i rtmp://localhost/flvplayback/camera1 live=1 -r 1 -s 192x108 -f image2 -update 1 /media/ramdisk/tmp/camera1.jpg





rtmpプロトコルでcrtmpserverから(ここではlocalhost)からcamera1のメタデータを持つストリームを取り出します。




そのストリームを解像度192x108の小さな画像に変換します。フォーマットは image2を指定します。




-r 1 のオプションで、1秒で1回の更新が行われます。




このサーバでは通常のディスクはSSDなのであまりディスクに多数回のデータを書き込みたくありません。




そのため、/media/ramdiskに文字通りramdiskをマウントしてここにデータを書いています。




Apache Webサーバにもこのフォルダを公開フォルダに割り当てておけば、Webページにサムネイルを表示させることができます。




なお、一般的にブラウザは固定のURLに示されるこのような画像はキャッシュしてしまい、1秒ごとの画像を更新してくれません。




Javascriptを使って、画像を指定するURLに画像をリロードさせて最新の画像をサーバから取り込むように仕向けます。



画像はキャッシュされてしまうので、1秒ごとにファイル指定の後ろに番号を付与して読み直しをさせています。
<html>
   <head>
   <script language="JavaScript">
        function refreshIt() {
               var d = new Date();
               var t = d.getTime();
               document.getElementById("Camera1").src="/tmp/catbase_108p.jpg"+"?"+t;
               setTimeout(refreshIt,1000);
            }; // every second
        if(document.images)window.onload=refreshIt;
   </script>
    </head>
    <body>
        <img src="st/fp/flowplayer/thumb/camera1.jpg" id="Camera1" >
    </body>
</html>




読んでみた上のHTMLファイルのブラウザでの表示。




アタチもやるときにはやるんです。





ねこライブ配信システム 全体(その1)
ねこライブ配信システム gstreamerでカメラから転送(その2)
ねこライブ配信システム v4l-utilsでカメラ制御(その3)
ねこライブ配信システム crtmpserver配信の主役(その4)
ねこライブ配信システム WEBで動画再生FlowPlayer(その5)
ねこライブ配信システム 便利ツールffmpegの準備(その6)
ねこライブ配信システム ffmpegでサムネイル生成(その7)

コメントを残す

メールアドレスが公開されることはありません。


9 + = 十三