httpを介してLinuxフレームバッファをビデオにストリーミングする方法

httpを介してLinuxフレームバッファをビデオにストリーミングする方法

私はフレームバッファUI(X11なし)と実行中のWebサーバーを備えた組み込みLinuxシステム(yoctoベース)を持っています。

次に、画面の内容をWebページに「ミラーリング」する方法を尋ねます。カメラからのストリームの代わりに/dev/fb0

当然のようですが、私のウェブ検索で一致するものが見つかりませんでした。進む方法を知っていますか?

ベストアンサー1

Linuxフレームバッファビデオはffmpegを介して提供されます。fbdev機器。

> ffprobe -f fbdev -i '/dev/fb0'                                                                           
[fbdev @ 0x2308100] w:1920 h:1080 bpp:32 pixfmt:bgra fps:25/1 bit_rate:1658880000
[fbdev @ 0x2308100] Stream #0: not enough frames to estimate rate; consider increasing probesize
Input #0, fbdev, from '/dev/fb0':
  Duration: N/A, start: 1673953008.518392, bitrate: 1658880 kb/s
  Stream #0:0: Video: rawvideo (BGRA / 0x41524742), bgra, 1920x1080, 1658880 kb/s, 25 fps, 1000k tbr, 1000k tbn

これにより、テストに役立つ可能性があるビデオソースに関するいくつかのメタデータが表示されます。一般的なビデオトランスコーディングffprobeに置き換えます。ffmpeg

> ffmpeg -f fbdev -i '/dev/fb0' -f matroska -crf 0 -filter:v 'scale=-1:720' - | mpv

これにより、エンコードされたビデオストリームがに送信され、stdout数秒間バッファリングされた後に再生されます。mpvSSHを介してヘッドレスサーバーにアクセスできる場合は、このパイプ技術を再利用して次のことを実行できます。

ssh server ffmpeg -f fbdev -i '/dev/fb0' -f matroska -crf 0 -filter:v 'scale=-1:720' - | mpv

これは、GUIとビデオプレーヤーがインストールされており(mpv上記の例では)、SSHアクセス権を持つシステムで実行する必要がありますserver。または、ビデオストリームをHTTP経由で公開することもできます。見ているこれたとえば、次のように答えることができます。

ffmpeg -f fbdev -i '/dev/fb0' -f mp4 -movflags frag_keyframe+empty_moov -listen 1 http://localhost:8080/

これにより、ffmpegはお気に入りのビデオプレーヤーを指すことができる使い捨てWebサーバーになりますvlc http://localhost:8080/

適切なストリーミングWebサーバーを作成することはより大きなトピックであり、多くの訪問者を獲得し、さまざまなデバイスをサポートする予定であればうまくいくのは難しいかもしれません。テーマはそうです回答済み 多くの種類 移流しかし、他のビデオソースの場合。

これがあなたに正しい方向に進む一歩になることを願っています。

注:テスト中にフレームバッファの内容を混乱させたい場合は発行してくださいcat /dev/urandom >/dev/fb0cat /dev/zero >/dev/fb0

おすすめ記事