#!/bin/sh
ffmpeg \
-framerate 30 -loop 1 -i ./Desktop/back.jpg \
-f alsa -ac 1 -thread_queue_size 8192 -i hw:1 \
-c:a aac -b:a 128k -ar 44100 \
-f flv \
rtmp://a.rtmp.youtube.com/live2\
一応これで画像の表示はできたっぽい
けど音が出ないや・・・
#!/bin/sh
ffmpeg \
-framerate 30 -loop 1 -i ./Desktop/back.jpg \
-f alsa -ac 1 -thread_queue_size 8192 -i hw:1 \
-c:a aac -b:a 128k -ar 44100 \
-f flv \
rtmp://a.rtmp.youtube.com/live2\
一応これで画像の表示はできたっぽい
けど音が出ないや・・・
音は出てるけど音量がかなり小さいみたい
ALSA buffer xrun.が出て配信うまくいかないな
ありがとう
参考にするわ
今の構成はこんな感じ
なんか順番とかあるんだろうね・・・
#!/bin/sh
ffmpeg \
-framerate 30 -loop 1 -i ./Desktop/back.jpg \
-f ALSA -thread_queue_size 22220 -i plughw:1,0 -ac 2 -vol 100 \
-c:a aac -b:a 320k -ar 8000 \
-f flv \
rtmp://a.rtmp.youtube.com/live2/
-volを10000に設定してたら音割れエグくて何がなんだかわからなかった
ALSA buffer xrun対策についてちょっと情報見つけたんだけどうまくいかない
引用
ALSA buffer xrunの発生を抑えることが出来ました!
何も指定をしないと、録音用デバイスからは最高のサンプリングレートでのデータがffmpegに送られてくるようです。
そのため、ffmpegのアプリケーションバッファがすぐにいっぱいになってしまい、オーバーランが多発していたようです。
-arオプションでサンプリングレートを変更できるのですが、これは-iオプションの手前に書くか、後に書くかで結果が変わってくるみたいです。
-iの前に書くと、ffmpegに対して入力側のサンプリングレートを設定します。
-iの後に書くと、出力側のサンプリングレートになります。
つまり・・・
raspivid -t 0 -w 640 -h 480 -o - | ffmpeg -y -f alsa -ac 1 -ar 8000 -i hw:1,0 -i - -vcodec copy -r:v 24 -s 640x480 -b:v 300k -ar 8000 -ab 64k -f flv out.flv
と書けば、入力・出力ともに8000Hzになります。
これで、(電話回線程度の音質にはなるものの)エラーなく録画をすることが出来ました^ ^
https://technologicaladvance.blog.fc2.com/blog-entry-99.html
-thread_queue_size を上げることで、バッファを多めにとれるようにしたから大丈夫だと思うけど
いかんせん音が小さい