我使用streamio-ffmpeg对通过ffmpeg上传到我的Rails应用程序的视频进行编码。我想使用VP9 coding format将视频编码为.webm格式,而WebM项目的VP9 Encoding Guide建议使用2遍编码。我设法通过stream-ffmpeg使用1遍编码获得视频编码,但我无法弄清楚如何处理2遍编码。
到目前为止我的设置:
# create two tempfiles for the video and a still
video = Tempfile.new(["video", ".webm"], binmode: true)
still = Tempfile.new(["still", ".jpg"], binmode: true)
# new FFMPEG
movie = FFMPEG::Movie.new(original.path)
# extract still from video
movie.screenshot(still.path)
# encode video
options = %w(-c:v libvpx-vp9 -b:v 1000K -threads 8 -speed 4 -tile-columns 6 -frame-parallel 1 -auto-alt-ref 1 -lag-in-frames 25 -c:a libvorbis -b:a 64k -f webm)
movie.transcode(video.path, options)
使用ffmpeg进行2遍编码的命令是:
ffmpeg -i <source> -c:v libvpx-vp9 -pass 1 ... -f webm /dev/null
ffmpeg -i <source> -c:v libvpx-vp9 -pass 2 ... -f output.webm
特别是,我不知道如何使用streamio-ffmpeg将第一个编码步骤的文件传递给第二步。如何将这两个步骤应用于movie.transcode(output, options)
的语法?
谢谢!