Raspberry Pi & nginx-rtmp-module & FFmpeg で 音声ストリーミング
Home > Raspberry Pi >
FFmpeg で 音声のみの配信方法についてご質問頂いたので検証してみました。
動画ストリーミングについては下記の記事で環境を構築しています。
当環境で上記の配信方法が可能となっている上での検証となります。
まず、FFmpegでの録音は下記コマンドで可能でした。
1 |
ffmpeg -f alsa -i default output.m4a |
配信は、カメラのマイクを使い、音声だけを下記のコマンドで配信が可能でした。
1 2 3 4 5 |
ffmpeg \ -f alsa -ac 1 -thread_queue_size 8192 -i hw:1 \ -i /dev/video0 \ -c:a aac -b:a 128k -ar 44100 \ -f flv rtmp://localhost/live/stream; |
形式は wav とかだと ダメなようで、コンテナは flv でないとダメそうでした。
(詳しい所はわかっていません、動画フォーマット、難しい・・・)
配信ページ
配信ページが、以前は video.js を使用していましたが、久々に確認してみると chrome で下記のようなエラーが出ていました。
1 |
VIDEOJS: ERROR: (CODE:4 MEDIA_ERR_SRC_NOT_SUPPORTED) No compatible source was found for this media. d {code: 4, message: "No compatible source was found for this media."} |
video.js のバージョンを最新にしてみたりと試してみたのですが解消出来なかったので、video.js を辞めて、hls.js に変更しました。
こちらの記事を参考にさせて頂きました。
.hlsをブラウザ関係なく一発再生する “hls.js” – バッカムブログ
html 下記のように記述すると、アクセスしたら音声が再生されました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
<!DOCTYPE html> <html lang="en" class=""> <head> </head> <body> <script src="https://cdn.jsdelivr.net/hls.js/latest/hls.min.js"></script> <video id="video"></video> <script> if(Hls.isSupported()) { var video = document.getElementById('video'); var hls = new Hls(); hls.loadSource('/live/hls/stream.m3u8'); hls.attachMedia(video); hls.on(Hls.Events.MANIFEST_PARSED,function() { video.play(); }); } </script> </body> </html> |