2016-06-28 24 views
3

Facebookのライブにrtmpストリームを送信するためのgstreamerスクリプトを試してきました。私はたくさんのことを試みました。ストリームは自分のRTMPサーバーに送信すると動作しますが、Facebookはそれを受け入れません。Gstreamer for Facebook Live

私はUbuntu 15.10で作業しています。私はOBSにも奇妙な動作があることに気づいた。 MBP上では動作するようですが、私の箱には表示されません。

以下のストリームは、Facebook Liveに記載されているビデオ/オーディオ仕様に適合しています。私はそれらをここにリストアップしました:

ビデオフォーマット:

  • 私たちは、毎秒30のフレームで、最大720pの(720×1280)の解像度でビデオを受け入れます。 (または2秒ごとに1つのキーフレーム)。 CHECK
  • ストリーム全体で少なくとも2秒に1回、Iフレーム(キーフレーム)を送信する必要があります。 CHECK
  • 推奨最大ビットレートは2500Kbpsです。

    • 90:

    • ライブAPIはH264エンコードされたビデオとAACエンコードされたオーディオのみ

    動画の長さをチェック受け入れCHECKそうでない場合は、ストリームが失敗する255文字未満でなければなりません

  • タイトルをチェックライブストリームの最大長(分)。 CHECK(指定されていないので、正常であるはずです)

  • プレビューストリーム(ライブダイアログまたはパブリッシャーツールを使用)の最大長は60分です。 60分後に新しいストリームキーが に生成されている必要があります。 CHECK(指定されたので、私はそれは問題ないはずと仮定しない)

詳細設定:

  • ピクセルアスペクト比:スクエアCHECK、gstreamerの
  • フレームタイプのデフォルトの動作:プログレッシブスキャン未確認のプログレッシブスキャンが私にとって標準のようです
  • オーディオサンプルレート:44.1 KHz CHECK
  • オーディオビットレート:128 KbpsステレオCHEC K
  • ビットレートエンコーディング:CBRのチェック、gstreamerののデフォルトの動作

GStreamerのコマンド:

gst-launch-1.0 v4l2src ! "video/x-raw,width=1280,height=720,framerate=30/1" ! x264enc bitrate=2500 key-int-max=10 ! video/x-h264,profile=high ! h264parse ! queue ! flvmux name=mux alsasrc device=hw:1 ! audioresample ! audio/x-raw,rate=44100 ! queue ! voaacenc bitrate=128000 ! queue ! mux. mux. ! rtmpsink location=\"rtmp://rtmp-api.facebook.com:80/rtmp/xxxxxxxxxxxxxxx?ds=1\&a=xxxxxxxxxxxxxxx\" 

誰もがFacebookが生きるために働くのGStreamerを取得しましたか?

+0

あなたは何か変わった動作を観察していますか?あなたは問題を参照して公共のライブビデオへのリンクを持っていますか? – Brad

+0

また、キーフレーム間隔を再確認してください。あなたのパラメータ名は異なるかもしれませんが、https://sites.google.com/site/linuxencoding/x264-ffmpeg-mappingに従って、それは 'keyint'です。そして、10フレームは小さすぎます...あなたは2秒間60でそれを設定したいと思うでしょう。それ以外の場合は、それらのキーフレームだけですべての帯域幅を使用します。 – Brad

+0

私はそれに高いキーフレームで試しましたが、運はありません。また、あなたがリンクした記事はffmpeg用です、私はgstreamer-documentationからキーフレーム引数を探しました。この方法で動作するはずです。 Facebookは動画がオフラインだと言っていますが、これは本当に役に立たないです。 –

答えて

0

変更:

video/x-h264,profile=high 

へ:

video/x-h264,profile=baseline 

そして、それは動作します。試しました:

gst-launch-1.0 flvmux name=mux streamable=true ! rtmpsink location="<rtmp_url_for_fblive>" videotestsrc is-live=true ! "video/x-raw,width=1280,height=720,framerate=30/1" ! identity sync=true ! x264enc bitrate=2500 key-int-max=60 ! video/x-h264,profile=high ! h264parse ! queue ! mux. audiotestsrc is-live=true ! audio/x-raw,rate=44100,channels=2 ! identity sync=true ! voaacenc bitrate=128000 ! queue ! mux. 
関連する問題