2017-11-27 44 views
0

私は同時に私のUSBウェブカメラからビデオを(ストリーム経由で)(rtmpを介して)放送し、保存する必要があります。ウェブカメラは、ハードウェアh.264エンコーダを備えたLogitech c920です。avconv同時にストリームusbウェブカメラからディスクにビデオを保存

私はメディアを再エンコードしたくないので、私は-c:v copyオプションを使用しています。

全体のスクリプトは以下のようになります。

#! /bin/bash 

SOURCEV="/dev/video0" 
SOURCEA="hw:1" 

FILE_TO_SAVE="Archive/file_to_save.mp4" 
YOUTUBE_URL="rtmp://x.rtmp.youtube.com/live2" 
KEY="my-secret-key"   

avconv -f alsa -ac 2 -r 44100 -i $SOURCEA \ 
-s 1920x1080 -r 24 -c:v h264 -i "$SOURCEV" \ 
-ar "44100" -r:v 24 -c:a aac -c:v copy -s 1920x1080 -f mp4 "$FILE_TO_SAVE" \ 
-g $FPS*4 -ar "44100" -b:a "128k" -ac 2 -r 24 -c:a aac -c:v copy -s 1920x1080 -f flv "$YOUTUBE_URL/$KEY" 

このメソッド「作品」 - それは、それがコンテンツをストリーミングし、それをディスクに保存することができることを意味しますが、この方法の問題点は、ファイルのビデオはに依存しているということですストリーム。たとえば、インターネット接続が遅すぎる場合、保存されたファイルのFPSは低くなります。インターネット接続が中断された場合、ビデオファイルの「録画」は停止されます。

誰でもこの2つのストリームを独立させることができますか?

raspberrypi 3ではすべてのことが起こっているため、計算能力は非常に限られています。

答えて

1

nginx + nginx-rtmpをローカルにインストールしてからストリームを作成してみてください。サーバーがローカルファイルに保存することを可能にするオプションです。他のスクリプトを起動してYouTubeに再ストリームします。

+0

ありがとう、それはかなり安定しているようですが、YouTubeは私のキーフレームの間隔を10秒に警告します。それを短くする方法はありますか?私はこのトピックを読んだ:[リンク](https://github.com/raspberrypi/linux/issues/593) しかし、h264_i_frame_periodコントロールが私の中にありません。複雑なyhingはguvcviewを使ってiframeインターバルを設定できるということですが、この設定は現在のguvcviewインスタンスにのみ適用されるようです。 – BojowyZajaczek

+0

これはエンコーダ固有の設定です.nginxはビデオをトランスコードしません。 – bukkojot

+0

これはnginxによって制御されていないことを知っています。他の質問をすることを頼む/気にしないでください。誰かがエンコーダのキーフレーム間隔を100フレームに設定する方法を知っているのでしょうか? – BojowyZajaczek