首页 > 解决方案 > GStreamer 高品质屏幕录制和音频

问题描述

我正在尝试使用 GStreamer 从桌面屏幕和内部声音创建 RTSP 流。到目前为止,我已经将 RTSP 放在一边以创建稳定的管道并将其保存到文件中。我有:

GST_DEBUG=3 gst-launch-1.0 -v -e \
    ximagesrc use-damage=false \
    ! videorate \
    ! videoconvert  \
    ! "video/x-raw,framerate=30/1" \
    ! x264enc intra-refresh=true speed-preset=6 vbv-buf-capacity=0 qp-min=21 pass=qual quantizer=12 byte-stream=true key-int-max=30  bitrate=128 speed-preset=ultrafast tune=zerolatency \
    ! video/x-h264,profile=high \
    ! queue2 max-size-bytes=0 max-size-buffers=0 max-size-time=0 \
    ! muxer.video_0 \
    pulsesrc \
    ! "audio/x-raw,channels=2,rate=48000" \
    ! queue2 max-size-bytes=0 max-size-buffers=0 max-size-time=0 \
    ! opusenc bitrate=128 \
    ! muxer.audio_0 \
    mp4mux name=muxer \
    ! filesink location=test.mp4

我的问题是,虽然总体质量很好,但我有时会在流中出现一些滞后和“颠簸”,因此音频不是那么流畅,视频也是如此。我正在寻找使这条管道更好的方法,但找不到。很想得到任何帮助!

顺便说一句,我也用 ffmpeg 尝试过,但不幸的是它也很滞后:

 ffmpeg -re -f x11grab -video_size 1920x1080 -r 60 -s 1920x1080 -an -i :0 -i watermark.png -filter_complex [1]lut=a=val*0.65[a];[0][a]overlay=(10):(main_h-overlay_h-10) -f pulse -ac 2 -ar 48000 -vn -i default -f mpegts -c:v libx264 -crf 18 -c:a copy -b:v 1200000 -bf 0 -map 0:v:0 -c:v libvpx -b:v 1000k -deadline realtime -cpu-used 4 -protocol_whitelist pipe,udp,rtp -f tee "RTSP sources..."

虽然这不在这个问题的话题范围内。

标签: video-streaminggstreamergstreamer-1.0

解决方案


推荐阅读