当前位置: 首页 > news >正文

杭州市做网站wordpress站点标题是什么

杭州市做网站,wordpress站点标题是什么,网站做网站反向代理违法,提供网站制作价格本课对应源文件下载链接#xff1a; https://download.csdn.net/download/XiBuQiuChong/88680079 FFmpeg作为一套庞大的音视频处理开源工具#xff0c;其源码有太多值得研究的地方。但对于大多数初学者而言#xff0c;如何快速利用相关的API写出自己想要的东西才是迫切需要…本课对应源文件下载链接 https://download.csdn.net/download/XiBuQiuChong/88680079 FFmpeg作为一套庞大的音视频处理开源工具其源码有太多值得研究的地方。但对于大多数初学者而言如何快速利用相关的API写出自己想要的东西才是迫切需要的至于原理的进一步学习那是以后的事情。 在上一课中我们已经成功获取到视频流并显示这节课我们将参考视频的工作流程来获取音频并播放。 1.与处理视频的过程差不多要播放音频就要先初始化音频解码器在函数runFFmpeg中加入以下代码 //音频解码器 int audioIndex -1; AVCodec *aDecodec; AVCodecContext *aDecodeCtx NULL;//初始化并打开音频解码器 aDecodec avcodec_find_decoder(inFormatCtx-streams[audioIndex]-codecpar-codec_id); aDecodeCtx avcodec_alloc_context3(aDecodec); avcodec_parameters_to_context(aDecodeCtx, inFormatCtx-streams[audioIndex]-codecpar); avcodec_open2(aDecodeCtx, aDecodec, 0); 2.在处理视频数据包后我们可以接着处理音频数据包并把音频帧转换为pcm数组加入音频队列备用 if (normalPkt.stream_index videoIndex){ret avcodec_send_packet(vDecodeCtx, normalPkt);ret avcodec_receive_frame(vDecodeCtx, deVideoFrame);av_packet_unref(normalPkt);ret sws_scale(bgrSwsCtx, (const uint8_t* const*)deVideoFrame-data, deVideoFrame-linesize, 0, deVideoFrame-height, bgrFrame.data, bgrFrame.linesize);srcMat cv::Mat(bgrFrame.height, bgrFrame.width, CV_8UC3, bgrFrame.data[0]);//imshow(viceo, srcMat);//cv::waitKey(10);mainDlg-drawMatOfPlay(srcMat);av_frame_unref(deVideoFrame);}else if (normalPkt.stream_index audioIndex){ret avcodec_send_packet(aDecodeCtx, normalPkt);while (1){ret avcodec_receive_frame(aDecodeCtx, deAudioFrame);if (ret ! 0){break;}else{int originAudioDataSize deAudioFrame-linesize[0] * deAudioFrame-channels 1;outAudioBuff new char[originAudioDataSize];int outSampleNum convertAudioFrameToAudioBuff(deAudioFrame, outAudioBuff, originAudioDataSize);int finalAudioDataSize outSampleNum *av_get_bytes_per_sample(AV_SAMPLE_FMT_S16) *deAudioFrame-channels;tmpAudioQueObj.audioDataArr outAudioBuff;tmpAudioQueObj.audioDataSize finalAudioDataSize;EnterCriticalSection(queLock);outAudioQue.push(tmpAudioQueObj);if (outAudioQue.size() 50){free(outAudioQue.front().audioDataArr);outAudioQue.front().audioDataSize 0;outAudioQue.front().audioDataArr NULL;outAudioQue.front().audioDataSize NULL;outAudioQue.pop();}LeaveCriticalSection(queLock);}av_frame_unref(deAudioFrame);}av_packet_unref(normalPkt);} 3.为了能播放声音需要先打开扬声器然后把队列中的数据送入扬声器 //打开扬声器 void fmlp::openSpeaker(){outWaveform.wFormatTag WAVE_FORMAT_PCM;outWaveform.nSamplesPerSec 44100;outWaveform.wBitsPerSample 16;outWaveform.nChannels 2;//waveform.nBlockAlign (waveform.wBitsPerSample * waveform.nChannels) / 8;outWaveform.nBlockAlign (outWaveform.wBitsPerSample*outWaveform.nChannels) 3;outWaveform.nAvgBytesPerSec outWaveform.nBlockAlign * outWaveform.nSamplesPerSec;outWaveform.cbSize 0;waveOutOpen(hWaveOut, WAVE_MAPPER, outWaveform, (DWORD)(speakerCallback), 0L, CALLBACK_FUNCTION);waveOutSetVolume(hWaveOut, 4 * 0xffffffff);waveHdrArr new WAVEHDR[audioDataArrNum];for (int i 0; i audioDataArrNum; i){waveHdrArr[i].lpData new char[finalAudioDataSize];waveHdrArr[i].dwBufferLength finalAudioDataSize;waveHdrArr[i].dwBytesRecorded 0;waveHdrArr[i].dwUser 0;waveHdrArr[i].dwFlags 0;waveHdrArr[i].dwLoops 0;waveHdrArr[i].lpNext NULL;waveHdrArr[i].reserved 0;waveOutPrepareHeader(hWaveOut, waveHdrArr[i], sizeof(WAVEHDR));}} //扬声器回调函数 DWORD CALLBACK fmlp::speakerCallback(HWAVEOUT hwaveout, UINT uMsg, DWORD dwInstance, DWORD dwParam1, DWORD dwParam2) {switch (uMsg){case WOM_OPEN:break;case WOM_DONE:{LPWAVEHDR pwh (LPWAVEHDR)dwParam1;if (pwh-lpData){free(pwh-lpData);pwh-dwBufferLength 0;pwh-lpData NULL;pwh-dwBufferLength NULL;}}break;case WOM_CLOSE:break;default:break;}return 0; }//播放声音 DWORD WINAPI fmlp::playAudioThreadProc(LPVOID lpParam){fmlp *pThis (fmlp*)lpParam;pThis-playAudio();return 0;}int fmlp::playAudio(){int i 0;while (true){if (outAudioQue.empty()){Sleep(5);continue;}EnterCriticalSection(queLock);if (waveHdrArr[i].dwFlags WHDR_PREPARED){waveHdrArr[i].lpData (LPSTR)outAudioQue.front().audioDataArr;waveHdrArr[i].dwBufferLength outAudioQue.front().audioDataSize;waveOutWrite(hWaveOut, waveHdrArr[i], sizeof(WAVEHDR));outAudioQue.pop();i;}LeaveCriticalSection(queLock);if (i audioDataArrNum){i 0;}Sleep(5);}} 4.这样一个最简单的既能播放视频也能播放音频的播放器就完成了。
http://www.dnsts.com.cn/news/106552.html

