日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

PJMEDIA之录音器的使用(capture sound to avi file)

發布時間:2023/12/2 编程问答 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PJMEDIA之录音器的使用(capture sound to avi file) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

為了熟悉pjmedia的相關函數以及使用方法,這里練習了官網上的一個錄音器的例子。

核心函數:

pj_status_t pjmedia_wav_writer_port_create(pj_pool_t *?pool,
??const char *?filename,
??unsigned?clock_rate,
??unsigned?channel_count,
??unsigned?samples_per_frame,
??unsigned?bits_per_sample,
??unsigned?flags,
??pj_ssize_t?buff_size,
??pjmedia_port **?p_port?
?)??

Create a media port to record streams to a WAV file. Note that the port must be closed properly (with pjmedia_port_destroy()) so that the WAV header can be filled with correct values (such as the file length). WAV writer port supports for writing audio in uncompressed 16 bit PCM format or compressed G.711 U-law/A-law format, this needs to be specified in flags param.

Parameters
poolPool to create memory buffers for this port.
filenameFile name.
clock_rateThe sampling rate.
channel_countNumber of channels.
samples_per_frameNumber of samples per frame.
bits_per_sampleNumber of bits per sample (eg 16).
flagsPort creation flags, see pjmedia_file_writer_option.
buff_sizeBuffer size to be allocated. If the value is zero or negative, the port will use default buffer size (which is about 4KB).
p_portPointer to receive the file port instance.
Returns
PJ_SUCCESS on success.
pj_status_t pjmedia_snd_port_create_rec(pj_pool_t *?pool,
??int?index,
??unsigned?clock_rate,
??unsigned?channel_count,
??unsigned?samples_per_frame,
??unsigned?bits_per_sample,
??unsigned?options,
??pjmedia_snd_port **?p_port?
?)??

Create unidirectional sound device port for capturing audio streams from the sound device with the specified parameters.

Parameters
poolPool to allocate sound port structure.
indexDevice index, or -1 to let the library choose the first available device.
clock_rateSound device's clock rate to set.
channel_countSet number of channels, 1 for mono, or 2 for stereo. The channel count determines the format of the frame.
samples_per_frameNumber of samples per frame.
bits_per_sampleSet the number of bits per sample. The normal value for this parameter is 16 bits per sample.
optionsOptions flag.
p_portPointer to receive the sound device port instance.
Returns
PJ_SUCCESS on success, or the appropriate error code.
pj_status_t pjmedia_endpt_create(pj_pool_factory *?pf,
??pj_ioqueue_t *?ioqueue,
??unsigned?worker_cnt,
??pjmedia_endpt **?p_endpt?
?)??

Create an instance of media endpoint.

Parameters
pfPool factory, which will be used by the media endpoint throughout its lifetime.
ioqueueOptional ioqueue instance to be registered to the endpoint. The ioqueue instance is used to poll all RTP and RTCP sockets. If this argument is NULL, the endpoint will create an internal ioqueue instance.
worker_cntSpecify the number of worker threads to be created to poll the ioqueue.
p_endptPointer to receive the endpoint instance.
Returns
PJ_SUCCESS on success.
pj_status_t pjmedia_snd_port_connect(pjmedia_snd_port *?snd_port,
??pjmedia_port *?port?
?)??

Connect a port to the sound device port. If the sound device port has a sound recorder device, then this will start periodic function call to the port's put_frame() function. If the sound device has a sound player device, then this will start periodic function call to the port's get_frame() function.

For this version of PJMEDIA, the media port MUST have the same audio settings as the sound device port, or otherwise the connection will fail. This means the port MUST have the same clock_rate, channel count, samples per frame, and bits per sample as the sound device port.

