我在heroku中运行了一个Rails应用程序。
我想通过合并/混合(amerge或amix)过滤器将原始AUDIO文件与另一个AUDIO文件加水印。衰落和循环也应该有效。
必须编译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上为我的声音加水印。
请帮助我摆脱这个无休止的故事。
答案 0 :(得分:0)
我忘了将所有子路径添加到LD_LIBRARY_PATH
所以我从
改变了我的heroku变量LD_LIBRARY_PATH: vendor/ffmpeg/lib:/usr/local/lib
到
LD_LIBRARY_PATH: vendor/x264/lib:vendor/mp3lame/lib:vendor/ffmpeg/lib:/usr/local/lib
经由
heroku config:set LD_LIBRARY_PATH=vendor/x264/lib:vendor/mp3lame/lib:vendor/ffmpeg/lib:/usr/local/lib
我已经详细介绍了HEROKU上FFMPEG的详细编译说明