GNU/Linux >> Linux の 問題 >  >> Linux

オーディオ ファイルを連結して ogg に出力する Linux コマンド

SoX は、コンパイル対象のライブラリに応じて多数のオーディオ形式を処理でき、単純なコマンド ラインでファイルを連結できます

sox file1.wav file2.mp3 file3.flac outfile.ogg

これは、ソース オーディオ ファイルがすべて同じ数のチャンネルを持っている場合にのみ機能すると思いますが、これはテストしていません。

私の知る限り、SoX は .wma ファイルをまったくサポートしていないため、少なくともこれらのファイルを最初に ffmpeg などで変換することはおそらく避けられません。

ffmpeg -i infile.wma outfile.wav

これが私の提案です:mplayer と oggenc を使用してください 名前付きパイプで接続されています。

  • mplayer を使用 さまざまなオーディオ (およびビデオ) 形式を再生でき、複数のファイルを再生することもできます。

  • oggenc を使用 音声を Ogg Vorbis にエンコードします。

  • 一時ファイルの必要性をなくすには、名前付きパイプを使用してエンコーダとデコーダの間でデータを転送します。

それをスクリプトに入れる:

#!/bin/sh
# Usage: ./combine2ogg destination.ogg source1.wma source2.wma ...
# Requires: mplayer, oggenc
destination="$1"
shift
readpipe="$destination.tmpr"
writepipe="$destination.tmpw"
mkfifo "$readpipe"
mkfifo "$writepipe"
cat "$writepipe" > "$readpipe" &
mplayer -really-quiet -slave -nolirc -vc null -vo null -ao "pcm:fast:file=$writepipe" "[email protected]" &
oggenc --quiet -o "$destination" "$readpipe"
rm -f "$readpipe"
rm -f "$writepipe"

説明:

<オール>
  • 最初のコマンド ライン パラメータから宛先ファイル名を取得します。
  • ソース ファイル名のみを残して、最初のコマンド ライン パラメータを削除します。
  • oggenc が読み取るパイプの名前を作成します。
  • mplayer が書き込むパイプの名前を作成する
  • パイプを作成します。
  • cat を使用して、writepipe を readpipe に継続的にダンプします (これにより、mplayer が終了する可能性がある問題を回避できますが、これが発生したときに oggenc が終了したと考えるのを防ぐことができます)
  • mplayer を使用してソース ファイルからオーディオをデコードします。オプション -really-quiet -slave -nolirc メッセージを無効にし、キーボードやリモコンを読み取らないようにするためにあります。オプション -vc null -vo null ビデオのエンコードと出力を無効にするためにあります。 -ao オプションは、オーディオを WAV 形式で名前付き書き込みパイプに出力するように指示します。
  • 前のコマンドの実行中に、oggenc を使用して名前付き読み取りパイプから Ogg に同時にエンコードします。
  • 名前付きパイプを削除します。
  • 改善すべき点:コマンドの 1 つが失敗した場合にスクリプトを早期に終了する (set -e を使用) )、それでも適切に fifo をクリーンアップします (必要なシグナルをトラップします)。


    私はffmpegを使用します。 wma を ogg vorbis に変換するには:

    ffmpeg -i sample.wma -acodec vorbis -aq 100 sample.ogg
    

    またはmp3:

    ffmpeg -i input.wma -acodec libmp3lame output.mp3
    

    mp3 変換には lame をインストールする必要があります。 sudo apt-get install lame libmp3lame0

    cat *.wma | ffmpeg -i - -acodec ... のようなことができるという Web 上の参考文献をたくさん見つけることができますが、Cat, then convert はうまく機能していないようです。 - これは私のマシンでは機能しません - 最初のファイルだけが処理されます。 ffmpeg 用の「コピー」コーデックがありますが、大きな違いはありません。

    最初に ffmpeg で変換を行うと、 cat *.ogg> output.ogg が機能しました。


    Linux
    1. findコマンドを使用してLinux上のファイルとディレクトリを検索します

    2. この用途の広いLinuxコマンドでオーディオファイルを変換する

    3. Linux で複数のファイルを見つけて名前を変更する

    1. Linux – / dev / ptsファイルに保存されており、それらを開くことはできますか?

    2. Linux ls コマンド - ファイルの一覧表示

    3. 10 Linux DU コマンドの例 (ファイルとフォルダーのディスク使用サイズ)

    1. Linuxでのコマンドの検索(ファイルとディレクトリの検索)

    2. LinuxでのLsコマンド(ファイルとディレクトリのリスト)

    3. Linux の mcopy コマンド