Ubuntu Karmicへの.amrサポートの追加

Nokiaは、 amr形式のボイスレコーダーを携帯します。

魅力的なUbuntu Karmicにワイヤーで電話を接続し、長い骨の折れるメンタルワークによって指示されたオーバーフロー...

そして、予想外の悪夢が私たちを待っています。 これらのファイルのコーデックはインストールされていないだけでなく、gstreamerのコーデック検索ユーティリティ(多くの場合、「めちゃくちゃになってしまう」)を使用して見つけることもできません。

さらに、ネットワーク上で「そのようなパッケージを配信し、それだけですべてを配信する」という精神での迅速な方法はありませんでした。 リポジトリにはlibopencore-amrnb0およびlibopencore-amrwb0パッケージがありますが、それらに依存するパッケージはありません。つまり、デフォルトではこれらのライブラリを使用できるプレーヤーはありません。



したがって、UbuntuもLinuxです。 したがって、このすべての不名誉は手で支配されます。



  1. 一度やってください。 Amrサポートは、実際にはffmpegで行われます。 しかし、いくつかの(明らかに著作権上の)理由でUbuntuの人たちは、パッケージをビルドするときにそれを含めませんでした。

    私たちの祖国ではライセンス違反が誰も止めていないので、パッケージをより正しく再構築しますか?

    ソースをダウンロード:

    $ cd / usr / src

    $ apt-get source ffmpeg

    $ cd ffmpeg-0.5 + svn20090706 /



    debian/confflags



    は、標準のリポジトリにはないライブラリのコンテキストでamrが言及されています。

    confflags + = $(cond_enable_nf、/ usr / include / amrnb / sp_dec.h、libamr-nbを呼び出します)

    confflags + = $(cond_enable_nf、/ usr / include / amrwb / dec.h、libamr-wbを呼び出します)



    ここで、 cond_enable_nf



    マクロcond_enable_nf



    、各フリーでないライブラリのヘッダーの可用性に基づいて、configureに必要なフラグを設定します。 configure -h



    を調べたところ、可能なフラグのリストに次のように表示されconfigure -h





    --enable-libamr-nb libamr-nb浮動小数点オーディオコーデックを有効にする[no]

    --enable-libamr-wb libamr-wb浮動小数点オーディオコーデックを有効にする[no]

    --enable-libopencore-amrnb libopencore-amrnbによるAMR-NB de / encodingの有効化[no]

    --enable-libopencore-amrwb libopencore-amrwbによるAMR-WBデコードを有効にします[no]



    つまり、opencoreのライブラリは引き続きffmpegに接続できます。
  2. アセンブリのライブラリをインストールします。

    ここではすべてが些細なことです-コンパイルに必要な* -devパッケージとamrのライブラリを取り出します(2つあり、どちらが必要かを理解するのが面倒でした-おそらく2番目のパッケージも将来役に立つかもしれません):

    $ sudo apt-get build-dep ffmpeg

    $ sudo apt-get install libopencore-amrnb libopencore-amrnb-dev libopencore-amrwb libopencore-amrwb-dev

  3. ffmpegのパッケージアセンブリアルゴリズムを修正する

    opencoreのamrライブラリをdebian / confflagsファイルに追加します。

    confflags + = $(cond_enable_nf、/ usr / include / amrnb / sp_dec.h、libamr-nbを呼び出します)

    confflags + = $(cond_enable_nf、/ usr / include / amrwb / dec.h、libamr-wbを呼び出します)

    confflags + = $(cond_enable_nf、/ usr / include / opencore-amrnb / interf_dec.h、libopencore-amrnbを呼び出します)

    confflags + = $(cond_enable_nf、/ usr / include / opencore-amrwb / dec_if.h、libopencore-amrwbを呼び出します)



    今、すべてが一緒に来なければなりません。
  4. 更新されたffmpegを収集します。

    $ dpkg-buildpackage -rfakeroot -uc -b


    fakeroot( -rfakeroot



    )を使用してバイナリパッケージ( -b



    )のみをビルドし、変更に署名しません( -uc



    )。

    / usr / srcへの出力は、再コンパイルされたパッケージの全体の束になります。
  5. 発生したすべてをインストールします。

    $ sudo dpkg -i /usr/src/*.deb



    (インストールする必要のないパッケージがまだある場合、私は責任を負いません。)
  6. ffmpegにamrサポートがある場合、すべてがすべてをサポートしているかどうかを確認します。

    $ ffmpeg -version | grep amr


    結果の長いソーセージに部分--enable-libopencore-amrnb --enable-nonfree --enable-libopencore-amrwb --enable-nonfree



    場合、すべてがうまくいきました。
  7. ファイルを再生します。

    現在、ファイルは通常ffplay



    を使用してffplay



    ます。 gstreamer0.10-ffmpeg



    ffmpegを介してgstreamer0.10-ffmpeg



    (たとえば、Exaile)を使用するプレーヤーは、引き続きコーデックを見つけられません。 私はまだこれで何をすべきかを理解していないので、一時的な対策として、すべての.amr



    ファイルを単に.ogg



    追い抜くことに決めました。
  8. スクリプトトランスコーダーを作成しています。

    適切な場所のどこかに(私は/usr/local/bin



    が好きです)amr2oggファイルを作成し、それにrwxr-xr-x



    権利と所有者root:rootを与えます。

    #!/ bin / sh

    ffmpeg -i "$ 1" "` echo "$ 1" | sed s / amr $ / ogg / `"



次に、スクリプトを使用してopen * .amrファイルを公開します。 すべての準備ができました。ソースファイルの横をダブルクリックすると、何でも再生できる同じ名前のoggが作成されます。






この投稿では、UbuntuはMS WindowsよりもGentooにまだまだ近いことを多くの人に思い出させたいと思います。そして、それを望む誰でもコードをデバッグして再構築する余地を残しています。




All Articles