Anda tahu bagaimana ketika Anda mencolokkan headphone ke jack aux laptop Anda, speaker internal secara otomatis dimatikan dan suara keluar dari headphone Anda? Saya ingin itu untuk HDMI.
Terkadang saya menghubungkan monitor dengan speaker internal ke laptop saya untuk menonton video. Sangat aneh ketika video ada di monitor (yang ditempatkan 3 m dari meja saya) tetapi suara keluar dari speaker internal laptop saya (laptop duduk di meja).
Tentu saja, saya bisa pergi ke pengaturan suara dan mengganti saluran output ke HDMI. Tetapi kemudian, ketika saya melepas kabel HDMI beberapa jam yang lalu dan bahkan mungkin berada di lokasi yang sama sekali berbeda, suara tidak akan diputar karena server suara masih mencoba memutarnya melalui HDMI tetapi tidak ada yang terhubung dengannya. .
Secara otomatis beralih kembali ke speaker internal ketika tidak ada perangkat yang terhubung melalui HDMI lebih penting tetapi beralih ke output suara melalui HDMI ketika perangkat terhubung masih akan sangat bagus.
Ini tampaknya bekerja dengan 11,10 tetapi tidak bekerja dengan 16,04.
Jawaban:
Latar Belakang
Saya memiliki masalah yang sama selama penangguhan / melanjutkan ketika suara akan beralih dari TV HDMI ke speaker laptop. Setelah melanjutkan suara akan tetap pada speaker Laptop dan saya harus secara manual mengatur ulang perangkat output ke TV di
System Settings
->Sound
.Ini adalah salah satu pengalaman menjengkelkan pertama saya dengan upgrade dari Ubuntu 14.04 ke 16.04 dan root di-upgrade ke PulseAudio 8 yang hadir dengan 16,04 LTS
Setelah banyak pencarian saya membuat skrip bernama
TV-sound
. Meskipun saya tidak mencolokkan dan mencabut TV seperti Anda, saya melakukan beberapa pencarian google dan membuat variasi skrip untuk bekerja dalam situasi Anda. Saya sudah mengujinya dan berhasil.Langkah 1: Buat skrip untuk beralih audio antara perangkat yang terhubung
Kami akan membuat skrip yang disebut
hotplugtv
udev panggilan. Skrip yang sama ini dapat dipanggil di banyak tempat. Sebagai contoh, selama pengujian saya menggunakannya dilock-screen-timer
tempat suara dikembalikan ke Laptop selama kunci layar.Ketika editor membuka dengan layar kosong, salin dan tempel yang berikut ke dalamnya:
Anda harus mengganti dua kemunculan
rick
dengan id pengguna Anda sendiri, yaituUTF-8
, dll.Saya tahu ini bisa lebih profesional dengan nama pengguna secara otomatis diatur ke variabel bash tapi saya belum mahir :( Lagi pula, simpan file dan keluar
gedit
.Langkah 2: Buat aturan udev
udev memonitor kejadian hotplug saat Anda mencolokkan dan mencabut monitor HDMI Anda. Ketik yang berikut untuk membuat aturan baru.
CATATAN: Jika file
70-persistent-net.rules
tidak ada di direktori Anda salin file lain di sana. Kami tidak membutuhkan konten file, hanya izin file untuk memastikan konten kami sama.Editor akan menampilkan banyak teks yang tidak relevan, sorot dan hapus. Kemudian sorot kode di bawah ini dan rekatkan ke editor:
Simpan file dan keluar.
Untuk mengaktifkan aturan (tanpa me-reboot) kita perlu memuat ulang udev:
Sekarang Anda dapat mencolokkan dan mencabut monitor HDMI / TV Anda dan suaranya beralih dengan tepat.
Peringatan
Pada sistem saya, suara secara otomatis kembali ke speaker Laptop ketika HDMI dicabut. Pada sistem Anda tidak. Peningkatan lebih lanjut pada kode mungkin diperlukan jika suara tidak masuk ke speaker Laptop Anda ketika HDMI dicabut. Silakan balas melalui komentar di bawah ini bagaimana hal-hal bekerja / tidak berhasil.
Pengujian cepat di CLI
Anda dapat dengan cepat menguji kode di terminal dengan menggunakan:
Beralih ke HDMI / TV:
Beralih kembali ke speaker bawaan:
Ingatlah untuk mengganti
rick
dengan nama pengguna Anda.export
mungkin tidak perlu tetapi saya sudah memasukkannya hanya untuk aman.hdmi-stereo
tweak jelas diperlukan untuk mengetahui parameter yang benar sebelum menulis skrip Anda.Menguraikan nama perangkat Anda dalam PulseAudio
Kode di bawah ini menggunakan perintah yang sama dua kali. Suatu ketika ketika suara diatur ke TV HDMI eksternal. Kedua kalinya ketika suara diatur ke speaker bawaan Laptop. Setiap kali Anda melihat nama PulseAudio menggunakan:
Ketika Anda memiliki beberapa kartu suara
Gunakan perintah
aplay -l
untuk melihat apakah Anda memiliki kartu lebih besar dari angka 0. Jika demikian, Anda perlu menggunakan nomor kartu yang sesuai dalam skrip Anda. Sebagai contoh:Dalam contoh di atas semua nomor kartu adalah 0 dengan sumber output yang berbeda. Jika Anda memiliki speaker USB, mereka dapat memiliki nomor kartu yang berbeda dari 0.
Edit 2 Desember 2016
Untuk beberapa alasan yang tidak diketahui naskahnya rusak hari ini. Di atas kode yang digunakan untuk membaca: "$ (cat / sys / class / drm / card0-HDMI-A-1 / Status" tapi saya harus mengubah
card0
kecard1
dan kode di atas telah direvisi seperti saya tidak bisa menjelaskan apa yang berubah. di sistem saya selain dari pembaruan Ubuntu biasa sejak 26 November 2016.Edit 14 Desember 2016
Kode di atas perlu diganti lagi ke: "$ (cat / sys / class / drm / card0-HDMI-A-1 / status". Alih-alih merevisi kode antara
card0
dancard1
tergantung pada boot, revisi program untuk referensicard*
untuk menangkap kedua skenario .sumber
70-persistent-net.rules
karena tidak ada./etc/udev/rules.d
hanya berisi satu file yang disebut39-smfp_samsung.rules
.cat /sys/class/drm/card0-HDMI-A-1/status
menunjukkan status yang benar (saya mencoba beberapa kali).output:analog-stereo
: pastebin.com/n5bHyhCm Ini membuatnya lebih aneh karena saya berharap suara akan selalu diputar melalui HDMI. Tangkapan layar pengaturan suara saya ketika HDMI terhubung dan ketika HDMI tidak terhubung . Sunting: Saya sudah mencoba ini tetapi butuh beberapa menit lagi untuk mengirim komentar ini karena saya harus mengunggah tangkapan layar.