linux - FFMPEG 屏幕捕获问题

标签 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,当我开始录制时它因非法命令而崩溃,这让我想知道这是否是系统问题,可能是造成这种情况的原因。

最佳答案

您在 video_size 之前缺少一个 -

-f x11grab -framerate $FRAMERATE -video_size $INRES

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

更新:$FRAMERATE 未定义。您打算使用 $FPS。现在它认为 -framerate 之后的所有内容都是值,而您的情况与上面相同。

关于linux - FFMPEG 屏幕捕获问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29656558/

相关文章:

ffmpeg - 需要在同一行一个接一个地设置多个drawtext。但无法通过 FFMPEG 命令执行此操作

java - 合并两个 .m4a 文件或将 .wav 文件转换为 m4a

java - 从java程序中的FFMpeg中的图像到视频

python - 如何在Python中通过HTTPPost方法发送大文件,上传大文件

带有请求管道的 Python HTTP 客户端

c++ - 每秒运行代码 10000 次

linux - 内核线程与用户线程之间的上下文切换

opengl - OpenGL纹理和对象流

linux - Bash 权限在 cygwin 中被拒绝

找不到任何文件