Twitch Stream作为ffmpeg的输入

时间:2018-04-01 21:47:07

标签: ffmpeg video-streaming streaming twitch livestreamer

我的目标是拍摄抽搐视频流并从中生成图像序列,而无需创建中间文件。我发现ffmpeg可以拍摄视频并将其转换为视频并将其转换为图像序列。 ffmpeg website表示它的输入选项可以占用网络流,但我真的找不到任何明确的文档。我搜索了Stack Overflow并且我也没有找到任何答案。

我已尝试将链接添加到流:

ffmpeg -i www.twitch.tv/channelName 

但该程序要么声明错误“没有这样的文件或目录”:

"No such file or directory"

或在向链接添加https时导致分段错误。

我也在使用streamlink并在python脚本中使用ffmpeg来尝试流式网址:

import streamlink
import subprocess

streams = streamlink.streams("http://twitch.tv/channelName")
stream = streams["worst"]
fd = stream.open()
url = fd.writer.stream.url
fd.close()
subprocess.run(['/path/to/ffmpeg', '-i', url], shell=True)

但是这会产生与网站网址相同的错误。我对ffmpeg和streamlink很新,所以我不确定我做错了什么。有没有办法为ffmpeg的输入添加一个抽搐流?

1 个答案:

答案 0 :(得分:0)

我已经弄清楚了。 Ffmpeg不会为您提供在线文件,您必须自己提取它们,这可以通过在流URL上使用调用GET来完成,该URL返回包含function range(...args) { if (args.length < 2) { return new Generator(rangeGeneratorWithStop(...args)); } return new Generator(rangeGeneratorWithSartAndStopAndStep(...args)); } const rangeGeneratorWithStop = stop => function * () { for (let i = 0; i < stop; i++) { yield i; } }; const rangeGeneratorWithSartAndStopAndStep = (start, stop, step = 1) => function * () { for (let i = start; i < stop; i += step) { yield i; } }; function range(...args) { if (args.length < 2) { return new Generator(rangeGeneratorWithStop(...args)); } return new Generator(rangeGeneratorWithSartAndStopAndStep(...args)); } class Generator { constructor(generatorFn) { this[Symbol.iterator] = generatorFn; } map(callbackFn) { const result = []; for (const element of this) { result.push(callbackFn(element)); } return result; } filter(callbackFn) { const result = []; for (const element of this) { if (callbackFn(element)) { result.push(element); } } return result; } toArray() { return Array.from(this); } } 个文件的地址的文件{{1} }可用于在您的驱动器上下载这些文件。将此与我的图像排序目标相结合,该过程在python上看起来像这样:

.ts

这不是一个完美的答案,你仍然需要创建我希望避免的中间视频文件。也许有更好更快的答案,但这就足够了。