こんばんは、次男の習いごとのスケジュールが調整できず、久しぶりに平日に休んで教室に連れて行った@kjunichiです。
背景
2万円台のルンバを手に入れて、子供たちとWebカメラをつけた遊んでいる。
この際にカメラの画像をMJPEGで送信するmjpg-streamerなるソフトの存在を知った。
思っていたよりも遅延がなく以前GLSLをサーバ側でレンダリングしてKindleにHSLで配信した際は、かなりのディレイがあった記憶があったのでこれに感心した。
このmjpg-streamerを調べたら、HTTPでContent-Typeに「multipart/x-mixed-replace」なる指定をしており、この指定をすることで、 ブラウザとソケット通信がつながった状態になり、次々と画像なり、データの塊を送れる模様だった。
Pythonが文部省では使われつつあるようだが、そんな時代遅れな言語だけを我が家の子供たちに学ばせることはできないので、天下のMIT様で開発されているJulia言語を子供たちに学ばせようと思っている。
そこで、JuliaでこのようなWebカメラの画像の配信を行えないかと考え実験した。
HTTP.jlでやってみた
試したコード
Socketでベタに試した
実は、HTTP.jlでは当初うまくいかず、libuvを使っていそうなことが分かる難しいエラーが出力されていた。 そこで、以下のSocketで一から作成することも試した。
おわりに
数年前にHTTP2を熱心に勉強していたが、ブランクができてしまい、HTTP1.1も怪しくなっていること自覚できた。 HTTP 200 OKを返さなくても、少なくともFirefoxはコンテンツを表示してくれることが分かるなど学びがあった。
参考資料
関連記事
- Raspberry PiでWebRTC試す - non vorrei lavorare
- mrubyでHTTP/1.1のKeep-Aliveで複数回リクエストを出してみた
- mruby-juliaでPythonもmrubyから呼び出せるようになった
- Julia言語からmruby-webcamを使ってWebカメラの画像を取得した