Làm cách nào để bảo Firefox sử dụng thiết bị ALSA khác?


13

Tôi có một card âm thanh trên bo mạch, và cũng là một tai nghe bluetooth được kết nối. Tôi đã cấu hình thiết bị bluetooth trong /etc/asound.conf:

# cat /etc/asound.conf

pcm.bluetooth {
    type bluetooth
    device 12:34:56:78:9a:bc
    profile "auto"
}

ctl.bluetooth {
    type bluetooth
}

Theo mặc định, thẻ onboard được sử dụng cho tất cả âm thanh (rõ ràng, thẻ onboard mặc định thậm chí không cần phải được liệt kê trong asound.conf)

Khi tôi muốn một ứng dụng sử dụng thiết bị alsa bluetooth của mình, tôi phải chỉ định nó, chẳng hạn như:

mplayer -ao alsa:device=bluetooth file.mp3

Điều đó tốt cho tôi. Nhưng tôi cũng cần một cách để nói với các trình duyệt của mình sử dụng thiết bị bluetooth alsa.

Tôi đã tìm thấy một cách để bắt đầu crom bằng cách sử dụng --alsa-output-devicetùy chọn dòng lệnh:

chromium --alsa-output-device=bluetooth

Tôi cần một cách tương tự để bắt đầu firefox, nhưng tôi không thể tìm thấy bất kỳ.

Làm cách nào tôi có thể bảo firefox sử dụng thiết bị alsa bluetooth của mình mà không phải sửa đổi /etc/asound.confhoặc ~/.asoundrcmỗi lần?

CẬP NHẬT:

Tôi đã làm theo lời khuyên của @ lgeorget và /etc/asound.confbây giờ tôi trông như thế này:

pcm.!default {
type plug
slave.pcm {
        @func getenv
        vars [ ALSAPCM ]
        default "hw:0,0"
    }
}

pcm.bluetooth {
    type bluetooth
    device 12:34:56:78:9a:bc
    profile "auto"
}

ctl.bluetooth {
    type bluetooth
}

Khi tôi bắt đầu sử dụng firefox ALSAPCM=bluetooth firefox, tôi nhận được âm thanh trong tai nghe bluetooth của mình, nhưng firefox chạy ở CPU 100% (trên 4 lõi của tôi) và video youtube phát ở tốc độ 10 lần (và âm thanh tương ứng (bị cắt xén). hiểu những gì đang xảy ra. Khi tôi khởi động firefox mà không có ALSAPCM=bluetooth, mọi thứ đều ổn và âm thanh phát trên thiết bị alsa mặc định.


Wow, một người dùng có 21 huy hiệu vàng và chỉ có 28 đại diện! Bạn đã làm nó như thế nào?
Dmitry Grigoryev

4
@Dmitry Grigoryev - Tôi dành mọi thứ cho tiền thưởng ...
Martin Vegter

Câu trả lời:


9

Rõ ràng không có tùy chọn nào cho firefox, nhưng bạn có thể thao tác đầu ra ALSA thông qua các biến môi trường.

Hãy thử ví dụ:

ALSA_PCM_CARD=bluetooth firefox

Ngoài ra, nếu điều này không hoạt động, hãy thử viết kịch bản một chút .asoundrc của bạn

pcm.!default {
type plug
slave.pcm {
        @func getenv
        vars [ ALSAPCM ]
        default "hw:hdmi"
    }
}

(thay thế "hw: hdmi" bằng pcm bình thường của bạn). Sau đó, nếu bạn muốn một chương trình sử dụng PCM cụ thể, hãy sử dụng:

ALSAPCM=bluetooth firefox

Nguồn:


cách tiếp cận đầu tiên không hoạt động. Khi tôi thử cách tiếp cận thứ hai, tôi nhận được âm thanh trong tai nghe bluetooth của mình, nhưng firefoxchạy ở CPU 100% (trên 4 lõi của tôi) và video youtube phát ở tốc độ gấp 10 lần. Tôi không hiểu chuyện gì đang xảy ra. Khi tôi khởi động firefox mà không có ALSAPCM=bluetooth, mọi thứ đều ổn và âm thanh phát trên thiết bị alsa mặc định.
Martin Vegter

Có các biến môi trường ALSA khác nhau (xem liên kết đến wiki Archlinux), có thể một biến khác sẽ hoạt động. Tôi thực sự ngạc nhiên về vấn đề CPU, tôi không thấy điều gì có thể gây ra điều đó.
lgeorget

1
tải CPU rất có thể là do thực tế, rằng video và âm thanh đang được phát và truyền phát ở tốc độ gấp 10 lần. Điều bí ẩn là tại sao ALSAPCM=bluetooththay đổi tốc độ video thành 10 lần.
Martin Vegter

@MartinVegter Vâng, tôi đã sao chép định nghĩa của pcm.! Mặc định trong bài đăng của tôi từ wiki, nó có thể không phù hợp với trường hợp cụ thể của bạn. Đặc biệt là phần "loại cắm" và "nô lệ".
lgeorget

0

Nó trông giống như một hóa thân của lỗi này . Có một số giải pháp được đề xuất, nhưng chúng dường như là cụ thể của Intel.

Hãy thử sử dụng pulseaudio. Nếu nó hoạt động, bạn có thể chuyển hướng các chương trình ALSA của mình sang pulseaudio bằng cách sau asound.conf:

pcm.pulse {
    type pulse
}
ctl.pulse {
    type pulse
}
pcm.!default {
    type pulse
}
ctl.!default {
    type pulse
}

Nếu điều đó không có ích, hãy thử thêm rate 44100hoặc rate 48000vào pcm.bluetoothphần của bạn asound.conf. Có lẽ ALSA sẽ đến với cảm giác của nó sau đó.

Bạn cũng có thể dùng thử Bộ điều khiển tốc độ video Youtube Html5 , mặc dù tôi nghi ngờ nó sẽ giúp ích.


cảm ơn, nhưng tôi không quan tâm đến các giải pháp sử dụng pulseaudio.
Martin Vegter

Lấy làm tiếc. Bạn có thể thử tham số tỷ lệ đó không?
Dmitry Grigoryev

với tham số tỷ lệ (cả với 44100 và 48000), tôi gặp lỗi sau : ALSA lib audio/pcm_bluetooth.c:1449:(bluetooth_parse_config) Invalid type for rate. Có vẻ như bluetooth không hỗ trợ ratetham số.
Martin Vegter

0

Lưu ý: Các phiên bản Firefox hiện tại dường như bỏ qua ~ / .asound.conf vì những lý do không xác định.

Nếu bạn không sử dụng pulseaudio (chủ yếu là lớp không cần thiết so với alsa, mặc dù hầu hết các distro đều cài đặt nó), thì trong hầu hết các trường hợp, bạn chỉ cần chọn đầu ra âm thanh mặc định cho một lớp khác.

Điều này có thể được thực hiện với những điều sau đây .asound.conftrong nhà của bạn:

pcm.!default {
    type hw
    card N
}

ctl.!default {
    type hw           
    card N
}

Thay thế Nbằng một số nguyên nhỏ, 0 cho card âm thanh đầu tiên của bạn (là mặc định), 1 cho lần thứ hai của bạn, v.v.

Các !trong !defaultkhông phải là phủ định ở đây! Nó là phần ghi đè của alsa.conf toàn cầu trước đây (toàn hệ thống).

Cấu hình phức tạp hơn có thể được đọc ở đây .

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.