ffmpeg + mp3 convert

Hi Pete,

What exactly is the error message you're getting when it fails? I may
be wrong, but I think it's trying to call ffmpeg without a file path.
I say that because, based on my rudimentary understanding of Ruby, the
mp3 object doesn't exist inside the scope of convert_mp3.

So instead, try something like this:

private
def convert_mp3
  system("ffmpeg -i #{self.mp3.to_file.path} -vn -ar 44100 -ac 2 -ab
64 -f mp3 #{mp3.to_file.path}")
end

(I recommend putting that inside private for security reasons.)

If that doesn't work, try to copy-paste the command itself into a
shell, substitute the filename for something you know is there and
should work, and try that. In other words, try to isolate where the
problem is - in the code, or in the execution of ffmpeg.

Hi, thx for your suggestions,

but it doesn't work either. :frowning: it always return the message "Whoops!
File was NOT uploaded. Please try it again." // message from my tracks
controller.

  def create
    #@track = logged_in_user.tracks.build(params[:track])
    @track = Track.new(params[:track])

    if logged_in_user.tracks << @track
       flash[:notice] = "Successfully uploaded."
           redirect_to :action => :index
      else
      flash[:error] = "Whoops! File was NOT uploaded. Please try it
again."
           render :action => :new
      end
  end

Could it be the command itself and its syntax?
"ffmpeg -i #{self.mp3.to_file.path} -vn -ar 44100 -ac 2 -ab 16 -f mp3
#{mp3.to_file.path}"

Pete

Phoenix Rising wrote:

Well, that's what I was thinking: isolate your ffmpeg command and see
if it's working correctly. Get a file that you know ffmpeg can work
with, then execute that exact same command on your system, but
substitute the filename for (self.mp3.to_file.path. So, for example:

[you@yourbox] $ ffmpeg -i original_file.wav -vn -ar 44100 -ac 2 -ab 16
-f mp3 new_mp3.mp3

Where:
- original_file.wav - test original file for ffmpeg to convert
- new_mp3.mp3 - what ffmpeg should create as a result of said
conversion

Also, check permissions on your various directories. Make sure that
whatever user is running Ruby (i.e. is this running behind Apache with
Phusion?) has write and execute permissions on whatever directory
you're writing the files to.