Alat baris perintah apa yang saya perlukan untuk menggabungkan beberapa file audio dan mengeluarkannya sebagai satu ogg (dan / atau mp3)?
Jika Anda dapat memberikan perintah lengkap untuk menyatukan dan output ke ogg, itu akan luar biasa.
Sunting : File input (dalam kasus saya, saat ini) dalam wma
format, tetapi idealnya harus cukup fleksibel untuk mendukung berbagai format populer.
Sunting2 : Hanya untuk memperjelas, saya tidak ingin menggabungkan semua wma
dalam direktori tertentu, saya hanya ingin menggabungkan 2 atau 3 file menjadi satu.
Terima kasih atas solusi yang diusulkan, tetapi mereka semua tampaknya memerlukan membuat file sementara, jika mungkin sama sekali, saya ingin menghindari itu.
linux
command-line
audio
Hasen
sumber
sumber
mktemp -d /tmp/descriptive_name.XXXXXX
untuk membuat direktori sementara dengan nama yang informatif, kemudian memproses semua file temp saya di sana, kemudian rm -r direktori temp sesudahnya.*.wma
dalam commandline, pasti akan bekerja untuk daftar yang lebih kecil seperti1.wma 2.wma 3.wma 4.wma
(meninggalkan 5.wma, 6.wma, & 7.wma), hanya dengan mendaftar mereka keluar seperti itu (bukannya menggunakan*.wma
).Jawaban:
Inilah saran saya: Gunakan mplayer dan oggenc terhubung dengan pipa bernama.
Gunakan
mplayer
untuk memecahkan kode audio. Ia dapat memutar ulang beragam format audio (dan video), dan juga dapat memutar banyak file.Gunakan
oggenc
untuk menyandikan audio ke Ogg Vorbis.Untuk menghilangkan kebutuhan file sementara, gunakan pipa bernama untuk mentransfer data antara encoder dan decoder.
Masukkan itu ke dalam skrip:
Dijelaskan:
-really-quiet -slave -nolirc
ada untuk menonaktifkan pesan dan membuatnya tidak membaca keyboard atau remote. Opsi-vc null -vo null
ada untuk menonaktifkan encoding dan output video. The-ao
pilihan mengarahkan ke output audio dalam format WAV ke bernama tulis pipa.Hal-hal yang harus ditingkatkan: Menghentikan skrip lebih awal jika salah satu perintah gagal (gunakan
set -e
), tetapi masih membersihkan fifo dengan baik (menjebak sinyal yang diperlukan).sumber
SoX dapat menangani sejumlah besar format audio, tergantung pada perpustakaan apa yang dikompilasinya, dan dapat menggabungkan file dengan baris perintah sederhana
Saya percaya 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 mengkonversi setidaknya file-file dengan sesuatu seperti ffmpeg terlebih dahulu mungkin tidak dapat dihindari.
sumber
Saya akan menggunakan ffmpeg . Untuk mengonversi wma ke ogg vorbis coba:
atau mp3:
Anda harus lumpuh diinstal untuk mengkonversi 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 Anda dapat melakukan sesuatu seperti
cat *.wma | ffmpeg -i - -acodec ...
- ini tidak bekerja pada mesin saya - hanya file pertama yang diproses. Ada 'copy' codec untuk ffmpeg, tetapi tidak membuat banyak perbedaan.Pertama-tama lakukan konversi dengan ffmpeg, kemudian cat * .ogg> output.ogg bekerja untuk saya.
sumber
-acodec libvorbis
untuk menghindari built-in ffmpeg's encoder.Untuk menggabungkan dan mentranskode file audio, ini adalah alur kerja yang ingin Anda ikuti:
Pemrosesan dalam langkah-langkah ini melakukan penggabungan pada data WAV, yang paling mudah untuk ditangani dan paling tidak lossy. Dan karena Anda tetap ingin transcode, Anda harus mendekode ke WAV di suatu tempat dalam proses; lebih baik memanfaatkannya.
Berikut langkah-langkah yang saya rekomendasikan. Kami akan gunakan
ffmpeg
untuk decoding,sox
untuk concatenation, danoggenc
untuk encoding. Anda dapat mengganti alat lain untuk langkah apa pun -mencoder
dan yang lain berfungsi dengan baik sebagai dekoder, dan alat apa pun yang menyandikan Ogg dapat digunakan sebagai penyandi - meskipun saya pikir Anda akan kesulitan menemukan alat yang lebih baik daripadasox
untuk rangkaian.find *.wma -exec ffmpeg -i {} outfile.{}.wav \;
(ini berjalan
ffmpeg -i infile.wma outfile.infile.wma
pada setiap file WMA di direktori saat ini)sox outfile* all.wav
(note
outfile
adalah awalan yang sama dengan yang kita berikan pada file output pada langkah 1)oggenc all.wav all.ogg
Anda mungkin ingin beberapa pengaturan kualitas di sini, tetapi ini akan memberikan standar kualitas yang layak. Saya tidak mendapatkan hasil yang saya sukaiffmpeg
, tetapi Anda mungkin lebih suka, jadi saya telah menyertakan contoh dengan ffmpeg di bawah ini.Perhatikan bahwa
sox
perintah tidak akan berfungsi dengan baik kecuali semua file WAV memiliki format yang sama - jika ada yang 22kHz dan ada yang 44.1kHz, misalnya, Anda perlu mengidentifikasi merekasox
melalui sakelar baris perintah, dan tentukan format mana yang Anda inginkan. output in. Saya tidak tahu alat commandline yang mampusox
untuk langkah penggabungan. Anda mungkin dapat menampilkan ke format PCM mentah di langkah 1 dan gunakancat
untuk langkah 2, tetapi itu hanya akan berfungsi jika mereka berada dalam format yang sama, dan Anda harus sangat spesifik untuk dekoder dan enkoder Anda seperti apa format yang seharusnya mereka harapkan.Pengkodean dengan ffmpeg: Banyak posting di sekitar 'mengeluh bahwa ffmpeg builtin Vorbis encoder tidak terlalu baik. Jika versi Anda dibuat dengan dukungan libvorbis, gunakan
-acodec libvorbis
saja. Contoh perintah:sumber
Tidak akan berfungsi untuk file .ogg, tetapi mp3wrap dapat menggabungkan beberapa file .mp3 ke dalam satu file. Jadi dari baris perintah, Anda bisa melakukan sesuatu seperti ini
Ini akan menggunakan ffmpeg untuk mengonversi semua file .wma Anda menjadi .mp3, dan kemudian menggabungkan semua file .mp3 menjadi satu file.
sumber
Mencoder dapat menggabungkan dan mentranskode video tanpa file temp ( contoh sepele di sini ). Ada skrip melayang di suatu tempat yang disebut aconvert yang trik mencoder untuk melakukan audio saja (yang biasanya menolak untuk melakukan). Gabungan dua hal ini sepertinya memenuhi kebutuhan Anda.
Sunting: Saya menemukan aconvert.sh. Sayangnya, ini hanya dirancang untuk mengonversi satu file audio. Tapi begini kodenya, kalau-kalau ada yang mau menggunakannya untuk membuat baris perintah yang mengubah banyak file audio.
sumber
Ini mungkin tidak persis apa yang Anda butuhkan, tetapi itu seharusnya membantu http://bitzenbytes.com/index.php?name=PNphpBB2&file=viewtopic&t=6538&postdays=0&postorder=asc&sid=f87b364ddbae3ddd9417f5d10fae870c
sumber
Saya pikir saya akan memasukkan jawaban saya. Ini mungkin bukan cara yang paling elegan, tapi itu melakukan apa yang saya inginkan.
Langkah 1: konversikan ke ogg (menggunakan
mplayer
,pacpl
danruby
, semua tersedia dari repo Debian gratis. I)Langkah 2: menyatukan file ogg
sumber
cat file list… | ffmpeg -f mp3 -i – -acodec copy outfile.mp3
bekerja dengan baik untuk saya dengan MP3: Saya membayangkan itu akan bekerja dengan format lain juga. Kredit diberikan ke Lindylex .sumber