<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta content="text/html;charset=UTF-8" http-equiv="Content-Type">
  <title></title>
</head>
<body bgcolor="#ffffff" text="#000000">
you're the coolest!<br>
<br>
-demetrius<br>
<br>
James Salsman wrote:
<blockquote
 cite="mid:a3c2bd6c0903112309q967547o703927d1ad9ff777@mail.gmail.com"
 type="cite">
  <pre wrap="">This is resolved:

apt-get remove libspeex-dev
cd ~/src/speex-1.2rc1/
./configure --prefix=/usr
make; make install
cd ../ffmpeg
./configure --enable-libspeex
make; make install

worked; then I was able to decode a Speex .flv file:

~/flvs$ ffmpeg -i SpeexQ6R16Efalse.flv foo.wav
FFmpeg version SVN-r17174, Copyright (c) 2000-2009 Fabrice Bellard, et al.
  configuration: --enable-libspeex --enable-libamr-nb --enable-nonfree
  libavutil     49.14. 0 / 49.14. 0
  libavcodec    52.15. 0 / 52.15. 0
  libavformat   52.27. 0 / 52.27. 0
  libavdevice   52. 1. 0 / 52. 1. 0
  built on Mar 11 2009 22:09:20, gcc: 4.2.4 (Ubuntu 4.2.4-1ubuntu3)
[flv @ 0xa02e330]Could not find codec parameters (Video: 0x0000)
Input #0, flv, from 'SpeexQ6R16Efalse.flv':
  Duration: 00:00:07.24, start: 0.000000, bitrate: N/A
    Stream #0.0: Video: 0x0000, 1000.00 tb(r)
    Stream #0.1: Audio: libspeex, 16000 Hz, mono, s16
Output #0, wav, to 'foo.wav':
    Stream #0.0: Audio: pcm_s16le, 16000 Hz, mono, s16, 256 kb/s
Stream mapping:
  Stream #0.1 -&gt; #0.0
[libspeex @ 0xa037ae0]Missing Speex header, assuming defaults.
Press [q] to stop encoding
size=     228kB time=7.28 bitrate= 256.0kbits/s
video:0kB audio:228kB global headers:0kB muxing overhead 0.018887%

~/flvs$ file foo.wav
foo.wav: RIFF (little-endian) data, WAVE audio, Microsoft PCM, 16 bit,
mono 16000 Hz

and I am able to play that .wav file as audio correctly.


On Wed, Mar 11, 2009 at 10:52 PM, James Salsman <a class="moz-txt-link-rfc2396E" href="mailto:jsalsman@gmail.com">&lt;jsalsman@gmail.com&gt;</a> wrote:
  </pre>
  <blockquote type="cite">
    <pre wrap="">I am having trouble compiling ffmpeg to support speex, which didn't
work with the ubuntu libspeex-dev package, but looks like it might
with the Speex version 1.2rc1 tarball from <a class="moz-txt-link-freetext" href="http://speex.org/downloads/">http://speex.org/downloads/</a>

How do I tell ffmpeg's configure and/or make to use the 1.2rc1 version
of libspeex in /usr/local/include instead of the older debian/ubuntu
libspeex-dev package in /usr/include/speex?

At present, here is where I am stuck:

~/src/ffmpeg$ make
gcc -L"/home/jsalsman/src/ffmpeg"/libavdevice
-L"/home/jsalsman/src/ffmpeg"/libavformat
-L"/home/jsalsman/src/ffmpeg"/libavcodec
-L"/home/jsalsman/src/ffmpeg"/libavutil -rdynamic -export-dynamic
-Wl,--warn-common -Wl,--as-needed
-Wl,-rpath-link,"/home/jsalsman/src/ffmpeg"/libpostproc
-Wl,-rpath-link,"/home/jsalsman/src/ffmpeg"/libswscale
-Wl,-rpath-link,"/home/jsalsman/src/ffmpeg"/libavfilter
-Wl,-rpath-link,"/home/jsalsman/src/ffmpeg"/libavdevice
-Wl,-rpath-link,"/home/jsalsman/src/ffmpeg"/libavformat
-Wl,-rpath-link,"/home/jsalsman/src/ffmpeg"/libavcodec
-Wl,-rpath-link,"/home/jsalsman/src/ffmpeg"/libavutil -Wl,-Bsymbolic
-o ffmpeg_g ffmpeg.o cmdutils.o -lavdevice -lavformat -lavcodec
-lavutil -lm -lamrnb -lm -lspeex -ldl -ldl
/home/jsalsman/src/ffmpeg/libavcodec/libavcodec.a(libspeexdec.o): In
function `libspeex_decode_close':
/home/jsalsman/src/ffmpeg/libavcodec/libspeexdec.c:127: undefined
reference to `speex_header_free'
collect2: ld returned 1 exit status
make: *** [ffmpeg_g] Error 1

