| command line |
| exekutive posted 2008 May 18 01:05 |
Is it possible to use the ffmpeg binary within the ffmpegx package contents, as a command line program? I would like to convert a WAV audio file to WMA and ffmpeg is supposedly able to do that (didn't see it in ffmpegx), but I'm trying to avoid compiling my own. Normally I'm pretty competent with computers, but I'm a total stranger to UNIX so go easy on me. :?
|
| Case posted 2008 May 18 08:56 |
The copy of ffmpeg in ffmpegX may be compiled without the WMA encoding options. Not sure if major did that, but I couldn't get it to work either.
The -formats option lists only decoding ability for wmav1 and wmav2.
|
| exekutive posted 2008 May 18 13:34 |
Thanks Case. So how do you go about running it from the command line, just out of curiosity?
I'm going to try and find a pre-compiled binary of ffmpeg ...
|
| Case posted 2008 May 19 23:10 |
A regular "Audio file to mp3" conversion would go something like:
| : |
| ffmpeg -i in.wav -y -threads 2 -vn -f mp2 -acodec mp3 -ab 128 -ar 44100 -ac 2 -map 0.0:0.0 -benchmark out.mp3 |
which translates to:
ffmpeg (the program that should be activated and use the following parameters)
-i in.wav (input file)
-y (overwrite output files)
-threads 2 (thread count)
-vn (disable video)
-f mp2 (force format)
-acodec mp3 (force audio codec)
-ab 128 (set audio bitrate)
-ar 44100 (set audio sampling rate)
-ac 2 (set number of audio channels)
-map 0.0:0.0 (set input stream mapping)
-benchmark (add timings for benchmarking)
out.mp3 (output file)
The input file and output file should be full path in most cases, as the home directory is default.
As ffmpeg isn't installed in /usr/bin/ or so, it should be identified with the full path, too.
To do so in the Terminal, you may use drag-and-drop.
Some of the command line options listed above aren't strictly needed:
- audio sampling rate defaults to same as source if such is valid
- number of audio channels defaults to same as source if such is valid
- stream mapping 0.0:0.0 is default
- benchmarking can be skipped
|
| exekutive posted 2008 May 21 01:57 |
I understand running commands and using arguments and so forth (I used to play with DOS a lot), but I'm having trouble getting up to that point.
Here's what I've done.
1. right-click ffmpegx app, and choose Show Package Contents.
2. open Contents/Resources
3. copied "ffmpeg" file into a new folder on HD
4. Launched "Terminal" and navigated to folder containing the "ffmpeg" UNIX executable file.
5. Type "ffmpeg" with and without various arguments at the prompt, and all I get is "command not found"
What am I doing wrong?
|
| Case posted 2008 May 21 12:32 |
| exekutive : |
| 3. copied "ffmpeg" file into a new folder on HD |
Not needed, as the path below shows. Nothing wrong it with either.
| exekutive : |
| 4. Launched "Terminal" and navigated to folder containing the "ffmpeg" UNIX executable file. |
Changing the working directory may be handy for your input and output files, but it does nothing for the executable.
| exekutive : |
5. Type "ffmpeg" with and without various arguments at the prompt, and all I get is "command not found"?
| Case : |
| As ffmpeg isn't installed in /usr/bin/ or so, it should be identified with the full path, too. |
|
| : |
| Computer-name:~ username$ /Applications/ffmpegX_0.0.9y/ffmpegX.app/Contents/Resources/ffmpeg -i /Users/username/Desktop/in.wav -vn -f mp2 -acodec mp3 /Users/username/Desktop/out.mp3 |
|
| exekutive posted 2008 May 21 21:00 |
Where is my usr/bin directory and how do I install ffmpeg there?
|
| stefano6791 posted 2008 May 22 12:02 |
I did this way.
Open a terminal from administrator account
cd /usr/bin
sudo ln -s /Applications/ffmpegX.app/Contents/Resources/ffmpeg .
be carefull to write the last dot
It makes a link in your /usr/bin/ folder to ffmpeg (just doublecheck that the folder has the same name in your computer.
once it's there you can run ffmpeg from everywhere in the shell.
if you are not amministrator you still can make a link in your home directory
ln -s /Applications/ffmpegX.app/Contents/Resources/ffmpeg .
to run it from the directory it is:
./ffmpeg
if you put it in /home/you/bin you can call it
~/bin/ffmpeg
hope I've helped
|
| exekutive posted 2008 May 22 19:02 |
That worked. Thanks Stefano!
I didn't even know the 'usr' directory existed. Is there some way to open it from Finder?
|
| exekutive posted 2008 May 22 19:24 |
Actually, I see WMAV there under codecs, which would suggest ffmpeg could encode and decode it.
| : |
FFmpeg version CVS, Copyright (c) 2000-2004 Fabrice Bellard
Mac OSX universal build for ffmpegX
configuration: --enable-memalign-hack --enable-mp3lame --enable-gpl --disable-vhook --disable-ffplay --disable-ffserver --enable-a52 --enable-xvid --enable-faac --enable-faad --enable-amr_nb --enable-amr_wb --enable-pthreads --enable-x264
libavutil version: 49.0.0
libavcodec version: 51.9.0
libavformat version: 50.4.0
built on Apr 15 2006 04:58:19, gcc: 4.0.1 (Apple Computer, Inc. build 5250)
File formats:
E 3g2 3gp2 format
E 3gp 3gp format
D 4xm 4X Technologies format
D RoQ Id RoQ format
D aac ADTS AAC
DE ac3 raw ac3
E adts ADTS AAC
DE aiff Audio IFF
DE alaw pcm A law format
DE amr 3gpp amr file format
DE asf asf format
E asf_stream asf format
DE au SUN AU Format
DE avi avi format
D avs avs format
E crc crc testing format
D daud D-Cinema audio format
D dts raw dts
DE dv DV video format
E dvd MPEG2 PS format (DVD VOB)
D ea Electronic Arts Multimedia Format
DE ffm ffm format
D film_cpk Sega FILM/CPK format
D flic FLI/FLC/FLX animation format
DE flv flv format
E framecrc framecrc testing format
DE gif GIF Animation
DE h261 raw h261
DE h263 raw h263
DE h264 raw H264 video format
D idcin Id CIN format
DE image image sequence
DE image2 image2 sequence
DE image2pipe piped image2 sequence
DE imagepipe piped image sequence
D ingenient Ingenient MJPEG
D ipmovie Interplay MVE format
DE m4v raw MPEG4 video format
D matroska Matroska file format
DE mjpeg MJPEG video
D mm American Laser Games MM format
DE mmf mmf format
E mov mov format
D mov,mp4,m4a,3gp,3g2,mj2 QuickTime/MPEG4/Motion JPEG 2000 format
E mp2 MPEG audio layer 2
DE mp3 MPEG audio layer 3
E mp4 mp4 format
DE mpeg MPEG1 System format
E mpeg1video MPEG video
E mpeg2video MPEG2 video
DE mpegts MPEG2 transport stream format
D mpegvideo MPEG video
E mpjpeg Mime multipart JPEG format
DE mulaw pcm mu law format
D nsv NullSoft Video format
E null null video format
DE nut nut format
D nuv NuppelVideo format
D ogg Ogg
E psp psp mp4 format
D psxstr Sony Playstation STR format
DE rawvideo raw video format
D redir Redirector format
DE rm rm format
E rtp RTP output format
D rtsp RTSP input format
DE s16be pcm signed 16 bit big endian format
DE s16le pcm signed 16 bit little endian format
DE s8 pcm signed 8 bit format
D sdp SDP
D shn raw shorten
D smk Smacker Video
D sol Sierra SOL Format
E svcd MPEG2 PS format (VOB)
DE swf Flash format
D tta true-audio
DE u16be pcm unsigned 16 bit big endian format
DE u16le pcm unsigned 16 bit little endian format
DE u8 pcm unsigned 8 bit format
E vcd MPEG1 System format (VCD)
D vmd Sierra VMD format
E vob MPEG2 PS format (VOB)
DE voc Creative Voice File format
DE wav wav format
D wc3movie Wing Commander III movie format
D wsaud Westwood Studios audio format
D wsvqa Westwood Studios VQA format
DE yuv4mpegpipe YUV4MPEG pipe format
Image formats (filename extensions, if any, follow):
DE gif gif
Codecs:
D V 4xm
D V D 8bps
DEA aac
D V D aasc
DEA ac3
DEA adpcm_4xm
DEA adpcm_adx
DEA adpcm_ct
DEA adpcm_ea
DEA adpcm_ima_dk3
DEA adpcm_ima_dk4
DEA adpcm_ima_qt
DEA adpcm_ima_smjpeg
DEA adpcm_ima_wav
DEA adpcm_ima_ws
DEA adpcm_ms
DEA adpcm_sbpro_2
DEA adpcm_sbpro_3
DEA adpcm_sbpro_4
DEA adpcm_swf
DEA adpcm_xa
DEA adpcm_yamaha
D A alac
DEA amr_nb
DEA amr_wb
DEV D asv1
DEV D asv2
D V D avs
D V bmp
D V D camstudio
D V D camtasia
D V D cinepak
D V D cljr
D A cook
D V D cyuv
DES dvbsub
DES dvdsub
DEV D dvvideo
DEV D ffv1
DEVSD ffvhuff
D A flac
D V D flic
DEVSD flv
D V D fraps
DEA g726
DEV D h261
DEVSDT h263
D VSD h263i
EV h263p
DEV DT h264
DEVSD huffyuv
D V D idcinvideo
D V D indeo2
D V indeo3
D A interplay_dpcm
D V D interplayvideo
EV jpegls
D V kmvc
EV ljpeg
D V D loco
D A mace3
D A mace6
D V D mdec
DEV D mjpeg
D V D mjpegb
D V D mmvideo
DEA mp2
DEA mp3
D A mp3adu
D A mp3on4
DEVSDT mpeg1video
DEVSDT mpeg2video
DEVSDT mpeg4
D A mpeg4aac
D VSDT mpegvideo
DEVSD msmpeg4
DEVSD msmpeg4v1
DEVSD msmpeg4v2
D V D msrle
D V D msvideo1
D V D mszh
D V D nuv
DEV pam
DEV pbm
DEA pcm_alaw
DEA pcm_mulaw
DEA pcm_s16be
DEA pcm_s16le
DEA pcm_s24be
DEA pcm_s24daud
DEA pcm_s24le
DEA pcm_s32be
DEA pcm_s32le
DEA pcm_s8
DEA pcm_u16be
DEA pcm_u16le
DEA pcm_u24be
DEA pcm_u24le
DEA pcm_u32be
DEA pcm_u32le
DEA pcm_u8
DEV pgm
DEV pgmyuv
DEV png
DEV ppm
D A qdm2
D V D qdraw
D V D qpeg
D V D qtrle
DEV rawvideo
D A real_144
D A real_288
D A roq_dpcm
D V D roqvideo
D V D rpza
DEV D rv10
DEV D rv20
D A shorten
D A smackaud
D V smackvid
D V D smc
DEV snow
D A sol_dpcm
DEA sonic
EA sonicls
D V D sp5x
DEV D svq1
D VSD svq3
D V theora
D V D truemotion1
D V D truemotion2
D A truespeech
D A tta
D V D ultimotion
D V vc9
D V D vcr1
D A vmdaudio
D V D vmdvideo
D A vorbis
D V vp3
D V D vqavideo
D A wmav1
D A wmav2
DEVSD wmv1
DEVSD wmv2
D V D wnv1
D A ws_snd1
D A xan_dpcm
D V D xan_wc3
D V D xl
EV xvid
DEV D zlib
D V zmbv
Supported file protocols:
file: pipe: udp: rtp: tcp: http:
Frame size, frame rate abbreviations:
ntsc pal qntsc qpal sntsc spal film ntsc-film sqcif qcif cif 4cif
Motion estimation methods:
zero(fastest) full(slowest) log phods epzs(default) x1 hex umh iter
Note, the names of encoders and decoders dont always match, so there are
several cases where the above table shows encoder only or decoder only entries
even though both encoding and decoding are supported for example, the h263
decoder corresponds to the h263 and h263p encoders, for file formats its even
worse |
However, when I tried to run this:
| : |
| macbook:/ Joe$ ffmpeg -i older.wav -acodec wmav2 older.asf |
I got:
| : |
FFmpeg version CVS, Copyright (c) 2000-2004 Fabrice Bellard
Mac OSX universal build for ffmpegX
configuration: --enable-memalign-hack --enable-mp3lame --enable-gpl --disable-vhook --disable-ffplay --disable-ffserver --enable-a52 --enable-xvid --enable-faac --enable-faad --enable-amr_nb --enable-amr_wb --enable-pthreads --enable-x264
libavutil version: 49.0.0
libavcodec version: 51.9.0
libavformat version: 50.4.0
built on Apr 15 2006 04:58:19, gcc: 4.0.1 (Apple Computer, Inc. build 5250)
Input #0, wav, from 'older.wav':
Duration: 00:02:50.2, start: 0.000000, bitrate: 1411 kb/s
Stream #0.0: Audio: pcm_s16le, 44100 Hz, stereo, 1411 kb/s
Output #0, asf, to 'older.asf':
Stream #0.0: Audio: 0x0000, 44100 Hz, stereo, 64 kb/s
Stream mapping:
Stream #0.0 -> #0.0
Unsupported codec for output stream #0.0 |
|
| exekutive posted 2008 May 22 19:38 |
| exekutive : |
| Actually, I see WMAV there under codecs, which would suggest ffmpeg could encode and decode it. |
Oops. Nevermind. The 'D' in front means decode only. Darn.
|
| exekutive posted 2008 May 22 19:40 |
Did see this in the FFMPEG news though
| : |
| (March 09, 2007) Nine months without news but with heavy development. A few select highlights are decoders for VC-1/WMV3/WMV9, VMware, VP5, VP6 video and WavPack, IMC, DCA audio and a WMA encoder. |
|
| Case posted 2008 May 22 20:12 |
| exekutive : |
| I didn't even know the 'usr' directory existed. Is there some way to open it from Finder? |
Finder > menu Go > Go to Folder... > /usr
|
| exekutive posted 2008 May 22 20:16 |
| Case : |
| exekutive : |
| I didn't even know the 'usr' directory existed. Is there some way to open it from Finder? |
Finder > menu Go > Go to Folder... > /usr |
So is it a hidden folder?
|
| Case posted 2008 May 22 20:21 |
Yes, a don't-mess-with-this-unless-you-know-what-you're-doing folder. ;)
|
| exekutive posted 2008 May 22 20:39 |
I see. So I'm guessing Finder is configured never to show these folders, and not even give you the ability to set their visibility? What if I wanted to hide my own folder ... I do it from the command line with like an 'h' attribute or something?
|
| exekutive posted 2008 May 23 00:38 |
So I'm in the process of compiling ffmpeg
I tried to follow the guide here:
http://stephenjungels.com/jungels.net/articles/ffmpeg-howto.html
I've make'd the faac, faad and lame libraries. They're in my usr/local/bin directory.
I'm at the step of configuring ffmpeg using this command:
| : |
| ./configure --enable-libmp3lame --disable-vhook --enable-shared --disable-mmx --enable-libfaac --enable-libfaad --enable-gpl |
This is the result I get:
| : |
ERROR: LAME not found
If you think configure made a mistake, make sure you are using the latest
version from SVN. If the latest version fails, report the problem to the
ffmpeg-user <at> mplayerhq.hu mailing list or IRC #ffmpeg on irc.freenode.net.
Include the log file "config.err" produced by configure as this will help
solving the problem. |
Last bit of config.err looks like this:
| : |
gcc -pipe -force_cpusubtype_ALL -Wno-sign-compare -fomit-frame-pointer -c -o /tmp/ffmpeg-conf-6187-11713-17843.o /tmp/ffmpeg-conf-31189-11713-29063.c
gcc -Wl,-dynamic,-search_paths_first -o /tmp/ffmpeg-conf-23808-11713-23563 /tmp/ffmpeg-conf-6187-11713-17843.o -lz -lbz2 -lm -lfaac -lfaad
check_lib lame/lame.h lame_init -lmp3lame -lm
check_header lame/lame.h
check_cpp
BEGIN /tmp/ffmpeg-conf-31189-11713-29063.c
1 #include <lame/lame.h>
2 int x;
END /tmp/ffmpeg-conf-31189-11713-29063.c
gcc -pipe -force_cpusubtype_ALL -Wno-sign-compare -fomit-frame-pointer -E -o /tmp/ffmpeg-conf-6187-11713-17843.o /tmp/ffmpeg-conf-31189-11713-29063.c
/tmp/ffmpeg-conf-31189-11713-29063.c:1:23: error: lame/lame.h: No such file or directory
ERROR: LAME not found
|
What am I doing wrong?
|
| exekutive posted 2008 May 23 01:36 |
OK looks like I just had to put the lame.h include file in a lame subdir.
Now I get a new error during the make.
| : |
make(20468) malloc: *** vm_allocate(size=4272963584) failed (error code=3)
make(20468) malloc: *** error: can't allocate region
make(20468) malloc: *** set a breakpoint in szone_error to debug
make: *** virtual memory exhausted. Stop. |
I knew this wouldn't be easy.
|
| exekutive posted 2008 May 23 02:25 |
Upgraded 'make' from 3.80 to 3.81 and it works now.
|
| exekutive posted 2008 May 26 00:33 |
The 'make' did not finish and gave an error:
| : |
In file included from libavcodec/i386/idct_mmx.c:25:
libavcodec/i386/mmx.h:24:2: warning: #warning Everything in this header is deprecated, use plain asm()! New code using this header will be rejected.
gcc -DHAVE_AV_CONFIG_H -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_ISOC9X_SOURCE -I"/ffmpeg" -I"/ffmpeg" -pipe -force_cpusubtype_ALL -Wno-sign-compare -fomit-frame-pointer -g -Wdeclaration-after-statement -Wall -Wno-switch -Wdisabled-optimization -Wpointer-arith -Wredundant-decls -Wno-pointer-sign -Wcast-qual -Wwrite-strings -O3 -fno-math-errno -c -o libavcodec/i386/dsputilenc_mmx.o libavcodec/i386/dsputilenc_mmx.c
gcc -DHAVE_AV_CONFIG_H -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_ISOC9X_SOURCE -I"/ffmpeg" -I"/ffmpeg" -pipe -force_cpusubtype_ALL -Wno-sign-compare -fomit-frame-pointer -g -Wdeclaration-after-statement -Wall -Wno-switch -Wdisabled-optimization -Wpointer-arith -Wredundant-decls -Wno-pointer-sign -Wcast-qual -Wwrite-strings -O3 -fno-math-errno -c -o libavcodec/i386/cavsdsp_mmx.o libavcodec/i386/cavsdsp_mmx.c
libavcodec/i386/cavsdsp_mmx.c: In function 'ff_put_cavs_qpel8_mc01_3dnow':
libavcodec/i386/cavsdsp_mmx.c:448: error: can't find a register in class 'GENERAL_REGS' while reloading 'asm'
make: *** [libavcodec/i386/cavsdsp_mmx.o] Error 1 |
I did not disable MMX. Does anyone know whether it should or not on a 1st gen macbook pro?
|
| exekutive posted 2008 Jun 01 23:12 |
Success!
I just took out the --enable-shard switch and ffmpeg compiled without error.
Now I am able to encode my own WMA files!
|
| Case posted 2008 Jun 01 23:37 |
Good job, impressive! Any idea what ability you loose by taking out --enable-shard ?
|
| exekutive posted 2008 Jun 01 23:44 |
| Case : |
| Good job, impressive! Any idea what ability you loose by taking out --enable-shard ? |
No clue. I was going by trial-and-error.
Hopefully someone more knowledgeable can answer that question.
|
.