使用FFmpeg通过管道输出视频片段

9
我的Node.js应用程序使用FFmpeg捕获DirectShow设备的视频,然后输出片段以进行实时流传输(HLS)。目前,我正在将片段输出到文件中,但是如果我可以通过管道输出它们,那么我就可以有效地通过websocket发送片段,而不必托管HTTP服务器。
我尝试使用以下命令:
ffmpeg -y -f dshow -i video=FFsource:audio=Stereo Mix (Realtek High Definition Audio) -vcodec libvpx -acodec libvorbis -threads 0 -b:v 3300k -cpu-used 5 -keyint_min 150 -g 150 -map 0 -flags:v +global_header -f segment -
然而,它会出现错误“无法为输出文件#0编写标题(编解码器参数不正确?):找不到复合器”。该命令可用于输出到文件(通过将“-”替换为“seg_%03d.webm”)。
FFmpeg是否不支持分段视频的管道输出,或者命令有问题?谢谢。

在管道上输出分段文件是什么意思? - vipw
你找到解决方案了吗? - ESala
2个回答

3

使用-f nut替代-f segmentnut格式可以包含所有类型的标题和音频、视频编解码器。

ffmpeg -y -f dshow -i video=FFsource:audio=Stereo Mix (Realtek High Definition Audio) -vcodec libvpx -acodec libvorbis -threads 0 -b:v 3300k -cpu-used 5 -keyint_min 150 -g 150 -map 0 -flags:v +global_header -f nut pipe:

0

1
尝试使用'pipe:1'代替'-'输出到标准输出,但我仍然遇到相同的错误。 然而似乎只是分段时出了问题,因为使用'pipe:1'输出整个文件正常。 不管怎样,还是谢谢。 - Joey Morani

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接