Saya ingin merekam output dari program dengan PulseAudio menggunakan command line / bash script. Penting untuk tidak mencatat semua output, tetapi hanya output dari satu program tertentu.
Saya pikir saya harus membuat null-sink baru dan daripada memindahkan output program ke sink baru ini. Daripada memberitahu parec untuk menggunakan monitor khusus ini untuk merekam.
Langkah pertama akan menjadi seperti ini:
pactl load-module module-null-sink sink_name=steam
Tetapi bagaimana cara memindahkan output program sekarang ke sink ini?
Dan bagaimana cara merekam wastafel tertentu dengan skrip bash?
sumber
pulseaudio -k
di terminal.list-sink-inputs
perhatikansink
nilainya. Untuk swap kembali jalankan sajapactl move-sink-input $INDEX $SINK
. Sesuatu sepertipactl move-sink-input 4719 1
Meningkatkan jawaban Waschtl dari utas ini sehingga Anda dapat KEDUA MENDENGARKAN DAN MENCATAKAN aplikasi terdengar:
Pertama, kami mencari output default kami dan memasukkan nama wastafelnya ke
$DEFAULT_OUTPUT
:Lalu, kami membuat wastafel gabungan yang hanya memiliki satu budak: $ DEFAULT_OUTPUT . Suara yang dihasilkan oleh aplikasi (sumber) akan diteruskan ke slave sink (mis. Output nyata), dan kami juga akan merekamnya. Ini berbeda dari wastafel nol di mana suara sumber tidak diteruskan.
sink_properties
adalah opsional dan mungkin bug jika Anda menggunakan spasi dalam nama deskripsi.Kemudian, kita bisa menggunakan
pactl move-sink-input ...
perintah Waschtl answer (dengan record-n-play alih - alih steam ) tetapi GUIpavucontrol
lebih sederhana (dan bagus untuk memeriksa / mengatasi masalah):Kemudian, kami memutar beberapa suara di aplikasi yang ingin kami rekam. Di
pavucontrol
Playbacktab, kami memilih dalam daftar dropdown aplikasi: "Rekam dan Mainkan" .Akhirnya, kami senang merekam dan mendengarkan pada saat yang sama! ( Contoh mp3 lumpuh , jalankan di latar depan)
Atau kami dapat merekam di latar belakang dan berhenti kapan saja:
NB:
pulseaudio -k
bekerja sangat baik untuk mengatur ulang semuanya ke default sesi.pactl load-module module-combine-sink sink_name=record-n-play slaves=real-output-1,real-output-2
.EDIT: Hati-hati, karena Ubuntu 18 (mungkin 17 juga), wastafel gabungan cenderung menjadi perangkat output sistem default, bukan perangkat output nyata. Jadi ketika Anda mengubah volume menggunakan ikon suara di baki sistem, hal itu memengaruhi suara rekaman Anda. Penanganan Masalah: Setelah membuat wastafel gabungan, buka
pavucontrol
di tab Output. Pilih "View: Virtual Output Devices" dan atur ulang volume suara sink gabungan menjadi 100%. Kemudian pilih "Lihat: Perangkat Output Perangkat Keras" dan tekan ikon hijau "Tentukan sebagai alternatif" pada perangkat output nyata.sumber
Jawaban @ Waschtl sangat fantastis. @ixtmixilix bertanya tentang memulihkan audio biasa setelah rekaman selesai. Inilah cara termudah yang saya ketahui:
Instal dan jalankan
pavucontrol
GUI. Anda akan melihat aplikasi keluaran audio Anda dan pengukur volume di bawah Playbacktab di sana. Akan ada tombol di sebelahnya yang menunjukkan bahwa ia diputar di Null Output . Klik itu dan ubah ke output audio biasa, Stereo Audio Analog Bawaan dalam kasus saya.Berikut screenshot dari apa yang Anda cari:
Anda juga dapat menggunakan pendekatan ini untuk mengatur rekaman Anda di masa mendatang, setelah Anda menjalankan
load-module
perintah di jawaban @ Waschtl untuk membuat wastafel.sumber
Meningkatkan jawaban KrisWebDev lebih lanjut, jika Anda ingin record-n-play selalu tersedia, pertama-tama cari tahu output default:
yang akan menampilkan sesuatu seperti:
Selanjutnya, buat file
~/.config/pulse/default.pa
:Silakan ganti
alsa_output.pci-0000_00_1b.0.analog-stereo
dengan output apa pun yang Anda dapatkan daripacmd
perintah. Pulse tidak membaca file konfigurasi default ketika ada file konfigurasi kustom - itu sebabnya baris pertama di atas menyertakan file konfigurasi default. Dengan cara itu pulseaudio masih memuat konfigurasi default terlebih dahulu.Jalankan
pulseaudio -k
untuk membunuh instance pulseaudio saat ini sehingga yang baru dimulai dengan konfigurasi baru.Jika suatu saat Anda ingin membatalkan perubahan di sini, hapus saja
~/.config/pulse/default.pa
file tersebut dan jalankanpulseaudio -k
.Jika Anda ingin record-n-play menjadi bak penampung default untuk semua keluaran, Anda bisa melakukannya dengan menambahkan satu baris lagi ke akhir
~/.config/pulse/default.pa
:Untuk program yang pulseaudio telah menyimpan informasi, ia mengingat perangkat keluaran apa pun yang mereka gunakan terakhir, jadi Anda harus mengkonfigurasi ulang secara manual mereka menggunakan salah satu metode yang dijelaskan dalam jawaban KrisWebDev.
sumber
Saya telah membuat skrip bash ini berdasarkan jawaban yang diberikan oleh @Waschtl dan jawaban @KrisWebDev.
Tersedia di sini: https://gist.github.com/ramast/4be3314bc73f28f55e3604497188b007
Cara Penggunaan?
Versi baru
Saya telah membuat skrip python yang menawarkan beberapa perbaikan dibandingkan yang lama. https://gist.github.com/ramast/c47bd5e57586e9c2deb74975e27089f0
Cara Penggunaan?
Ketika Anda menekan enter, rekaman akan segera dimulai. jika pada saat Anda menekan enter aplikasi sudah berhenti (misalnya Anda menutup mplayer) skrip akan menunggu sampai aplikasi muncul lagi dan mulai merekam.
Satu-satunya menarik kembali ke skrip itu (vs yang asli) adalah bahwa jika daftar berisi dua entri dengan nama yang sama, skrip tidak akan berperilaku dengan benar. Sebagai contoh
sumber