新聞中心
Linux作為一個開源的操作系統(tǒng),一直以來備受好評。在Linux中使用音樂播放器是一種常見的需求。但是,當我們在Linux中使用音樂播放器時,會遇到一個很常見的問題:聲音僅從耳機中播放,而不是外放。這可能會給用戶帶來很大的困擾,因為他們只能在沒有其他人的情況下聽音樂,除非他們購買一臺外置音響。但是不用著急,Linux系統(tǒng)可以通過簡單的步驟來解決這個問題。

創(chuàng)新互聯(lián)2013年開創(chuàng)至今,是專業(yè)互聯(lián)網技術服務公司,擁有項目網站設計制作、網站設計網站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元鐘樓做網站,已為上家服務,為鐘樓各地企業(yè)和個人服務,聯(lián)系電話:18982081108
步驟1: 安裝Pulseaudio音頻管理器(如果沒有安裝的話)
在Linux中,聲音管理器是用于管理、控制和配置系統(tǒng)中所有聲音設備的工具。因此,為了使音頻外放,需要安裝一個名為 Pulseaudio 的音頻管理器。要安裝此工具,請打開終端并運行以下命令。
“`
sudo apt-get install pulseaudio
“`
步驟2: 刪除配置文件
如果您的Linux系統(tǒng)上運行了Pulseaudio,但仍然無法從揚聲器中播放聲音,則可以嘗試刪除Pulseaudio配置文件并重新啟動系統(tǒng)。要刪除配置文件,請打開終端并輸入以下命令:
“`
rm -r ~/.config/pulse/
“`
此命令將刪除所有存儲在“~/.config/pulse/”中的Pulseaudio配置文件。
步驟3: 重啟Pulseaudio
重啟Pulseaudio也可能解決問題。在終端中運行以下命令:
“`
pulseaudio -k && pulseaudio –start
“`
這將關閉Pulseaudio并啟動它。
步驟4: 確認輸出設置
檢查是否已將您的音頻輸出設置為揚聲器。要檢查,請按以下步驟操作。
1. 單擊系統(tǒng)設置。
2. 單擊聲音選項卡。
3. 確認輸出選項是否設置為揚聲器。
步驟5: 打開Pavucontrol
如果上述步驟無效,則可以嘗試打開Pavucontrol來設置揚聲器。Pavucontrol是一種可用于更好地管理和控制聲音在Linux中的軟件。
要安裝Pavucontrol,請輸入以下命令:
“`
sudo apt-get install pavucontrol
“`
然后,要打開Pavucontrol,請在終端中輸入以下命令:
“`
pavucontrol &
“`
在Pavucontrol中,單擊“配置”選項卡,然后確認“內置音頻”是否選中,并將“音頻輸出”設為揚聲器。確保單擊“將所有流路設為”應用程序之前的按鈕,以使這些更改永久生效。
在本文中,我們介紹了如何將Linux系統(tǒng)中的聲音設置為外放來完成音樂播放。盡管在Linux中設置聲音可能需要一點調整,但是Linux并不是非常難使用。只要查看系統(tǒng)設置和Pavucontrol,使用者就可以很快地更改設置。希望這篇文章可以幫助那些在Linux中使用音樂播放器時無法將聲音設置為外放的人。
相關問題拓展閱讀:
- 為啥Linux系統(tǒng)插上耳機有聲音,拔掉耳機就沒有聲音,而XP系統(tǒng)就有聲音!
- 請教Linux下ALSA聲道切換
為啥Linux系統(tǒng)插上耳機有聲音,拔掉耳機就沒有聲音,而XP系統(tǒng)就有聲音!
聲卡支持的問題。這個只能靠升級系統(tǒng)解決。
你這個問題應該是驅動沒有很好的解決聲卡的 codec ,導致沒有正確識別聲卡的輸出端口方式。導致李鏈只能使用聲卡的耳機輸出端口而不是機器的喇叭輸出端口。
Linux 的聲哪冊孫卡驅動統(tǒng)一由 alsa 提供。alsa 已經被內置進了內核。
如果樓主的系統(tǒng)不是很新,那么升級系統(tǒng)或許可以解決。如果不行,那就只能自己升級內核了。如果還不行,那就只能去升級使用外掛最新版的 alsa 了。
另外,有的驅動可以通過設置 codec 型號給驅動來提供支持或者更改默認的輸姿旅出端口。
不過這都需要足夠的技術。
根據你的linux系統(tǒng),在設置中找聲音設置,然后選不同的模式試試。
系統(tǒng)設置問題
請教Linux下ALSA聲道切換
解各參數含義及些基本概念
本度(sample):本記錄音頻數據基本單位見8位16位
通道數(channel):該參數1表示單聲道2則立體聲
楨(frame):楨記錄聲音單元其度本度與通道數乘積
采率(rate):每秒鐘采數該數針楨言
周期(period):音頻設備處理所需要楨數于音頻設備數據訪問及音頻數據存儲都單位
交錯模式(interleaved):種音頻數據記錄式交錯模式數據連續(xù)楨形式存放即首先記錄完楨1左聲道本右聲道本(假設立體聲格式)再始楨2記錄非交錯模式首先記錄周期內所楨左聲道本再記錄右聲道本數據連續(xù)通道式存儲數情況我需要使用交錯模式
period(周期):硬件斷間間隔間表示輸入延
聲卡接口指針指示聲卡硬件緩存區(qū)前讀寫位置要接口運行指針循環(huán)指向緩存區(qū)某位置
frame size = sizeof(one sample) * nChannels
alsa配置緩存(buffer)周期(size)runtime幀(frames)形式存儲
period_bytes = frames_to_bytes(runtime, runtime->period_size);
bytes_to_frames()
The period and buffer sizes are not dependent on the sample format because they are measured in frames; you do not need to change them.
ALSA聲音編程介紹
ALSA表示高級Linux聲音體系結構(Advanced Linux Sound Architecture)由系薯衫列內核驅應用程序編譯接口(API)及支持Linux聲音實用程序組篇文章我簡單介紹ALSA項目基本框架及軟件組主要集介紹PCM接口編程包括您自實踐程序示例
您使用ALSA原能新并唯用聲音API您想完低級聲音操作便能夠化控制聲音并化提高性能或者您使用其聲音API沒特性ALSA選擇您已經寫音頻程序能想要ALSA聲卡驅添加本支持您音頻興趣想播放音頻文件高級API更選擇比SDL,OpenAL及些桌面環(huán)境提供工具集另外您能ALSA支持Linux環(huán)境使用ALSA
ALSA歷史
ALSA項目發(fā)起起Linux聲卡驅(OSS/Free drivers)沒積極維護并且落于新聲卡技術Jaroslav Kysela早先寫聲卡驅并由始ALSA項目隨便更發(fā)者加入發(fā)隊伍更聲卡支持API結構重組
Linux內核2.5發(fā)程ALSA合并官源碼樹發(fā)布內核2.6ALSA已經內建穩(wěn)定內核版本并廣泛使用
數字音頻基礎
聲音由變化氣壓組麥克風轉換器轉換電形式模/數(ADC)轉換器模擬電壓轉換離散本值聲音固定間間隔采采速率稱采率本輸數/模(DAC)轉換器比擴音器轉換原模擬信號
本位表示本影響聲音轉換數字信號精確程度素另主要素采率奈奎斯特(Nyquist)理論要離散系統(tǒng)奈奎斯特頻率高于采信號高頻率或帶寬避免混疊現(xiàn)象
ALSA基礎
ALSA由許聲卡聲卡驅程序組同提供稱libasoundAPI庫應用程序發(fā)者應該使用libasound內核ALSA接口libasound提供數如腔橡消高級并且編程便編程接口并且提供設備邏輯命名功能發(fā)者甚至需要知道類似設備文件低層接口相反OSS/Free驅內核系統(tǒng)調用級編程要求發(fā)者提供設備文件名并且利用ioctrl實現(xiàn)相應功能向兼容ALSA提供內核模塊模擬OSS前許OSS基礎發(fā)應用程序需要任何改ALSA運行另外libaoss庫模擬OSS需要內核模塊
ALSA包含插件功能使用插件擴展新聲卡驅包括完全用軟件實現(xiàn)虛擬聲卡ALSA提供系列基于命令行工具集比混音器(mixer)音頻文件播放器(aplay)及控制特定聲卡特定屬性工具
ALSA體系結構
ALSA API解幾主要接口:
1 控制接口:提供管理聲卡注冊請求用設備通用功能
2 PCM接口:管理數字音頻放(playback)錄音(capture)接口本文續(xù)總結重點放接口發(fā)數字音頻程序用接口
3 Raw MIDI接口:支持MIDI(Musical Instrument Digital Interface),標準電樂器些API提供聲卡MIDI總線訪問原始接口基于MIDI事件工作由程序員負責管理協(xié)議及間處理
4 定器(Timer)接口:同步音頻事件提供聲卡間處理硬件訪問
5 序器(Sequencer)接口
6 混音器(Mixer)接口
設備命名
API庫使用邏輯設備名設備文件設備名字真實硬件名字插件名字硬件名字使用hw:i,j格式其i卡號j塊聲卡設備號第聲音設備hw:0,0.別名默認引用第塊聲音設備并且本文示例真用插件使用另外唯名字比plughw:,表示插件插件提供硬件設備訪問提供像采率轉換軟件特性硬件本身并支持特性
聲音緩存數據傳輸
每聲卡都硬件緩存區(qū)保存記錄本緩存區(qū)足夠滿聲卡產斷內核聲卡驅使用直接內存(DMA)訪問通道本傳送內存應用程序緩存區(qū)類似于放任何應用程序使用DMA自緩存區(qū)數據傳送聲卡硬件緩存區(qū)
硬件緩存區(qū)環(huán)緩存說數據達緩存區(qū)末尾重新緩存區(qū)起始位置ALSA維護指針指向硬件緩存及應用程序緩存區(qū)數據操作前位置內核外部看我應用程序緩存區(qū)興趣所本文討論應用程序緩存區(qū)
應用程序緩存區(qū)通ALSA庫函數調用控制緩存區(qū)傳輸操作能導致接受延遲我稱延(latency)解決問題ALSA緩存區(qū)拆系列周期(period)(OSS/Free叫片斷fragments).ALSAperiod單元傳送數據
周期(period)存儲些幀(frames)每幀包含間點所抓取本于立體聲設備幀包含兩信道本圖1展示解程:緩存區(qū)解周期幀本圖包含些假定數值圖左右信道信息交替存儲幀內稱交錯(interleaved)模式非交錯模式信道所本數據存儲另外信道數據
Over and Under Run
聲卡數據總連續(xù)硬件緩存區(qū)應用程序緩存區(qū)間傳輸例外錄音例應用程序讀取數據夠快循環(huán)緩存區(qū)新數據覆蓋種數據丟失稱overrun.放例應用程序寫入數據緩存區(qū)速度夠快緩存區(qū)”餓死”錯誤稱”underrun”ALSA文檔兩種情形統(tǒng)稱”XRUN”適設計應用程序化XRUN并且恢復
典型聲音程序
使用PCM程序通類似面?zhèn)未a:
打放或錄音接口
設置硬件參數(訪問模式數據格式信道數采率等等)
while 數據要處理:
讀PCM數據(錄音)
或 寫PCM數據(放)
關閉接口
我文看些工作代碼我建議您Linux系統(tǒng)測試運行些代碼查看輸并嘗試修改推薦代碼本文相關所實例清單FTP獲?。篺tp.ssc.com/pub/lj/listings/issue126/6735.tgz
Listing 1. Display Some PCM Types and Formats
#include asoundlib.h>
int main() {
int val;
printf(“ALSA library version: %s/n”,
SND_LIB_VERSION_STR);
printf(“/nPCM stream types:/n”);
for (val = 0; val
int main() {
int rc;
snd_pcm_t *handle;
snd_pcm_hw_params_t *params;
unsigned int val, val2;
int dir;
snd_pcm_uframes_t frames;
/* Open PCM device for playback. */
rc = snd_pcm_open(&handle, “default”,
SND_PCM_STREAM_PLAYBACK, 0);
if (rc
fprintf(stderr,
“unable to open pcm device: %s/n”,
snd_strerror(rc));
exit(1);
}
/* Allocate a hardware parameters object. */
snd_pcm_hw_params_alloca(?ms);
/* Fill it in with default values. */
snd_pcm_hw_params_any(handle, params);
/* Set the desired hardware parameters. */
/* Interleaved mode */
snd_pcm_hw_params_set_access(handle, params,
SND_PCM_ACCESS_RW_INTERLEAVED);
/* Signed 16-bit little-endian format */
snd_pcm_hw_params_set_format(handle, params,
SND_PCM_FORMAT_S16_LE);
/* Two channels (stereo) */
snd_pcm_hw_params_set_channels(handle, params, 2);
/*bits/second sampling rate (CD quality) */
val = 44100;
snd_pcm_hw_params_set_rate_near(handle,
params, &val, &dir);
/* Write the parameters to the driver */
rc = snd_pcm_hw_params(handle, params);
if (rc
fprintf(stderr,
“unable to set hw parameters: %s/n”,
snd_strerror(rc));
exit(1);
}
/* Display information about the PCM interface */
printf(“PCM handle name = ‘%s’/n”,
snd_pcm_name(handle));
printf(“PCM state = %s/n”,
snd_pcm_state_name(snd_pcm_state(handle)));
snd_pcm_hw_params_get_access(params,
(snd_pcm_access_t *) &val);
printf(“access type = %s/n”,
snd_pcm_access_name((snd_pcm_access_t)val));
snd_pcm_hw_params_get_format(params, &val);
printf(“format = ‘%s’ (%s)/n”,
snd_pcm_format_name((snd_pcm_format_t)val),
snd_pcm_format_description(
(snd_pcm_format_t)val));
snd_pcm_hw_params_get_subformat(params,
(snd_pcm_subformat_t *)&val);
printf(“subformat = ‘%s’ (%s)/n”,
snd_pcm_subformat_name((snd_pcm_subformat_t)val),
snd_pcm_subformat_description(
(snd_pcm_subformat_t)val));
snd_pcm_hw_params_get_channels(params, &val);
printf(“channels = %d/n”, val);
snd_pcm_hw_params_get_rate(params, &val, &dir);
printf(“rate = %d bps/n”, val);
snd_pcm_hw_params_get_period_time(params,
&val, &dir);
printf(“period time = %d us/n”, val);
snd_pcm_hw_params_get_period_size(params,
&frames, &dir);
printf(“period size = %d frames/n”, (int)frames);
snd_pcm_hw_params_get_buffer_time(params,
&val, &dir);
printf(“buffer time = %d us/n”, val);
snd_pcm_hw_params_get_buffer_size(params,
(snd_pcm_uframes_t *) &val);
printf(“buffer size = %d frames/n”, val);
snd_pcm_hw_params_get_periods(params, &val, &dir);
printf(“periods per buffer = %d frames/n”, val);
snd_pcm_hw_params_get_rate_numden(params,
&val, &val2);
printf(“exact rate = %d/%d bps/n”, val, val2);
val = snd_pcm_hw_params_get_its(params);
printf(“significant bits = %d/n”, val);
snd_pcm_hw_params_get_tick_time(params,
&val, &dir);
printf(“tick time = %d us/n”, val);
val = snd_pcm_hw_params_is_batch(params);
printf(“is batch = %d/n”, val);
val = snd_pcm_hw_params_is_block_transfer(params);
printf(“is block transfer = %d/n”, val);
val = snd_pcm_hw_params_is_double(params);
printf(“is double = %d/n”, val);
val = snd_pcm_hw_params_is_half_duplex(params);
printf(“is half duplex = %d/n”, val);
val = snd_pcm_hw_params_is_joint_duplex(params);
printf(“is joint duplex = %d/n”, val);
val = snd_pcm_hw_params_can_overrange(params);
printf(“can overrange = %d/n”, val);
val = snd_pcm_hw_params_can_mmap_sample_resolution(params);
printf(“can mmap = %d/n”, val);
val = snd_pcm_hw_params_can_pause(params);
printf(“can pause = %d/n”, val);
val = snd_pcm_hw_params_can_resume(params);
printf(“can resume = %d/n”, val);
val = snd_pcm_hw_params_can_sync_start(params);
printf(“can sync start = %d/n”, val);
snd_pcm_close(handle);
return 0;
}
linux聲音改為外放的介紹就聊到這里吧,感謝你花時間閱讀本站內容,更多關于linux聲音改為外放,教你一招,將Linux聲音改為外放,聽音樂更自在,為啥Linux系統(tǒng)插上耳機有聲音,拔掉耳機就沒有聲音,而XP系統(tǒng)就有聲音!,請教Linux下ALSA聲道切換的信息別忘了在本站進行查找喔。
香港服務器選創(chuàng)新互聯(lián),2H2G首月10元開通。
創(chuàng)新互聯(lián)(www.cdcxhl.com)互聯(lián)網服務提供商,擁有超過10年的服務器租用、服務器托管、云服務器、虛擬主機、網站系統(tǒng)開發(fā)經驗。專業(yè)提供云主機、虛擬主機、域名注冊、VPS主機、云服務器、香港云服務器、免備案服務器等。
當前名稱:教你一招,將Linux聲音改為外放,聽音樂更自在(linux聲音改為外放)
標題來源:http://www.5511xx.com/article/dhdjsds.html


咨詢
建站咨詢
