FFMPEG屏幕捕获问题

时间:2015-04-15 17:11:48

标签: linux ffmpeg streaming twitch

很抱歉,如果这已经解决了,但我找不到它。

我尝试使用ffmpeg进行屏幕捕获并将其传输到Twitch。我同时启用了x11grab和libx264但是当我为它的监视器输入它时它会一直返回:

:0.0+0,0: Protocol not found

我确认:0.0确实是我的$ DISPLAY变量,即使我直接在我的脚本中调用它也有同样的错误。我的脚本如下:

#!/bin/bash

# Stream Variables
STREAM_KEY="<not shown>"
INRES="1680x1050"
OUTRES="1024x768"
FPS="30"
BITRATE="1266k"
BUFFER="1266k"
AUDIO_BITRATE="160k"

ffmpeg -f alsa -ac 2 -i hw:0,0 -f x11grab -framerate $FRAMERATE -video_size $INRES \
   -i :0.0+0,0 -vcodec libx264 -preset veryfast -maxrate $BITRATE -bufsize $BUFFER \
   -vf "scale=$OUTRES, format=yuv420p" -g $(expr $FPS \* 2) -acodec libfdk_aac -b:a $AUDIO_BITRATE \
   -f flv rtmp://liva-jfk.twitch.tv/app/$STREAM_KEY

我在Debian Jessie(测试)上,ffmpeg和相关的软件包来自deb-multimedia。我很好奇,如果有人在这里可以看到我可能错过的东西。

旁注:我知道在ScreenStudio这样的程序中调用相同的显示并且它们可以工作,但并不灵活。我尝试使用obs-studio for linux,当我开始录制时,它会因非法命令而崩溃,这让我想知道这是否是导致系统问题的原因。

1 个答案:

答案 0 :(得分:1)

您在-之前错过了video_size

-f x11grab -framerate $FRAMERATE -video_size $INRES

为什么'找不到协议'?:因为它认为x11grab格式适用于名为video_size的某些输入,并且它无法推断出实际输入的格式:0.0+0,0

更新: $FRAMERATE未定义。您打算使用$FPS。现在它认为-framerate之后的整个事物就是价值而且你和上面的情况一样。