~/src/ffmpeg$ grep speex_header_free /usr/include/speex/*
[no matches]

~/src/ffmpeg$ ls -l /usr/include/speex/
total 76
...
-rw-r--r-- 1 root root 13179 2008-05-07 14:14 speex.h
-rw-r--r-- 1 root root  3720 2008-05-07 14:14 speex_header.h
-rw-r--r-- 1 root root  4456 2008-05-07 14:14 speex_jitter.h
-rw-r--r-- 1 root root  6147 2008-05-07 14:14 speex_preprocess.h
-rw-r--r-- 1 root root  3190 2008-05-07 14:14 speex_stereo.h
-rw-r--r-- 1 root root  4355 2008-05-07 14:14 speex_types.h

I got the speex-1.2rc1 tarball from <a class="moz-txt-link-freetext" href="http://speex.org/downloads/">http://speex.org/downloads/</a> and
./configure, make, and sudo make install worked fine, placing a
different (and slightly larger) version of the headers in
/usr/local/include/speex/:

~/src/ffmpeg$ grep speex_header_free /usr/local/include/speex/*
/usr/local/include/speex/speex_header.h:void speex_header_free(void *ptr);

Now again, how do I tell ffmpeg's configure and/or make to use the
1.2rc1 version of libspeex in /usr/local/include instead of the older
debian/ubuntu libspeex-dev package in /usr/include/speex?


Background:  It turned out that in order to build ffmpeg with
./configure --enable-libspeex, I apparently needed the debian/ubuntu
package called libspeex-dev. There doesn't seem to be any
documentation hinting at this, and configuring without that package
fails without a really useful or explicit error message to help solve
the problem; please see the transcript excerpts below.

This thread was particularly useful:
 <a class="moz-txt-link-freetext" href="http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/2008-October/thread.html#55124">http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/2008-October/thread.html#55124</a>

~/src/ffmpeg$ ./configure --enable-libspeex
ERROR: libspeex 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
<a class="moz-txt-link-abbreviated" href="mailto:ffmpeg-user@mplayerhq.hu">ffmpeg-user@mplayerhq.hu</a> 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.

~/src/ffmpeg$ sudo apt-get install libspeex
Reading package lists... Done
Building dependency tree
Reading state information... Done
Package libspeex is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source
However the following packages replace it:
 libspeex1
E: Package libspeex has no installation candidate

~/src/ffmpeg$ sudo apt-get install libspeex1
Reading package lists... Done
Building dependency tree
Reading state information... Done
Suggested packages:
 speex
The following NEW packages will be installed:
 libspeex1
0 upgraded, 1 newly installed, 0 to remove and 10 not upgraded.
Need to get 0B/75.3kB of archives.
After this operation, 184kB of additional disk space will be used.
Selecting previously deselected package libspeex1.
(Reading database ... 22077 files and directories currently installed.)
Unpacking libspeex1 (from .../libspeex1_1.1.12-3ubuntu0.8.04.1_i386.deb) ...
Setting up libspeex1 (1.1.12-3ubuntu0.8.04.1) ...

Processing triggers for libc6 ...
ldconfig deferred processing now taking place

~/src/ffmpeg$ ./configure --enable-libspeex
ERROR: libspeex 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
<a class="moz-txt-link-abbreviated" href="mailto:ffmpeg-user@mplayerhq.hu">ffmpeg-user@mplayerhq.hu</a> 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.

~/src/ffmpeg$ grep -i speex !!$
grep -i speex config.err
# ./configure --enable-libspeex
   libspeex
   libspeex
libspeex_decoder'
FFMPEG_CONFIGURATION='--enable-libspeex'
libspeex='yes'
libspeex_decoder='yes'
libspeex_decoder_deps='libspeex'
opt='--enable-libspeex'
option='libspeex'
optval='--enable-libspeex'
var='libspeex'
check_lib speex/speex.h speex_decoder_init -lspeex
check_header speex/speex.h
   1   #include &lt;speex/speex.h&gt;
/tmp/ffmpeg-conf--17548-.c:1:25: error: speex/speex.h: No such file or directory
ERROR: libspeex not found

~/src/ffmpeg$ sudo apt-get install libspeex-dev
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following NEW packages will be installed:
 libspeex-dev
0 upgraded, 1 newly installed, 0 to remove and 10 not upgraded.
Need to get 92.8kB of archives.
After this operation, 324kB of additional disk space will be used.
Get:1 <a class="moz-txt-link-freetext" href="http://us.archive.ubuntu.com">http://us.archive.ubuntu.com</a> hardy-updates/main libspeex-dev
1.1.12-3ubuntu0.8.04.1 [92.8kB]
Fetched 92.8kB in 1s (76.0kB/s)
Selecting previously deselected package libspeex-dev.
(Reading database ... 22083 files and directories currently installed.)
Unpacking libspeex-dev (from
.../libspeex-dev_1.1.12-3ubuntu0.8.04.1_i386.deb) ...
Setting up libspeex-dev (1.1.12-3ubuntu0.8.04.1) ...

~/src/ffmpeg$ ./configure --enable-libspeex
install prefix            /usr/local
....

~/src/ffmpeg$ make
gcc -DHAVE_AV_CONFIG_H -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -I.
-I"/home/jsalsman/src/ffmpeg" -D_ISOC99_SOURCE
-D_POSIX_C_SOURCE=200112 -std=c99 -fomit-frame-pointer -g
-Wdeclaration-after-statement -Wall -Wno-switch
-Wdisabled-optimization -Wpointer-arith -Wredundant-decls
-Wno-pointer-sign -Wcast-qual -Wwrite-strings -Wundef -O3
-fno-math-errno      -MM -MG libavcodec/libspeexdec.c | sed -e
"/^#.*/d" -e "s,^[[:space:]]*libspeexdec\.o,libavcodec/libspeexdec.o,"
-e "s,\([[:space:]]\)\(version\.h\),\1\$(BUILD_ROOT_REL)/\2," &gt;
libavcodec/libspeexdec.d
....
(see eventual error above:
"...src/ffmpeg/libavcodec/libavcodec.a(libspeexdec.o): In function
`libspeex_decode_close':
/home/jsalsman/src/ffmpeg/libavcodec/libspeexdec.c:127: undefined
reference to `speex_header_free')


On Wed, Mar 11, 2009 at 7:14 PM, Keith Kyzivat <a class="moz-txt-link-rfc2396E" href="mailto:kkyzivat@sipez.com">&lt;kkyzivat@sipez.com&gt;</a> wrote:
    </pre>
    <blockquote type="cite">
      <pre wrap="">I'm quite sure you won't find an answer to the first question here, you'll
have to ask in some Adobe-Flash centric forums.
As for the second question, once you have a file with speex audio, you can
use speexdec (included in speex distribution) to convert it to a PCM Wave
file (*.wav), or a raw PCM file.

On Wed, Mar 11, 2009 at 4:51 PM, James Salsman <a class="moz-txt-link-rfc2396E" href="mailto:jsalsman@gmail.com">&lt;jsalsman@gmail.com&gt;</a> wrote:
      </pre>
      <blockquote type="cite">
        <pre wrap="">I am having trouble converting a .flv file uploaded from Adobe Flex /
Flash Player 10 to a Red5 server using the speex coder:

<a class="moz-txt-link-freetext" href="http://livedocs.adobe.com/flex/3/langref/flash/media/Microphone.html">http://livedocs.adobe.com/flex/3/langref/flash/media/Microphone.html</a>

<a class="moz-txt-link-freetext" href="http://jira.red5.org/confluence/display/codecs/Speex+Codec">http://jira.red5.org/confluence/display/codecs/Speex+Codec</a>

Questions:

1. How do I extract the audio track out of such a .flv file?

2. How do I convert it from Speex to .wav PCM?

Thanks.
_______________________________________________
Speex-dev mailing list
<a class="moz-txt-link-abbreviated" href="mailto:Speex-dev@xiph.org">Speex-dev@xiph.org</a>
<a class="moz-txt-link-freetext" href="http://lists.xiph.org/mailman/listinfo/speex-dev">http://lists.xiph.org/mailman/listinfo/speex-dev</a>
        </pre>
      </blockquote>
    </blockquote>
    <pre wrap="">(cross-posted to ffmpeg-user)

    </pre>
  </blockquote>
  <pre wrap=""><!---->
  </pre>
</blockquote>
<br>
</body>
</html>