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!“,测试成功!