オーディオファイルのデコード/スライス/エンコード

素晴らしいユーザー名catdogのリクエストで公開

背景:

メンコーダーを使用してスクリーンショットを撮り、ビデオファイルのプレビューとして使用する方法を知らないプログラマーを見つけることができるようになることはまずありません。 ただし、オーディオファイルのこのようなソリューションはまだ見ていません。その理由は理解できます。ここでは、原則として、ファイル全体を提供するか、コンソールコンバーターでファイルを完全に消化可能な形式につまむことができます。

そして、すべてがうまくいきますが、平均トラック長が6分である場合、カットの作成方法を自由に考えて、ハードドライブ上のサムネイルのサイズを小さくし、ユーザーが素材を聴きやすくします。 昔々、私はこのためにPOCユーティリティのセットを使用していましたが、彼らはmp3でのみ動作し、長さをすばやくカウントし、時間内にそれらをカット/接着する方法を知っていました。 それから私はすぐにこの混乱の周りにラッパーを書いて、しばらくそれを忘れていました。

しかし、新しい時代が訪れ、人々は音楽をflac、monkey audio、その他のロスレス形式でダウンロードし始めました。 はい、mp3自体は時間とともに変化し、しばしば風景写真を追加し始めました。これは大きな問題となり、頻繁にPOCセグフォルトが発生する原因になりました。

それから、一緒に接着するためのPOCユーティリティのセット全体と、mp3用のエンコーダーを組み込むアプリケーションを作成することにしました。

そして今、何が起こったかについて:


recodedはLinux / * BSD / Mac OS向けのコンソールユーティリティで、オーディオファイルのデコード/スライス/エンコードにlibav(ffmpeg)を使用します。 変換用のスクリプトに完全に統合されます。
スライスのためにファイルをフィードし、完成したプレビューを配置する場所を指示するだけです。
libavの使用により、普及しているほぼすべてのオーディオ形式(mp3、ogg、flac、ape、wavなど)のサポートが実現します。

切断は、次のアルゴリズムに従って実行されます。


入手先:

ベータリリース:
myau.su/recoded-0.1.3.tgz
svn co svn://myau.su/recoded/tags/0.1.3 recoded

svnからのトランク:
svn co svn://myau.su/recoded/trunk recoded

組み立て方法:

最初に行うことは、libavを持っていることを確認することです(ffmpegプロジェクトのsvnからlibvを取得することをお勧めします。ディストリビューションでは通常かなり古く、それ以来ライブラリアーキテクチャが変更されているためです)。
ffmpegとlibavをビルドするための小さな推奨事項:
./configure --prefix=/usr --enable-shared --enable-static --enable-libmp3lame --enable-nonfree --enable-gpl
一方で、これにはnonfreeおよびgplコンポーネントが含まれ(その後、ライブラリは再配布不可能になります)、mp3エンコーディングに必要なラメでアセンブリを許可します。

次に、アプリケーション自体のアセンブリに進むことができます(* nixシステムの場合はcmake、mac osの場合はxcode)

Mac OSの場合:
ルートでプロジェクトファイルを開き、cmd + bを押します。

* nixシステムの場合:
cmake .
make


その結果、必要なバインド済みの再コード化を取得します。

コマンドラインオプションと終了コード:

コマンドラインオプション:

終了コード:


使用法:

たとえば、これは次のように実行できます。
./recoded -f input_file.ogg -t out.mp3 -v

出力として、ストリームに関する情報(ある場合)と終了コードを取得します。
Front ring size: 38393856
Samples decoded: 19196928
Samples bytesize: 76787712
Channels: 2
Codec name: MP3 (MPEG audio layer 3)
Sample format: 1
Sample rate: 44100


入力では、任意のオーディオ(ビデオ+オーディオ)ファイルを使用できます。ファイルは拡張子をまったく使用しなくてもかまいません(形式はヘッダーとコンテンツによってlibavライブラリによって推測されます)
出力は常にmp3 44100、ステレオ結合、96kbpsです。 (サンプルレートとビットレートに関係なく、フラッシュのmp3は食べ物に対して選択的であるため、行われました)

著者のコメントとコメント:

これは最初のリリースであり、ベータ版でもアルファ版でもありません。他のリリースよりも早くリリースされます。 開発を加速するためだけに設計されています。 だから誰かがコードを掘り下げたいというアイデアや欲求を持っているなら、あなたは大歓迎です。

Source: https://habr.com/ru/post/J62720/


All Articles