【问题标题】:FFMPEG Screen Capture IssueFFMPEG 屏幕捕获问题
【发布时间】:2015-06-21 18:54:14
【问题描述】:

抱歉,如果这个问题已经解决,但我找不到它。

我正在尝试使用 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(Testing) 上,ffmpeg 和相关软件包来自 deb-multimedia。我很好奇这里是否有人可以看到我可能错过的东西。

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

【问题讨论】:

  • $FRAMERATE 未定义。你是说 $FPS 吗?
  • 请显示您的命令的完整控制台输出。

标签: linux ffmpeg streaming twitch


【解决方案1】:

您在video_size 之前缺少-

-f x11grab -framerate $FRAMERATE -video_size $INRES

为什么'protocol not found'?:因为它认为x11grab 格式适用于一些名为video_size 的输入,它无法推断出实际输入:0.0+0,0 的格式。

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

【讨论】:

  • 感谢您的输入,但这实际上是我粘贴脚本时的拼写错误。它已经读取了-video_size。我编辑了问题以反映这一点。
  • 更新了答案。还有更多的错别字,未初始​​化的值:)?​​
  • 那怎么样,我的错误比最初想象的还要明显。感谢收看。
  • 我通常在第一次运行命令之前执行echo。它有助于发现此类问题。
猜你喜欢
  • 2011-10-09
  • 2013-11-13
  • 2014-09-28
  • 1970-01-01
  • 1970-01-01
  • 2012-07-03
  • 1970-01-01
  • 1970-01-01
  • 2012-04-19
相关资源
最近更新 更多