Parameters
snd_portThe sound device port.
portThe media port to be connected.
Returns
PJ_SUCCESS on success, or the appropriate error code.
//capture sound to wav file //heat nan -test #include<pjmedia.h> #include<pjlib.h> #include<stdio.h> #include<stdlib.h>#define CLOCK_RATE 44100 //采樣率 #define NCHANNELS 2 //通道數 #define SAMPLES_PER_FRAME (NCHANNELS *(CLOCK_RATE*10/1000)) //每幀包含的采樣數 #define BITS_PER_SAMPLE 16 //每個抽樣的字節數int main() {pj_caching_pool cp;pjmedia_endpt *med_endpt;pj_pool_t *pool;pjmedia_port *file_port; pjmedia_snd_port *snd_port;pj_status_t status;char tmp[10];char filename[20];status=pj_init();if(status!=PJ_SUCCESS){PJ_LOG(3,("failed","pj_init"));}pj_caching_pool_init(&cp,&pj_pool_factory_default_policy,0); //創建endpointstatus=pjmedia_endpt_create(&cp.factory,NULL,1,&med_endpt);if(status!=PJ_SUCCESS){PJ_LOG(3,("failed","pjmedia_endpt_create"));}pool=pj_pool_create(&cp.factory,"wav_recoder",4000,4000,NULL); //輸入要保存錄音的文件名 PJ_LOG(3,("wav_recorder","please input the file name!"));gets(filename); //創建錄音端口 把音頻流寫成wav文件status=pjmedia_wav_writer_port_create(pool,filename,CLOCK_RATE,NCHANNELS,SAMPLES_PER_FRAME,BITS_PER_SAMPLE,0,0,&file_port //指向接收該實例的pjmedia_port);if(status!=PJ_SUCCESS){PJ_LOG(3,("failed","pjmedia_wav_write_port_create"));} //創建單向的音頻設備端口用來捕獲音頻status=pjmedia_snd_port_create_rec(pool,-1,PJMEDIA_PIA_SRATE(&file_port->info),PJMEDIA_PIA_CCNT(&file_port->info),PJMEDIA_PIA_SPF(&file_port->info),PJMEDIA_PIA_BITS(&file_port->info),0,&snd_port);if(status!=PJ_SUCCESS){PJ_LOG(3,("failed","pjmedia_snd_port_create_rec"));} //連接兩個端口開始錄音status=pjmedia_snd_port_connect(snd_port,file_port);if(status!=PJ_SUCCESS){PJ_LOG(3,("failed","pjmedia_snd_port_connect"));}pj_thread_sleep(10);//顯示終止信息 puts("PRESS <ENTER> to stop recording and quit");if(fgets(tmp,sizeof(tmp),stdin)==NULL){puts("EOF while reading stdin,will quit now..");}//養成良好習慣,吃完飯總要刷刷碗吧! pjmedia_snd_port_destroy(snd_port);pjmedia_port_destroy(file_port);pj_pool_release(pool);pjmedia_endpt_destroy(med_endpt);pj_caching_pool_destroy(&cp);pj_shutdown();return 0; // pj_thread_sleep(10);}

?

轉載于:https://www.cnblogs.com/heat-man/p/3664558.html

總結

以上是生活随笔為你收集整理的PJMEDIA之录音器的使用(capture sound to avi file)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 在线中文字幕第一页 | 91国偷自产中文字幕久久 | av永久在线| 国产v片在线观看 | 久伊人网 | 人人超碰97 | 麻豆视频一区二区 | 少妇饥渴难耐 | 在线xxxx | 免费精品在线 | www.青青草| 欧美精品一区二区三区久久 | 日本一级三级三级三级 | 2021天天干| 亚洲在线天堂 | 久久国产精品区 | 久久精品免费 | 国产精品一线天 | 午夜尤物 | 日本人妖网站 | 久久久国产一区二区 | 国产乱码精品一区二区 | 熊猫成人网 | 成人影 | 黄色一级免费片 | 国产女主播喷水视频在线观看 | 一级片久久久久 | 91精品一区二区三区综合在线爱 | wwww在线观看 | 国产69视频在线观看 | 国产人妖ts | 亚洲天堂岛 | 精品少妇爆乳无码av无码专区 | 国产精品蜜臀 | 韩国明星乱淫(高h)小说 | 麻豆国产原创 | 午夜精品一区二 | 免费看的黄色 | 中文字幕在线永久 | 黑人操欧美人 | 美女破处视频 | 不卡的av在线 | 中文精品一区二区三区 | 亚洲成人av在线播放 | аⅴ资源新版在线天堂 | 亚洲自拍偷拍区 | 激情小说av| 日本欧美色 | 五月99久久婷婷国产综合亚洲 | 韩国电影大尺度在线观看 | 久久精品国产av一区二区三区 | 毛片官网 | 久久久久久久蜜桃 | 国产精品区在线 | 精品国产乱码久久久久久蜜柚 | 男同毛片 | 黄色免费片 | 亚洲少妇xxx | 成人毛片视频免费看 | 欧美在线视频免费观看 | 台湾av在线 | 亚洲欧美日韩综合一区二区 | 亚洲你懂得 | 精品福利影院 | 国产毛片毛片 | 国产视频欧美 | 国模精品一区二区三区 | 国产一区二区99 | 免费看91| 手机看片欧美日韩 | 99re这里都是精品 | 一级黄色a毛片 | 成人一级大片 | 国产一区999 | 精品国产一区二区三区久久狼黑人 | 公交上高潮的丁芷晴 | 操女人视频网站 | 少妇久久久久久 | 春色激情 | 国产一区在线观看视频 | 高潮毛片无遮挡免费看 | 99re9| 青青在线免费观看 | 秋霞毛片少妇激情免费 | 在线免费av网址 | 午夜在线观看免费视频 | 免费黄在线看 | 黄色资源在线 | 国产精品自在线 | 国产精品入口麻豆 | 欧美成人三区 | 99这里只有精品视频 | 日韩黄色免费电影 | 自拍视频在线观看 | 欧美日韩人妻精品一区二区三区 | 你懂的在线观看网站 | 成人免费视频一区 | 黄色片网站国产 | 国产女上位|