我有一个在 heroku 中运行的 Rails 应用程序。
我想通过合并/混合(amerge 或 amix)过滤器将原始音频文件与另一个音频文件加水印。淡入淡出和循环也应该起作用。
必须编译 FFMPEG 才能在 heroku 上运行此功能。我从这个使用Vuclan的 GIST 得到的步骤
https://gist.github.com/liufengyun/5055354
在本地,我使用以下术语与作为上传器的Carrierwave进行转换:
"-i Original.aiff -i public/watermark/#{ENV['WATERMARK_FILENAME']}.aiff -loop 1 -filter_complex '[1]afade=t=in:ss=0:d=1[4];[4]afade=t=out:st=#{self.evaluate_length-2}:d=2[5];[5][0]amix=duration=shortest[out]' -map [out]"
这适用于我的 mac 上内置的 ffmpeg。
我为heroku 编译的版本确实包含amerge、amix 和libavformat 库。
这是我去上传表单并上传文件时从heroku获得的日志:(所有这些都有效,但仅限于本地)。
Started POST "/sounds" for 84.113.97.32 at 2013-07-15 21:14:33 +0000
2013-07-15T21:14:33.175631+00:00 app[web.1]: Running transcoding...
2013-07-15T21:14:33.175631+00:00 app[web.1]: ffmpeg -y -i /tmp/sounds/1373922873-2-5714/watermark_loop-95.aiff -i public/watermark/1khz.aiff -loop 1 -filter_complex '[1]afade=t=in:ss=0:d=1[4];[4]afade=t=out:st=-2.0:d=2[5];[5][0]amix=duration=shortest[out]' -map [out] /tmp/sounds/1373922873-2-5714/watermark_loop-95.aiff
2013-07-15T21:14:33.175631+00:00 app[web.1]:
2013-07-15T21:14:33.241221+00:00 app[web.1]: Failed encoding...
2013-07-15T21:14:33.241221+00:00 app[web.1]: ffmpeg -y -i /tmp/sounds/1373922873-2-5714/watermark_loop-95.aiff -i public/watermark/1khz.aiff -loop 1 -filter_complex '[1]afade=t=in:ss=0:d=1[4];[4]afade=t=out:st=-2.0:d=2[5];[5][0]amix=duration=shortest[out]' -map [out] /tmp/sounds/1373922873-2-5714/watermark_loop-95.aiff
2013-07-15T21:14:33.241221+00:00 app[web.1]:
2013-07-15T21:14:33.241221+00:00 app[web.1]: ffmpeg: error while loading shared libraries: libavformat.so.54: cannot open shared object file: No such file or directory
2013-07-15T21:14:33.241221+00:00 app[web.1]:
2013-07-15T21:14:33.241221+00:00 app[web.1]: Errors: encoded file is invalid.
2013-07-15T21:14:33.241221+00:00 app[web.1]:
2013-07-15T21:14:33.277487+00:00 app[web.1]:
2013-07-15T21:14:33.277487+00:00 app[web.1]: FFMPEG::Error (Failed encoding.Errors: encoded file is invalid. Full output: ffmpeg: error while loading shared libraries: libavformat.so.54: cannot open shared object file: No such file or directory
2013-07-15T21:14:33.277487+00:00 app[web.1]: ):
2013-07-15T21:14:33.277487+00:00 app[web.1]: app/uploaders/sound_uploader.rb:39:in `watermarking'
2013-07-15T21:14:33.277487+00:00 app[web.1]:
这是我第 6 次尝试编译,让 ffmpeg 正确运行并在 heroku 上为我的声音添加水印。
请帮助我摆脱这个永无止境的故事。