跳转至

GStreamer UDP 推流拉流操作

1. GStreamer 推流命令

1.1 linux 基础推流(MPEG-TS over UDP)

gst-launch-1.0 filesrc location=Transformers_1080p60.mp4 \
  ! decodebin \
  ! x264enc \
  ! mpegtsmux \
  ! udpsink host=192.168.5.188 port=5600

1.2 windows VLC推流

1. 打开 VLC → 媒体 → 流

2. 添加源

  • 点击「添加」选择视频文件,或选择「捕获设备」用摄像头

3. 点击「串流」按钮

4. 下一步 → 新建目标,选择 UDP(传统)

5. 填写目标地址:

  • 地址:192.168.168.188
  • 端口:5600(常用FPV端口,可自定义)
  • 点击「添加」

6. 转码设置(关键)

  • 勾选「激活转码」
  • 选择配置文件,点击编辑(扳手图标)
  • 视频编解码器选 H264
  • 封装格式选 MPEG-TS(UDP必须用TS封装)
  • 音频可以取消勾选(FPV不需要)

7. 点击「流」开始推流

image-20260421145044868

1.3 ffmpeg 推流命令

  ffmpeg -re -stream_loop -1 -i Transformers_1080p60.mp4 -an \
    -c:v libx264 -preset veryfast -tune zerolatency \
    -pix_fmt yuv420p -profile:v baseline -g 30 \
    -x264-params keyint=30:min-keyint=30:scenecut=0 \
    -f rtp -payload_type 96 "rtp://192.168.1.102:5600?pkt_size=1200"

优化推流段

ffmpeg -re -stream_loop -1 -i Transformers_1080p60.mp4 -an \
    -c:v libx264 -preset ultrafast -tune zerolatency \
    -pix_fmt yuv420p -profile:v baseline -g 60 \
    -b:v 1000k -maxrate 1000k -bufsize 1000k \
    -x264-params keyint=30:min-keyint=30:scenecut=0:nal-hrd=cbr \
    -f rtp -payload_type 96 "rtp://192.168.1.102:5600?pkt_size=1316"

循环推送的呢:

ffmpeg -re -stream_loop -1 -i ./videos/nfs_v/Cold2520Winter2520Dream-HD3_1.mp4.mp4 -an \
    -vf "scale=1280:720,fps=30" \
    -c:v libx264 -preset ultrafast -tune zerolatency \
    -pix_fmt yuv420p -profile:v baseline -bf 0 \
    -b:v 800k -maxrate 800k -bufsize 400k \
    -g 30 \
    -x264-params keyint=30:min-keyint=30:scenecut=0:nal-hrd=cbr \
    -f rtp -payload_type 96 "rtp://192.168.1.102:5600?pkt_size=1200"

2. 基础接收播放:

1.1 GStreamer 接收

gst-launch-1.0 udpsrc port=5600 \
  ! tsdemux \
  ! h264parse \
  ! avdec_h264 \
  ! videoconvert \
  ! autovideosink