0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

RaspberryPiでhlsストリーミングする(ための準備)

Posted at

結論

とりあえず最終版のシェルスクリプト。
※ご存知かとは思いますが、念のため。パスの通った場所へ。
私は~/usr/binにぶち込んであります。

hls_streaming
#! /bin/bash
CACHE_DIR=/tmp/hls_cache

if [ ! -e $CACHE_DIR ];
then
    mkdir $CACHE_DIR
fi

ffmpeg -f alsa -thread_queue_size 16384 -i hw:1,0 \
    -f v4l2 -thread_queue_size 16384 -s 640x480 -r 30 -vsync 2 -i /dev/video0 \
    -c:v h264_omx -b:v 1000k -bufsize 1000k -g 60 \
    -c:a aac \
    -flags +cgop+global_header \
    -f hls \
    -hls_wrap 10 \
    -hls_time 2 \
    -hls_list_size 3 \
    -hls_allow_cache 0 \
    -hls_segment_filename $CACHE_DIR/stream_%06d.ts \
    -hls_base_url stream/ \
    $CACHE_DIR/playlist.m3u8

動機

 会社から自宅が遠いこともあり昨今のリモートワークブーム(?)の影響で極力自宅で仕事がしたいという思いが日に日に増してきている今日この頃です。ただ、担当が下回りFWの開発で実機を触らないと開発が進まないということもあり、リモートでタッチパネルを操作できるロボット(中華プロッタ)を購入して日曜プログラミングで絶賛構築中です。
 しかしロボットで操作したはいいけど実機がロボットによってどんな状態になってるか分からん!と思うと不安で寝れなくなることは:fire:を見るより明らかです。

はい、ということで前置きが長くなりましたが、要はストリーミングを行うということです:fearful:

構成

  • RaspberryPi3 or 4
  • カメラ:ロジクールC920
shell
$ v4l2-ctl --list-devices
bcm2835-codec-decode (platform:bcm2835-codec):
        /dev/video10
        /dev/video11
        /dev/video12

HD Pro Webcam C920 (usb-0000:01:00.0-1.2):
        /dev/video0
        /dev/video1
$
$ arecord -l
**** ハードウェアデバイス CAPTURE のリスト ****
カード 1: C920 [HD Pro Webcam C920], デバイス 0: USB Audio [USB Audio]
  サブデバイス: 1/1
  サブデバイス #0: subdevice #0

参考記事

ほぼ丸パクリです。。。@fujino-fpuさんありがとうございます:pray:
参考記事へのリンク

少し改造させていただきました

tsファイルの保存先の変更

よほどRAMにキャッシュされると思うので大丈夫かとは思いますが、保存先をRAMディスクへ。
将来的にはWebサーバーのキャッシュディレクトリに移動させます(もちろんその場合もRAMディスクへ)が、とりあえず/tmpへ

オーディオ系のエラー対策

[alsa @ 0x1b8d3f0] cannot set channel count to 1 (Invalid argument)

と怒られた。ffmpegのドキュメントにはオーディオのチャンネルを指定せいと書いてあり、問題なさそうですが…
よーわからんけどオプションごと無かった事としてこそっと削除したら動作したので良しとします。

生成されるtsファイルに制限を設ける

無尽蔵にtsファイルが生成されるので「-hls_wrap」オプションを付与。
ここでは10を指定して10ファイルごとにリングされるようにしています。
ご自身の環境に合わせて調整してください。

0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?