Facebook Live的Gstreamer

时间:2016-06-28 14:54:22

标签: facebook gstreamer live-streaming

我一直在摆弄gstreamer脚本,将rtmp-stream发送到Facebook Live。我尝试了很多东西。当我将它发送到我自己的RTMP服务器时,流工作,但Facebook不会接受它。

我正在研究Ubuntu 15.10。我注意到OBS也有奇怪的行为。在MBP上似乎有效,但在我的盒子上它不会。

以下信息流符合Facebook Live中提到的视频/音频规格。我在这里列出了它们:

  

视频格式:

     
      
  • 我们接受最大720p(720 x 1280)分辨率的视频,每秒30帧。 (或每2秒1个关键帧)。 CHECK
  •   
  • 您必须在整个流中每两秒至少发送一次I帧(关键帧)。 CHECK
  •   
  • 建议的最大比特率为2500Kbps。 CHECK
  •   
  • 标题必须少于255个字符,否则流将失败CHECK
  •   
  • Live API仅接受H264编码视频和AAC编码音频检查
  •   
     

视频长度:

     
      
  • 直播最长90分钟。检查(未指定,所以我认为应该没问题)

  •   
  • 预览流的最大长度为60分钟(通过实时对话框或发布者工具)。 60分钟后,必须有一个新的流密钥   产生。检查(未指定,所以我认为应该没问题)

  •   

高级设置:

  • 像素长宽比:方形CHECK,gstreamer的默认行为
  • 帧类型:逐行扫描UNCHECKED,逐行扫描似乎是我的标准
  • 音频采样率:44.1 KHz检查
  • 音频比特率:128 Kbps立体声检查
  • 比特率编码:CBR CHECK,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\"

有没有人让gstreamer为Facebook Live工作?

1 个答案:

答案 0 :(得分: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.