2012-01-20 74 views
2

我想播放youtube視頻並以編程方式將firefox的音頻輸出到特定的聲卡。ALSA音頻和YouTube

我想我會做這樣的事情firefox | aplay -D hw:x,y. 產量:

播放原始數據 '標準輸入':無符號8位,率8000赫茲,單聲道 aplay:set_params:1059:採樣格式的非可 可用格式: - S16_LE

試圖firefox | aplay -D hw:1,0 -f S16_LE -c 2

播放已原始數據「標準輸入」:有符號16位小端,率8000赫茲,立體聲 警告:速度是不準確的(請= 8000Hz的,得到了​​= 44100Hz) 請嘗試插頭插件

最後,firefox | aplay -D plughw:1,0 -f S16_LE -c 2

播放原始數據「標準輸入」:有符號16位小端,率8000赫茲,立體聲

命令行提示,它的工作,但聲音就出來了HW的: 0,0(默認)。

我需要製作自己的插件嗎? 或者我需要強制alsa拍攝44100Hz?

此外,我拒絕使用脈衝,因爲內存泄漏的問題使它經常崩潰。

回答

6

我很確定閃光燈總是使用默認聲卡,因此您需要更改pcm.default。您可以通過編輯~/.asoundrc並添加類似這樣做的:

pcm.!default { 
    type hw 
    card 0 
    device 2 
} 

當然,這影響到所有的應用程序,但我相信還可以設置ALSA_CONFIG_PATH(環境)來指定不同的文件,所以你可以做到這一點僅適用於Firefox。

ALSA FAQ表示有ALSA_PCM_CARDALSA_CARD環境變量也可以。

這些變量的實際工作,因爲他們是默認也配置在/usr/share/alsa/alsa.conf的一部分:

@args.CARD { 
      type string 
      default { 
        @func getenv 
        vars [ 
          ALSA_PCM_CARD 
          ALSA_CARD 
        ] 
        default { 
          @func refer 
          name defaults.pcm.card 
        } 
      } 
    } 

所以,你應該能夠做到這一點:

ALSA_PCM_CARD=1 ALSA_PCM_DEVICE=3 firefox 

使用適當的卡設備號碼從您的系統。或者你可以將自己的環境變量(或其他條件檢查)添加到你的ALSA配置中。

+0

這太好了。我無法使環境環境工作,但它似乎等同於在打開Firefox之前以編程方式更改.asoundrc文件。 – cyrusv

+0

我也想更確定firefox不能播放任何不是「默認」的東西。我發現很難相信我無法將其發送到不同的設備 – cyrusv

+2

@cyrusv:聲音數據不會轉到標準輸出,因此您無法將它傳送到任何地方。 – derobert

0

Flash使用自己的輸出配置,獨立於Firefox。在運行瀏覽器之前定義FLASH_ALSA_DEVICE,它告訴Flash使用ALSA PCM而不是默認值。