我正在尝试不断读取文件并将输出保存到IO.pipe
。之前产生的ffmpeg以及作为STDIN给出管道的r端的动机将转换视频。
这就是我到目前为止所做的:
r,w = IO.pipe
ffmpeg_args = ' -i pipe:0 "test.mp4"'
pid = Process.spawn('ffmpeg'+ffmpeg_args, {STDIN => r, STDERR => STDOUT})
Process.detach pid
File.open(@options['filename'], 'rb') do |file|
while line = file.gets
w.write line.read
end
end
我成功地将输入文件直接声明为进程的STDIN,但这导致ffmpeg提前终止,因为它已到达文件的末尾。使用上面的代码,ffmpeg会抱怨无效数据。
有什么办法可以实现吗?