我的Node.js应用程序使用FFmpeg捕获DirectShow设备的视频,然后输出用于实时流(HLS)的段。目前我正在将段输出到文件中,但是如果我可以通过管道输出它,它将允许我通过websocket高效地发送段而不是托管HTTP服务器。
我尝试过使用此命令:
ffmpeg -y -f dshow -i video = FFsource:audio = Stereo Mix(Realtek High) 定义音频)-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写入标头(错误的编解码器参数?):未找到Muxer”。此命令适用于输出到文件(通过将' - '替换为'seg_%03d.webm')。
FFmpeg不支持分段视频的管道,或者命令有问题吗?感谢。
答案 0 :(得分:0)
您可以传递ffmpeg -i pipe:0 pipe:1
从stdin读取并输出到stdout。
您可以查看我在其中一个项目中使用的示例FFmpeg包装器:
https://github.com/lperrin/node_airtunes/blob/master/examples/play_ffmpeg.js
如果您计划从网络进行流式传输,则可能需要在某个时刻使用循环缓冲区。你可以抢夺项目中的一个。
答案 1 :(得分:0)
使用do.call("cbind", lapply(df[3:5], function(x) {
inds <- head(order(x, decreasing = TRUE), 10)
data.frame(Partner = df$Partner[inds], year = x[inds])
}))
# X2000.Partner X2000.year X2001.Partner X2001.year X2002.Partner X2002.year
#1 Russia 1710262 Russia 1733412 Russia 1497738
#2 Italy 917604 Italy 956196 China 1018680
#3 China 672549 China 646651 Italy 904222
#4 Germany 546887 Germany 495533 Switzerland 773596
#5 Switzerland 463171 Ukraine 490215 UAE 472277
#6 Ukraine 254241 Switzerland 378243 Poland 320482
#7 Netherlands 219459 UAE 330340 Iran 309882
#8 UK 219420 UK 271586 Ukraine 291469
#9 Iran 203270 Iran 208925 Germany 219732
#10 USA 176198 Poland 164157 UK 131824
代替-f nut
。 -f segment
格式可以包含所有类型的标题和音频,视频编解码器。
nut