魅力的なUbuntu Karmicにワイヤーで電話を接続し、長い骨の折れるメンタルワークによって指示されたオーバーフロー...
そして、予想外の悪夢が私たちを待っています。 これらのファイルのコーデックはインストールされていないだけでなく、gstreamerのコーデック検索ユーティリティ(多くの場合、「めちゃくちゃになってしまう」)を使用して見つけることもできません。
さらに、ネットワーク上で「そのようなパッケージを配信し、それだけですべてを配信する」という精神での迅速な方法はありませんでした。 リポジトリにはlibopencore-amrnb0およびlibopencore-amrwb0パッケージがありますが、それらに依存するパッケージはありません。つまり、デフォルトではこれらのライブラリを使用できるプレーヤーはありません。
したがって、UbuntuもLinuxです。 したがって、このすべての不名誉は手で支配されます。
- 一度やってください。 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に接続できます。 - アセンブリのライブラリをインストールします。
ここではすべてが些細なことです-コンパイルに必要な* -devパッケージとamrのライブラリを取り出します(2つあり、どちらが必要かを理解するのが面倒でした-おそらく2番目のパッケージも将来役に立つかもしれません):
$ sudo apt-get build-dep ffmpeg
$ sudo apt-get install libopencore-amrnb libopencore-amrnb-dev libopencore-amrwb libopencore-amrwb-dev
- 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を呼び出します)
今、すべてが一緒に来なければなりません。 - 更新されたffmpegを収集します。
$ dpkg-buildpackage -rfakeroot -uc -b
fakeroot(-rfakeroot
)を使用してバイナリパッケージ(-b
)のみをビルドし、変更に署名しません(-uc
)。
/ usr / srcへの出力は、再コンパイルされたパッケージの全体の束になります。 - 発生したすべてをインストールします。
$ sudo dpkg -i /usr/src/*.deb
(インストールする必要のないパッケージがまだある場合、私は責任を負いません。) - ffmpegにamrサポートがある場合、すべてがすべてをサポートしているかどうかを確認します。
$ ffmpeg -version | grep amr
結果の長いソーセージに部分--enable-libopencore-amrnb --enable-nonfree --enable-libopencore-amrwb --enable-nonfree
場合、すべてがうまくいきました。 - ファイルを再生します。
現在、ファイルは通常ffplay
を使用してffplay
ます。gstreamer0.10-ffmpeg
ffmpegを介してgstreamer0.10-ffmpeg
(たとえば、Exaile)を使用するプレーヤーは、引き続きコーデックを見つけられません。 私はまだこれで何をすべきかを理解していないので、一時的な対策として、すべての.amr
ファイルを単に.ogg
追い抜くことに決めました。 - スクリプトトランスコーダーを作成しています。
適切な場所のどこかに(私は/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にまだまだ近いことを多くの人に思い出させたいと思います。そして、それを望む誰でもコードをデバッグして再構築する余地を残しています。