私はffmpegを使用してウェブカメラのビデオをYouTubeにストリーミングしようとしてきましたが、これまで管理してきたのは、YouTubeからの「開始」という緑色の「確認」だけでした。ただし、すぐに灰色になり、実際のストリームがオフラインから実際に変更されることはありません。
私はこのコマンドを使用してストリーミングを試みています:
_ffmpeg -rtbufsize 1500M -r 25 -f dshow -s 1280x720 -i video="USB2.0 HD UVC WebCam" -vcodec h264 -b:a 600k -acodec libfaac -ab 128k -f flv "rtmp://a.rtmp.youtube.com/live2/user.useruser.codecodecode"
_
私はffmpegを使ってYouTubeにビデオをストリーミングすることができました。ffmpegは機能しないカメラだけです。私が間違っているかもしれない何か考えはありますか?
これは私が今使っているコマンドですffmpeg -r 18 -f dshow -s 1280x720 -i video="USB2.0 HD UVC WebCam":audio="Microphone (Realtek High Definition Audio)" -vcodec h264 -b:v 1800k -acodec aac -strict experimental -f flv "rtmp://a.rtmp.youtube.com/live2/useruser.useruser.codecodecodecode"
「不明なエンコーダ」エラーが発生したため、libfaacまたはlibfdk_aacの代わりに_-acodec aac
_を使用しています。
ストリーミングは数秒ですが、次のエラーが発生します: WriteN、RTMP送信エラー1005
これらが何を意味するのか、またはそれらを修正する方法はありますか?
コマンドにはいくつか問題があります。
オーディオストリームがありません。 dshow
を使用する場合は、説明されているようにaudio
も指定する必要があります ここ 。
ffmpeg -f dshow -i video="Integrated Camera":audio="Microphone name here"
オーディオをキャプチャする予定がない場合は、サイレントオーディオトラックを配置します。
-b:a
は-ab
と同じです-オーディオビットレート。ビデオのビットレートを指定するには、-b:v
を使用する必要があります。 600k
は、1280x720px @ 25fps H.264
ビデオストリームには低すぎます。
YouTube 推奨 :
720p
ビデオビットレート範囲:1,500〜4,000 Kbps
少なくとも1800k
を入れる必要があります。
使用しているオーディオに関してはlibfaac
。 AAC
をエンコードするときに最良の結果を得るには、 推奨libfdk_aac
を使用します。
FFmpegを使用してIPカメラをYoutubeにライブストリーミングします。 -Ubuntuユーザーの場合(私がしたこと)
最新のffmpegをubuntu12.04または14.04にインストールします https://Gist.github.com/xdamman/e4f713c8cd1a389a5917 そして
UbuntuでFFmpegをコンパイルする https://Gist.github.com/faleev/3435377
Youtubeを開きます。ログインする。 [マイチャンネル]> [ビデオマネージャー]> [ライブストリーミング]をクリックします。 「ストリーム名/キー」に注意してください。
静的ビデオファイルの場合:
ffmpeg -re -i "(input-file)" -acodec libmp3lame -ar 44100 -b:a 128k -pix_fmt yuv420p -profile:v baseline -s 426x240 -bufsize 2048k -vb 400k -maxrate 800k -deinterlace -vcodec libx264 -preset medium -g 30 -r 30 -f flv "rtmp://a.rtmp.youtube.com/live2/(Stream name/key)"
Rtspビデオのみの出力でIPカメラからビデオをストリーミングする場合:
ffmpeg -re -i input-file -rtsp_transport tcp -i "rtsp://password@(streamaddress with local IP)" -acodec libmp3lame -ar 44100 -b:a 128k -pix_fmt yuv420p -profile:v baseline -s 426x240 -bufsize 2048k -vb 400k -maxrate 800k -deinterlace -vcodec libx264 -preset medium -g 30 -r 30 -f flv "rtmp://a.rtmp.youtube.com/live2/(Stream name/key)"
フルHDx264ビデオソースを備えたIPアドレスのウェブカメラがオーディオなしであり、ダイレクトカメラ画面をYouTubeにストリーミングしたい場合は、ビデオを常に低解像度にトランスコード/再エンコードする必要はありません。 YouTubeは、一部のカメラの直接ビデオストリームを受け入れることができます。唯一のことは、空の/サイレントオーディオトラックを追加する必要があるということです。ネットワークに十分な帯域幅がある場合は、機能するはずです。
Ubuntu16.04のPine64 +でこのCLIコマンドを使用していますが、機能しています。
ffmpeg -re -rtsp_transport tcp -i "rtsp://<user>:<pass>@<camera_ip>:<port>" /
-f lavfi -i anullsrc=channel_layout=stereo:sample_rate=44100 /
-c:a libmp3lame -ab 128k -ar 44100 /
-c:v copy -threads 2 -bufsize 512k /
-f flv "rtmp://a.rtmp.youtube.com/live2/<your-live-stream-key>"
(Libavfilter入力仮想デバイスに関する情報は次のとおりです: https://www.ffmpeg.org/ffmpeg-devices.html#lavfi )
これにより、CPU使用率を最小限に抑えて、サイレントオーディオを備えたダイレクトカメラ画面をYouTubeに転送できます。
いくつかの制限:
どちらの場合も、ffpmegはネットワークまたはストリームの問題を検出できませんでした。したがって、終わりのないストリームをストリーミングしたい場合、正しく自動化するのは困難です。
一時的に私は小さなcronジョブを使用しており、1時間ごとにffmpegを再起動します。