導航:首頁 > IDC知識 > 音頻流伺服器

音頻流伺服器

發布時間:2020-10-20 22:30:26

1、html中添加的本地音頻如何上傳到伺服器?

您的伺服器不能上傳音頻文件嗎?
可以上傳的話,上傳後,別人訪問網站就可以正常播放音頻啦!

難道您這個html文件,是別人需要下載到本地後才打開的?如果真是這樣,那麼把音頻文件轉換成base64碼,然後data那裡貼上base64編碼即可(需要在編碼前面表明文件類型哦!)
大致的寫法如下
data="data:audio/mp3;base64,您mp3文件轉換後的base64編碼"

2、iOS 江湖救急!!!怎樣將音頻文件上傳到伺服器

http上傳 把文件以body形式上傳到伺服器 NSFileHandle* handler = [NSFileHandle fileHandleForReadingAtPath:_fileURL];
[handler seekToFileOffset:(unsigned long long)_range.location];
NSData* body = [handler readDataOfLength:_range.length];

NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:url]];
[request setHTTPMethod:@"POST"];
[request setValue:@"video/mp4" forHTTPHeaderField:@"Content-Type"];
[request setValue:[NSString stringWithFormat:@"%d",body.length] forHTTPHeaderField:@"Content-Length"];
[request setValue:@"no-cache" forHTTPHeaderField:@"Cache-Control"];
[request setHTTPBody:body];

然後伺服器接收body 二進制流

3、如何通過遠程桌面音頻重定向欣賞遠程伺服器上播放的音樂 !

而另一個選項留在遠程計算機(Leave at remote computer)則是在伺服器上播放時聲音輸出仍舊在遠程計算機的音箱或者Mic里。這個技術的大致原理呢,在遠程計算機上(不管是Win2003的終端服務還是WinXP的遠程桌面,實際是都是基於RDP的Windows Terminal Service),在客戶段連接上之後,會啟用一個Microsoft RDP 音頻驅動程序(Microsoft RDP Audio Driver ),這個驅動的工作就是負責接管遠程計算機上正在播放的音頻,把它壓縮之後作為網路流傳遞到客戶端,再由RDP客戶端把這個音頻網路流發送到本地音效卡上作為輸出。但是,默認情況下,這個選項設置完成之後,在伺服器上播放音樂時,卻仍舊會提示聲音設備沒有正常安裝或者被別的程序佔用或者聲音設備工作不正常而導致Meida Player無法播放文件。("Windows Media Player cannot play the file because there is a problem with your sound device. There might not be a sound device installed on your computer, it might be in use by another program, or it might not be ing properly.")。在檢查音量控制時,可以看到Microsoft RDP Audio Driver是顯示正常,而在系統的聲音和音頻設備里也能看到音效卡設備都運轉正常。如果出現這種情況,那麼就是由於遠程終端伺服器的配置導致的。在遠程終端伺服器上,進入管理工具 -> 終端服務配置 -〉連接-〉RDP-Tcp 右鍵,屬性,客戶端設置,最下面有個禁用下列項目,把音頻映射 的選項清楚,確定後退出重新遠程登錄到遠程終端伺服器上,再啟動Media Player播放音樂,就能在你本機客戶端上的耳機里聽到音樂飄出來了。跟Win2003相反,在Windows XP里,這個選項默認是允許音頻重定向到RDP客戶端的。但是如果被不小心更改了,因為WinXP里沒有終端服務配置這個管理工具,所以要改回來就相當麻煩了,需要在組策略對象編輯器里才能更改。運行-> MMC -> 文件 -> 添加/刪除管理單元 -> 添加 -> 組策略對象編輯器 -> 添加 -> 本地計算機 -> 完成 -〉關閉 -> 確定, 回到MMC界面。選擇 計算機配置-> 管理模板 -> Windows 組件 -> 終端服務 -> 客戶端/伺服器數據重定向,允許音頻重定向,改成已啟用,確定,退出MMC,重新登錄即可。再加一段:Microsoft RDP Audio Driver(emulated),這個你在使用remote desktop時可以看到,前提是server端要有音效卡,否則ms的這個驅動默認禁音,改了也沒用,主要是directsound輸出到哪裡?

4、如何用AudioUnit播放從流伺服器上獲取的的音頻數據

切包 copy到mData
OSStatus playCallback(void *inRefCon,
AudioUnitRenderActionFlags *ioActionFlags,
const AudioTimeStamp *inTimeStamp,
UInt32 inBusNumber,
UInt32 inNumberFrames,
AudioBufferList *ioData)
{
AudioPlayer *THIS = (__bridge AudioPlayer *)inRefCon;

//How do I use the AudioUnit to play the audio stream from server?

return noErr;

}
這個是我的回調函數,裡面具體改些么寫, 寫完有大神能指點下。 還有就是,使用AudioUnit進行播放, 什麼情況下,會調用這個播放回調, 希望大神也指點指點。