相关文章:

  • 杭州网站网站建设行业网站系统
  • 红安建设局投诉网站自助网站建设哪家效益快
  • 建设悦生活网站嘉兴做网站
  • 政务网站建设的方向石台做网站
  • 东营做网站多少钱wordpress简称
  • 188旅游网站源码下载各类网页设计
  • php婚庆网站源码网站发外链
  • 做p2p理财网站嘉兴高端建站公司
  • 做网站的所有代码网站建设属于高新技术收入吗
  • 做商城网站数据库分类该有哪些网站信息资源建设包括哪些
  • 做网站市场价格多少钱线下推广的渠道和方法
  • 杭州建设网站的公司哪家好北京百度推广优化
  • 巴中市建设局网站做网站安全的公司有哪些
  • 下载网站建设wordpress 顶部栏 悬浮
  • 网站可以做充值吗下城区网站建设价格查询
  • 做淘客网站多少钱买域名
  • 农产品网站建设策划自定义域名
  • 濮阳建设工程网站农业公司网站建设
  • 网站制作算是什么专业上海正规seo公司
  • 海尔网站建设情况卖高权重网站做跳转
  • 分类网站建设微信手机网站制作
  • 网站申请要多少钱做教育网站有什么好处
  • 我国网站无障碍建设仍处于重庆电子商务网站
  • 百度推广交了钱不给做网站敬请期待英语怎么说
  • 020网站设计欧赛科技网站建设
  • 电商购物网站模板下载未成年在线观看视频播放免费
  • 网站seo策划方案设计晋中建设局查合同网站
  • 甘肃省安装建设集团公司网站北京网页制作网站
  • 案例学——网页设计与网站建设汽车拆车件网上商城
  • 上传wordpress网站网站开发行业