时间:2021-05-20
本文实例讲述了C语言使用libZPlay录制声音并写到文件的方法。分享给大家供大家参考。具体实现方法如下:
/** * Record samples from line-in and save to out.mp3 * */#define WIN32_LEAN_AND_MEAN#include <windows.h>#include <olectl.h>#include <ole2.h>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <conio.h>#include <dos.h>#include <conio.h>#include "../include/libzplay.h"using namespace libZPlay;ZPlay* player;int nRate = 100;int nPitch = 100;int nTempo = 100;int fCenterCut = 0;int fSideCut = 0;int fMixChannels = 0;int lVolume = 100;int rVolume = 100;int fPause = 0;int fEcho = 0;int fEq = 0;int fReverse = 0;TStreamStatus status;TStreamTime pos;int main(int argc, char **argv){ // clear screen system("CLS"); // create class instance player = CreateZPlay(); // chek if we have class instance if(player == 0) { printf("Error: Can't create class instance !\nPress key to exit.\n"); getch(); return 0; } // get library version int ver = player->GetVersion(); // check if we have version 2.00 and above if(ver < 200) { printf("Error: Need library version 2.00 and above !\nPress key to exit.\r\n"); getch(); player->Release(); return 0; } // display version info printf("libZPlay v.%i.%02i\r\n\r\n", ver / 100, ver % 100); printf( "x: play \tj: fade out \ti: side cut \td: pitch down\r\n" "c: pause \tk: fade in \to: center cut \tf: pitch up\r\n" "v: stop \tl: loop \tn: volume down\tg: tempo down\r\n" "y: rew \tp: equalizer \tm: volume up \th: tempo up\r\n" "b: fwd \te: echo \ta: rate down \r\n" "r: reverse \tt: channel mix\ts: rate up \tq: quit\r\n\r\n"); // open wavein using Line In if(player->OpenFile("wavein://src=line;volume=50;", sfAutodetect) == 0) { printf("Error: %s\nPress key to exit.\r\n", player->GetError()); getch(); player->Release(); return 0; } // set wave output to disk file, mp3 encoding if(player->SetWaveOutFile("out.mp3", sfMp3, 1) == 0) { printf("Error: %s\nPress key to exit.\r\n", player->GetError()); getch(); player->Release(); return 0; } // get stream info TStreamInfo pInfo; player->GetStreamInfo(&pInfo); // display info about stream char *sVbr = "CBR"; if(pInfo.VBR) sVbr = "VBR"; printf("\r\n%s %i Hz %s Channel: %u Length: %02i:%02i:%02i:%02i\r\n\r\n", pInfo.Description, pInfo.SamplingRate, sVbr, pInfo.ChannelNumber, pInfo.Length.hms.hour, pInfo.Length.hms.minute, pInfo.Length.hms.second, pInfo.Length.hms.millisecond); printf("Status| kbps | POS: |Echo|Equ|Cut|Fade|Rev|Rate|Pitch|Tempo|Vol|Loop|Ch mix|\r\n"); // start playing if(player->Play() == 0) { printf("Error: %s\nPress key to exit.\r\n", player->GetError()); player->Release(); // delete ZPlay class return 0; } while(1) { // get current status player->GetStatus(&status); char *st = 0; if(status.fPlay) st = "Play "; else if(status.fPause) st = "Pause"; else st = "Stop "; // get current position player->GetPosition(&pos); printf("%s %04i %02i:%02i:%02i %i %i %i %i %i %03i %03i %03i %03i %i %i\r", st, player->GetBitrate(0), pos.hms.hour, pos.hms.minute, pos.hms.second, status.fEcho, status.fEqualizer, status.fVocalCut, status.fSlideVolume, status.fReverse, player->GetRate(), player->GetPitch(), player->GetTempo(), lVolume, status.nLoop, fMixChannels ); if(kbhit()) { int a = getch(); switch(a) { case 'i': // side cut fSideCut = !fSideCut; player->StereoCut(fSideCut, 1, 0); fCenterCut = 0; break; case 'o': // center fCenterCut = !fCenterCut; player->StereoCut(fCenterCut, 0, 0); fSideCut = 0; break; case 's': // higher rate nRate += 5; player->SetRate(nRate); break; case 'a': // lower rate nRate -= 5; if(nRate < 0) nRate = 0; player->SetRate(nRate); break; case 'd': // lower pitch nPitch -= 5; if(nPitch < 0) nPitch = 0; player->SetPitch(nPitch); break; case 'f': // higher pitch nPitch += 5; player->SetPitch(nPitch); break; case 'g': // lower tempo nTempo -= 5; if(nTempo < 0) nTempo = 0; player->SetTempo(nTempo); break; case 'h': // higher tempo nTempo += 5; player->SetTempo(nTempo); break; case 'r': // reverse mode fReverse = !fReverse; if(player->ReverseMode(fReverse) == 0) { printf("Error: %s\n", player->GetError()); fReverse = 0; } break; case 'p': // enable or disable equalizer { fEq = !fEq; player->EnableEqualizer(fEq); if(fEq) { player->SetEqualizerPreampGain(-100000); player->SetEqualizerBandGain(0, 104000); player->SetEqualizerBandGain(1, 104000); player->SetEqualizerBandGain(2, 104000); } } break; case 'l': // play loop { TStreamTime pCurrentTime; player->GetPosition(&pCurrentTime); TStreamTime pEndTime; pEndTime.ms = pCurrentTime.ms + 5000; player->PlayLoop(tfMillisecond, &pCurrentTime, tfMillisecond, &pEndTime ,5, 1); } break; case 'j': // fade out volume { TStreamTime start; TStreamTime end; player->GetPosition(&start); end.sec = start.sec + 5; player->SlideVolume( tfSecond, &start, 100,100, tfSecond, &end, 0,0); } break; case 'k': // fade in volume { TStreamTime start; player->GetPosition(&start); TStreamTime end; end.sec = start.sec + 5; player->SlideVolume( tfSecond, &start, 0,0, tfSecond, &end, 100, 100); } break; case 'e': // enable echo { fEcho = !fEcho; player->EnableEcho(fEcho); } break; case 'x': // play if(player->Play() == 0) printf("Err: %s\n", player->GetError()); fPause = 0; break; case 'v': // stop player->Stop(); fPause = 0; break; case 'c': // pause if(fPause) { player->Resume(); fPause = 0; } else { player->Pause(); fPause = 1; } break; case 'y': // jump back 5 seconds { TStreamTime pTime; pTime.sec = 5; player->Seek(tfSecond, &pTime, smFromCurrentBackward); } break; case 'b': // jump forward 5 seconds { TStreamTime pTime; pTime.sec = 5; player->Seek(tfSecond, &pTime, smFromCurrentForward); } break; case 't': { // mix stereo channels to mono fMixChannels = !fMixChannels; player->MixChannels(fMixChannels, 50, 50); } break; case 'n': // volume down if(lVolume >= 5) lVolume -= 5; if(rVolume >= 5) rVolume -= 5; player->SetMasterVolume(lVolume, rVolume); break; case 'm': // volume up if(lVolume <= 95) lVolume += 5; if(rVolume <= 95) rVolume += 5; player->SetMasterVolume(lVolume, rVolume); break; case 'q': case 'Q': player->Release(); return 0; } } Sleep(50); }}希望本文所述对大家的C语言程序设计有所帮助。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
xp开机音乐设置的方法: 1、用XP系统自带的“录音机”,录制一段wav格式的声音文件,或者事先准备好一段wav格式的声音文件。 2、将wav文件拷贝到C:
把视频中音乐剪掉的方法: 1、首先在电脑上安装并打开楼月语音聊天录音软件,然后点击“文件”,“设置”菜单。 2、设置为“录制从电脑播放的声音“,其它参数使用
在装有iOS11或更高版本的iPhone/iPad上,我们可以使用系统自带的录屏功能来录制屏幕并采集声音。解决方法:但是在实际使用中,用户可能会遇到无法成功录制
屏幕录制没有声音的解决步骤如下: 屏幕录制没有声音是因为在录制之前没有将系统声音开启,需要在录制之前进行设置。 1、首先下载并安装好嗨格式录屏大师, 2、
本文实例讲述了java使用POI读取properties文件并写到Excel的方法。分享给大家供大家参考。具体实现方法如下:packagecom.hubbers