【问题标题】:Ffmpeg 4 audio and 1 video input to 4 video outputs performance issueFfmpeg 4 音频和 1 视频输入到 4 视频输出性能问题
【发布时间】:2021-05-25 04:48:44
【问题描述】:

我已经创建了 4 个零接收脉冲监视器,它工作正常。 当我将 4 个输出发布到具有噪音和停止的 rtmp 音频时。当与 2 个输出一起工作时,它工作正常。 如果我将分辨率从 1920x1080 降低到 1280*720,它也可以正常工作。 使用 4 个不同的音频输入和 1 个视频输入


SCREEN_WIDTH=1920
SCREEN_HEIGHT=1080
SCREEN_RESOLUTION=${SCREEN_WIDTH}x${SCREEN_HEIGHT}
COLOR_DEPTH=24
X_SERVER_NUM=2
VIDEO_BITRATE=3000
VIDEO_FRAMERATE=30
VIDEO_GOP=$((VIDEO_FRAMERATE))
AUDIO_BITRATE=160k
AUDIO_SAMPLERATE=44100
AUDIO_CHANNELS=1
#some codes here

ffmpeg -y\
  -hide_banner -loglevel error \
  -nostdin \
  -s ${SCREEN_RESOLUTION} \
  -r ${VIDEO_FRAMERATE} \
  -draw_mouse 0 \
  -f x11grab \
    -i ${DISPLAY} \
  -f pulse -i MySink1.monitor \
  -f pulse -i MySink2.monitor \
  -f pulse -i MySink3.monitor \
  -f pulse -i MySink4.monitor \
  -c:v libx264 \
    -pix_fmt yuv420p \
    -profile:v main \
    -preset veryfast \
    -minrate ${VIDEO_BITRATE} \
    -maxrate ${VIDEO_BITRATE} \
    -g ${VIDEO_GOP} \
    -map 0 -f flv -map 1  ${RTMP_URL1} \
  -c:v libx264 \
    -pix_fmt yuv420p \
    -profile:v main \
    -preset veryfast \
    -minrate ${VIDEO_BITRATE} \
    -maxrate ${VIDEO_BITRATE} \
    -g ${VIDEO_GOP} \
    -map 0 -f flv -map 2  ${RTMP_URL2} \
  -c:v libx264 \
    -pix_fmt yuv420p \
    -profile:v main \
    -preset veryfast \
    -minrate ${VIDEO_BITRATE} \
    -maxrate ${VIDEO_BITRATE} \
    -g ${VIDEO_GOP} \
    -map 0 -f flv -map 3  ${RTMP_URL3} \
  -c:v libx264 \
    -pix_fmt yuv420p \
    -profile:v main \
    -preset veryfast \
    -minrate ${VIDEO_BITRATE} \
    -maxrate ${VIDEO_BITRATE} \
    -g ${VIDEO_GOP} \
    -map 0 -f flv -map 4  ${RTMP_URL4} \````
    
I guess I need some performance issue. How can I add **tee** or use one decoded video in all outputs. 

【问题讨论】:

    标签: linux ffmpeg pulseaudio


    【解决方案1】:

    使用tee muxer。简化示例:

    ffmpeg \
      -f x11grab -framerate 30 -video_size 1920x1080 -i :0.0 \
      -f pulse -i MySink1.monitor \
      -f pulse -i MySink2.monitor \
      -f pulse -i MySink3.monitor \
      -f pulse -i MySink4.monitor \
      -map 0 -map 1 -map 2 -map 3 -map 4 \
      -c:v libx264 -vf format=yuv420p -maxrate 3000k -bufsize 6000k -g 60 -c:a aac -flags +global_header \
      -f tee "[select=\'v,a:0\':f=flv:onfail=ignore]${RTMP_URL1}|[select=\'v,a:1\':f=flv:onfail=ignore]${RTMP_URL2}|[select=\'v,a:2\':f=flv:onfail=ignore]${RTMP_URL3}|[select=\'v,a:3\':f=flv:onfail=ignore]${RTMP_URL4}"
    

    【讨论】:

    • 这是一个很好的解决方案,再次感谢。关于 ffmpeg 的书有将近 20 本书,你会推荐哪一本?我决定在我的职业生涯中更多地从事 ffmpeg 和视频方面的工作。
    • @Yusufu 我一个都没读过,但是FFmpeg Basics 的作者在我询问时将他的\@FFmpeg Twitter 帐户捐赠给了该项目,所以我会提到那个(但我'我不完全赞同它,因为我不知道它是过时的还是错误的)。从documentationwiki 开始。 ffmprovisr 对于制作数字档案的用户很有用。这里有数百个答案和Super UserVideo Production,还有reddit.com/r/ffmpeg/
    猜你喜欢
    • 2020-12-24
    • 1970-01-01
    • 1970-01-01
    • 2019-08-31
    • 2012-05-15
    • 1970-01-01
    • 1970-01-01
    • 2019-03-30
    • 2014-05-06
    相关资源
    最近更新 更多