Ubuntu 10.04でffmpegコンパイルのコメントで、libmp3lame を使う為に ffmpeg をコンパイルしようとされている方がおられた。
しかし、、前回テストした時に、パッケージのffmpeg も libmp3lame が使えていたはずで、果たしてコンパイルが必要なのか?が気になったので、VirtualBoxにUbuntu 10.04を入れてインストールテストしてみた。
Synapticパッケージマネージャで ffmpeg をインストール指定。
ffmpeg に依存するパッケージをSynapticパッケージマネージャで unstripped をキーワードに検索して指定する
libavcodec-unstripped-52 (これを指定すると libmp3lame0がインストールされる)
libavdevice-unstripped-52
libavfilter-unstripped-0
libavformat-unstripped-52
libavutil-unstripped-49
libpostproc-unstripped-51
libswscale-unstripped-0
全部指定して「適用」を実行すると、ffmpegの他、次のパッケージがインストールされる。
インストールが完了したら、
noizumi@noizumi-desktop:~/share$ ffmpeg -formats |grep mp3
FFmpeg version SVN-r0.5.1-4:0.5.1-1ubuntu1, Copyright (c) 2000-2009 Fabrice Bellard, et al.
configuration: –extra-version=4:0.5.1-1ubuntu1 –prefix=/usr –enable-avfilter –enable-avfilter-lavf –enable-vdpau –enable-bzlib –enable-libgsm –enable-libschroedinger –enable-libspeex –enable-libtheora –enable-libvorbis –enable-pthreads –enable-zlib –disable-stripping –disable-vhook –enable-runtime-cpudetect –enable-gpl –enable-postproc –enable-swscale –enable-x11grab –enable-libdc1394 –enable-shared –disable-static
libavutil 49.15. 0 / 49.15. 0
libavcodec 52.20. 1 / 52.20. 1
libavformat 52.31. 0 / 52.31. 0
libavdevice 52. 1. 0 / 52. 1. 0
libavfilter 0. 4. 0 / 0. 4. 0
libswscale 0. 7. 1 / 0. 7. 1
libpostproc 51. 2. 0 / 51. 2. 0
built on Mar 4 2010 12:35:30, gcc: 4.4.3
DE mp3 MPEG audio layer 3
EA libmp3lame libmp3lame MP3 (MPEG audio layer 3)
D A mp3 MP3 (MPEG audio layer 3)
D A mp3adu ADU (Application Data Unit) MP3 (MPEG audio layer 3)
D A mp3on4 MP3onMP4
text2movsub remove_extra noise mov2textsub mp3decomp mp3comp mjpegadump imxdump h264_mp4toannexb dump_extra
noizumi@noizumi-desktop:~/share$
–enable-libmp3lame が有効になっていなくても、コーデックに libmp3lame が使用できるようになるようだ。
試しに mpeg1、mp2の動画ファイルの音声をmp3に変換してみると、
noizumi@noizumi-desktop:~/share$ ffmpeg -i bl25.mpg -vcodec copy -acodec libmp3lame -ab 128k test.mpg
…
Input #0, mpeg, from ‘bl25.mpg’:
Duration: 00:28:26.29, start: 0.500000, bitrate: 3804 kb/s
Stream #0.0[0x1e0]: Video: mpeg1video, yuv420p, 1280×720 [PAR 1:1 DAR 16:9], 104857 kb/s, 29.97 tbr, 90k tbn, 29.97 tbc
Stream #0.1[0x1c0]: Audio: mp2, 44100 Hz, stereo, s16, 128 kb/s
Output #0, mpeg, to ‘test.mpg’:
Stream #0.0: Video: mpeg1video, yuv420p, 1280×720 [PAR 1:1 DAR 16:9], q=2-31, 104857 kb/s, 90k tbn, 29.97 tbc
Stream #0.1: Audio: libmp3lame, 44100 Hz, stereo, s16, 128 kb/s
無事変換できて、プロパティで確認すると、ちゃんとmp3になっていた。
Xvidエンコードテスト
$ ffmpeg -i bl25.mpg -vcodec libxvid -acodec libmp3lame -ab 128k test.avi
はOK。
libfaac0パッケージを入れてH.264のAACエンコードテスト
$ ffmpeg -i bl25.mpg -vcodec libx264 -vpre hq -acodec libfaac -ab 128k test.mp4
…
Unknown encoder ‘libfaac’
はダメ。
今流行りのH.264、AACのMP4のファイルを作ろうとすると、–enable-libfaac 付きでコンパイルしないと使えないようだ。
こんにちは、TKです。
早速の検証ありがとうございます。
上記のとおり操作・設定しましたら
Synapticパッケージマネージャで インストールしたFFmpegでの録画できました!
Synapticパッケージマネージャで インストールしたFFmpegは「/usr/bin」で
後からインストールしたFFmpegは「/usr/local/bin」だったので
間違いなくSynapticでインストールした方で録画できていると思います。
本当にありがとうございます。
TKさんこんばんは。
> Synapticパッケージマネージャで インストールしたFFmpegは「/usr/bin」で
> 後からインストールしたFFmpegは「/usr/local/bin」だったので
> 間違いなくSynapticでインストールした方で録画できていると思います。
規定の設定だと、/usr/bin より /usr/local/bin が優先されるので、野良ビルドした方が動きます。which コマンドでどちらが使われているか分かります。
noizumi@purplecat:~$ which ffmpeg
/usr/local/bin/ffmpeg
なので、ffmpeg のソースディレクトリで、
sudo make uninstall
と、野良ビルドした ffmpeg を削除しないと、パッケージ版は使われないと思います。
お返事ありがとうございます。
which ffmpegとしたら、やはり/usr/local/bin/ffmpegとなっていました。
アンインストールしようと思い、下記を実行したのですが
@Ubuntu:/usr/local/bin$ sudo make uninstall
make: *** ターゲット `uninstall’ を make するルールがありません. 中止.
と、なってしまうのですが・・・またコマンドの書き方が間違ってますか?
sudo make uninstallについてちょっと調べてみたら
./configure
make
sudo make install
を行ったディレクトリから行うと分かりました。
私の場合、ホームディレクトリの中にFFmpegディレクトリがあるので
端末で移動してsudo make uninstallを実行したところ
@Ubuntu:~/ffmpeg$ sudo make uninstall
rmdir “/usr/local/include”
rmdir:
/usr/local/include' を削除できませんでした: Directory not empty
/usr/local/include’ を削除できませんでした: Directory not emptymake: [uninstall-headers] エラー 1 (無視されました)
rmdir "/usr/local/include"
rmdir:
make: [uninstall-headers] エラー 1 (無視されました)
rmdir “/usr/local/include”
rmdir:
/usr/local/include' を削除できませんでした: Directory not empty
/usr/local/include’ を削除できませんでした: Directory not emptymake: [uninstall-headers] エラー 1 (無視されました)
rmdir "/usr/local/include"
rmdir:
make: [uninstall-headers] エラー 1 (無視されました)
rmdir “/usr/local/include”
rmdir:
/usr/local/include' を削除できませんでした: Directory not empty
/usr/local/include’ を削除できませんでした: Directory not emptymake: [uninstall-headers] エラー 1 (無視されました)
rmdir "/usr/local/include"
rmdir:
make: [uninstall-headers] エラー 1 (無視されました)
となって終了しました。
続いて、下記コマンドを実行すると
@Ubuntu:~$ which ffmpeg
/usr/bin/ffmpeg
となりました。
これでよろしいのでしょうか?
追記、
上記でよろしければ、録画のほうも問題なくできました。
sudo make uninstall は ffmpeg のソースディレクトリで行うので、 TK さんが行われた手順で大丈夫ですよ。