下面是我從伺服器獲取數據的代碼:
- (void)openPlayThreadWithRtmpURL:(NSString *)rtmpURL {
spx_int16_t *input_buffer;

do {
if (self.rtmpDelegate) {
[self.rtmpDelegate evenCallbackWithEvent:2000];
}

//init speex decoder and config;
speex_bits_init(&dbits);
dec_state = speex_decoder_init(&speex_wb_mode);

speex_decoder_ctl(dec_state, SPEEX_GET_FRAME_SIZE, &dec_frame_size);

input_buffer = malloc(dec_frame_size * sizeof(short));

NSLog(@"Init Speex decoder success frame_size = %d",dec_frame_size);

//init rtmp
pPlayRtmp = RTMP_Alloc();
RTMP_Init(pPlayRtmp);
NSLog(@"Play RTMP_Init %@\n", rtmpURL);

if (!RTMP_SetupURL(pPlayRtmp, (char*)[rtmpURL UTF8String])) {
NSLog(@"Play RTMP_SetupURL error\n");
if(self.rtmpDelegate) {
[self.rtmpDelegate evenCallbackWithEvent:2002];
}
break;
}

if (!RTMP_Connect(pPlayRtmp, NULL) || !RTMP_ConnectStream(pPlayRtmp, 0)) {
NSLog(@"Play RTMP_Connect or RTMP_ConnectStream error\n");
if(self.rtmpDelegate) {
[self.rtmpDelegate evenCallbackWithEvent:2002];
}
break;
}

if(self.rtmpDelegate) {
[self.rtmpDelegate evenCallbackWithEvent:2001];
}
NSLog(@"Player RTMP_Connected \n");

RTMPPacket rtmp_pakt = {0};
isStartPlay = YES;
while (isStartPlay && RTMP_ReadPacket(pPlayRtmp, &rtmp_pakt)) {
if (RTMPPacket_IsReady(&rtmp_pakt)) {
if (!rtmp_pakt.m_nBodySize) {
continue;
}
if (rtmp_pakt.m_packetType == RTMP_PACKET_TYPE_AUDIO) {
NSLog(@"Audio size = %d head = %d time = %d", rtmp_pakt.m_nBodySize, rtmp_pakt.m_body[0], rtmp_pakt.m_nTimeStamp);
speex_bits_read_from(&dbits, rtmp_pakt.m_body + 1, rtmp_pakt.m_nBodySize - 1);
speex_decode_int(dec_state, &dbits, input_buffer); //獲取到的,並且解碼成功的數據就存放在這個 input_buffer裡面
//怎麼用AudioUnit將input_buffer里的數據進行播放?

free(sourceBuffer.mData);
NSLog(@"解碼成功!");
} else if (rtmp_pakt.m_packetType == RTMP_PACKET_TYPE_VIDEO) {
// 處理視頻數據包
} else if (rtmp_pakt.m_packetType == RTMP_PACKET_TYPE_INVOKE) {
// 處理invoke包
NSLog(@"RTMP_PACKET_TYPE_INVOKE");
RTMP_ClientPacket(pPlayRtmp,&rtmp_pakt);
} else if (rtmp_pakt.m_packetType == RTMP_PACKET_TYPE_INFO) {
// 處理信息包
//NSLog(@"RTMP_PACKET_TYPE_INFO");
} else if (rtmp_pakt.m_packetType == RTMP_PACKET_TYPE_FLASH_VIDEO) {
// 其他數據
int index = 0;
while (1) {
int StreamType; //1-byte
int MediaSize; //3-byte
int TiMMER; //3-byte
int Reserve; //4-byte
char* MediaData; //MediaSize-byte
int TagLen; //4-byte

StreamType = rtmp_pakt.m_body[index];
index += 1;
MediaSize = bigThreeByteToInt(rtmp_pakt.m_body + index);
index += 3;
TiMMER = bigThreeByteToInt(rtmp_pakt.m_body + index);
index += 3;
Reserve = bigFourByteToInt(rtmp_pakt.m_body + index);
index += 4;
MediaData = rtmp_pakt.m_body + index;
index += MediaSize;
TagLen = bigFourByteToInt(rtmp_pakt.m_body + index);
index += 4;
//NSLog(@"bodySize:%d index:%d",rtmp_pakt.m_nBodySize,index);
//LOGI("StreamType:%d MediaSize:%d TiMMER:%d TagLen:%d\n", StreamType, MediaSize, TiMMER, TagLen);
if (StreamType == 0x08) {
//音頻包
//int MediaSize = bigThreeByteToInt(rtmp_pakt.m_body+1);
// LOGI("FLASH audio size:%d head:%d time:%d\n", MediaSize, MediaData[0], TiMMER);
speex_bits_read_from(&dbits, MediaData + 1, MediaSize - 1);
speex_decode_int(dec_state, &dbits, input_buffer);

//[mAudioPlayer putAudioData:input_buffer];
// putAudioQueue(output_buffer,dec_frame_size);
} else if (StreamType == 0x09) {
//視頻包
// LOGI( "video size:%d head:%d\n", MediaSize, MediaData[0]);
}
if (rtmp_pakt.m_nBodySize == index) {
break;
}
}
}
RTMPPacket_Free(&rtmp_pakt);
}
}
if (isStartPlay) {
if(self.rtmpDelegate) {
[self.rtmpDelegate evenCallbackWithEvent:2005];
}
isStartPlay = NO;
}
} while (0);
[mAudioPlayer stopPlay];
if (self.rtmpDelegate) {
[self.rtmpDelegate evenCallbackWithEvent:2004];
}
if (RTMP_IsConnected(pPlayRtmp)) {
RTMP_Close(pPlayRtmp);
}
RTMP_Free(pPlayRtmp);
free(input_buffer);
speex_bits_destroy(&dbits);
speex_decoder_destroy(dec_state);

}

