GNU/Linux >> Belajar Linux >  >> Linux

Perintah Linux untuk menggabungkan file audio dan mengeluarkannya ke ogg

SoX dapat menangani sejumlah besar format audio, bergantung pada pustaka apa yang dikompilasi, dan dapat menggabungkan file dengan baris perintah sederhana

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

Saya yakin ini hanya berfungsi jika semua file audio sumber memiliki jumlah saluran yang sama, tetapi saya belum mengujinya.

Sejauh yang saya tahu, SoX tidak memiliki dukungan untuk file .wma, jadi mengonversi setidaknya file tersebut dengan sesuatu seperti ffmpeg terlebih dahulu mungkin tidak dapat dihindari.

ffmpeg -i infile.wma outfile.wav

Inilah saran saya:Gunakan mplayer dan oggenc terhubung dengan pipa bernama.

  • Gunakan mplayer untuk memecahkan kode audio. Ini dapat memutar ulang berbagai format audio (dan video), dan juga dapat memutar banyak file.

  • Gunakan oggenc untuk menyandikan audio ke Ogg Vorbis.

  • Untuk menghilangkan kebutuhan akan file sementara, gunakan pipa bernama untuk mentransfer data antara pembuat enkode dan dekoder.

Memasukkannya ke dalam skrip:

#!/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"

Dijelaskan:

  1. Ambil nama file tujuan dari parameter baris perintah pertama.
  2. Hapus parameter baris perintah pertama, hanya menyisakan nama file sumber.
  3. Buat nama pipa untuk dibaca oleh oggenc.
  4. Buat nama pipa untuk ditulisi mplayer
  5. Buat pipa.
  6. Gunakan cat untuk membuang pipa tulis ke pipa baca secara terus-menerus (ini membantu menghindari masalah di mana mplayer dapat dihentikan, tetapi mencegah oggenc berpikir bahwa ini sudah selesai saat ini terjadi)
  7. Mendekodekan audio dari file sumber menggunakan mplayer. Opsi -really-quiet -slave -nolirc apakah ada untuk menonaktifkan pesan dan membuatnya tidak membaca keyboard atau remote. Opsi -vc null -vo null apakah ada untuk menonaktifkan penyandian dan keluaran video. -ao opsi mengarahkannya untuk mengeluarkan audio dalam format WAV ke pipa tulis bernama.
  8. Saat perintah sebelumnya berjalan, enkodekan secara bersamaan dari pipa baca bernama ke Ogg menggunakan oggenc.
  9. Hapus pipa bernama.

Hal-hal ke kiri untuk ditingkatkan:Mengakhiri skrip lebih awal jika salah satu perintah gagal (gunakan set -e ), tetapi masih membersihkan fifo dengan benar (memerangkap sinyal yang diperlukan).


Saya akan menggunakan ffmpeg. Untuk mengonversi wma ke ogg vorbis coba:

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

atau mp3:

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

Anda perlu menginstal lame untuk konversi mp3. sudo apt-get install lame libmp3lame0

Cat, lalu konversi tampaknya tidak berfungsi dengan baik, meskipun Anda dapat menemukan banyak referensi di web yang mengatakan bahwa Anda dapat melakukan sesuatu seperti cat *.wma | ffmpeg -i - -acodec ... - ini tidak berfungsi di mesin saya - hanya file pertama yang diproses. Ada codec 'salin' untuk ffmpeg, tetapi tidak membuat banyak perbedaan.

Melakukan konversi dengan ffmpeg terlebih dahulu, lalu cat *.ogg> output.ogg berhasil untuk saya.


Linux
  1. Temukan file dan direktori di Linux dengan perintah find

  2. Konversi file audio dengan perintah Linux serbaguna ini

  3. 10 Contoh Perintah DU Linux (Ukuran Penggunaan Disk File dan Folder)

  1. Linux – Disimpan Di File /dev/pts Dan Bisakah Kita Membukanya?

  2. Perintah Linux ls - Daftar File

  3. Perintah mcopy di Linux

  1. Temukan Perintah di Linux (Temukan File dan Direktori)

  2. Perintah Ls di Linux (Daftar File dan Direktori)

  3. Temukan banyak file dan ganti namanya di Linux