5、怎樣搭建能實時傳輸avi視頻及wav音頻的流媒體伺服器,用什麼軟體?

avi是無壓縮的視頻,且全部載入完成後,才能播放,不利於進行網路傳輸。一般用流媒體視頻,音頻,wmv,wma來代替,架一台windows 伺服器,通過Windows media service軟體就可以實現視,音頻直播。

6、ajax可以接收伺服器返回的音頻流么

用隱藏frame。

7、請問如何創建一個流式音頻伺服器使用Broadwave

一旦該文件被下載點擊「打開」運行安裝文件。第2步
打開Broadwave點擊桌面上的圖標或定位在程序文件Broadwave。第3步
點擊「設置」菜單中的文件。這將打開設置窗口。從這個窗口中,載入,如麥克風錄制的文件或現場音頻組件。第4步
配置伺服器的信息。輸入Internet路由的設置窗口的信息。這是每個ISP不同。審查時提供的信息設置Internet連接或聯系您的互聯網服務提供商ISP的獲取信息。第5步
點擊「連接」連接到互聯網。等待互聯網窗口載入。這個窗口有一個鏈接,你需要放在網站上的流式音頻名單。第6步
放置在網站上的聯系,並嘗試出來。始終測試流至少從三個不同的計算機上的音頻。這確保了對各種系統音頻上傳正確。

8、伺服器沒音效卡遠程桌面連接怎麼實現聽到伺服器的聲音

windows2003可以,windows2008好像不可以。貌似2003是將客戶端音效卡映射到伺服器,而2008是將伺服器音效卡映射到客戶端。本人感覺,沒有驗證,僅供參考。


----------最新答案是可以。如下:


默認情況下,在連接到運行 Windows Server 2008 R2、Windows Server 2008 或 Windows Server 2003 的計算機時,不允許進行音頻和視頻播放重定向。在連接到運行 Windows 7、Windows Vista 或 Windows XP Professional 的計算機時,默認情況下允許進行音頻和視頻播放重定向。

所以在連接到運行 Windows Server 2008 R2、Windows Server 2008 或 Windows Server 2003 的計算機時,如果禁用此策略設置,則不允許進行音頻和視頻播放重定向,即使在 RDC 中指定音頻播放重定向或在 .rdp 文件中指定視頻播放也是如此。


連接到運行 Windows Server 2008 R2、Windows Server 2008 或 Windows Server 2003 的計算機時要在組策略中啟用。


------伺服器沒音效卡,遠程桌面連接也是可以聽到伺服器聲音的。


過程:

1、組策略設置

2、在任務面板啟動音頻服務

3、選擇音頻設備

4、重啟設備,ok。


別忘記,在客戶端的指定音頻播放的重定向。

9、如何在網頁中添加自己伺服器上的音頻文件

找個音樂播放器的代碼加到網頁源文件里就行,再把音頻文件地址復制上去就哦了!

麻煩採納,謝謝!

10、伺服器沒音效卡遠程桌面連接怎麼實現聽到伺服器的聲音

1、打開本地機器的遠程登錄功能,這里介紹一種快捷的方式。」Win+R」調出「運行」窗口,輸入「mstsc」,並按下回車鍵。
2、在」遠程桌面連接」窗口右下角,點擊」顯示選項」。
3、配置遠程音頻設置。本地資源 – 遠程音頻 – 設置。
4、遠程音頻播放 – 在此計算機上播放。
需要在雲主機上進行的配置:
5、正常登錄雲主機,允許「音頻映射」。步驟:開始 – 管理工具 – 終端服務配置。
6、在「終端服務配置\連接」的窗口中,終端服務配置 – 「RDP-Tcp」 – 屬性。
7、允許「音頻映射」。步驟:「客戶端設置」頁簽 - 禁用下列項目 – 去除「音頻映射」 – 應用 – 確定。
8、提示「已對系統注冊表進行配置更改;但是,目前在RDP-Tcp連接上活動的用戶會話沒有改變」,所以,需要注銷登錄,重新再登錄一次。
9、注銷本次登錄,然後重新打開遠程鏈接,雲主機內部,下載安裝酷狗音樂播放器,終於聽到了久違的」Hello Kugou!「,測試成功!

與音頻流伺服器相關的知識