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

东莞做企业网站网络推广哪家好

东莞做企业网站,网络推广哪家好,网站建设忄金手指稳定,网站类别页面怎么做项目场景#xff1a; 在文章 qt 实现音视频的分贝检测系统中#xff0c;实现的是边播放变解析音频数据来统计音频的分贝大小#xff0c;并不满足实际项目的需求#xff0c;有的视频声音正常#xff0c;有的视频声音就偏低#xff0c;即使放到最大音量声音也是比较小 在文章 qt 实现音视频的分贝检测系统中实现的是边播放变解析音频数据来统计音频的分贝大小并不满足实际项目的需求有的视频声音正常有的视频声音就偏低即使放到最大音量声音也是比较小本文的目的是直接通过对本地视频进行检测拿出关键指标来进行对音频处理 关键依赖ffmpeg 因为依赖于ffmpeg的能力所以第一步要安装ffmpeg环境自行百度 步骤1检测max_volume 值是否小于0dB ffmpeg -i 1.mp3 -filter_complex volumedetect -c:v copy -f null /dev/null其中检测的关键指标就是 max_volume, 本次检测和处理的目标就是把 max_volume的值给提高到0dB; 步骤2如何区分是音频文件还是视频文件 可以有多种方法1可以通过后缀名来区分 2 因为代码是用qt写的可以用qt来实现代码如下 QFileInfo f(“1.mp3”); if(f.completeSuffix() mp3 || f.completeSuffix() aac || f.completeSuffix() amr || f.completeSuffix() wav || f.completeSuffix() wma )QMediaPlayer p; p.audioAvailable()步骤3处理音频使max_volume的值接近0dB 音频文件用以下指令 ffmpeg -i 1.mp3-af volume5.8dB out.mp3如果是视频文件用以下指令保持视频信息不变当然还设计到音频的编码格式 ffmpeg -i 1.mp3-af volume5.8dB -c:v copy -c:a aac out.mp3输出如下 程序设计思路 通过QProcess 调用 ffmpeg指令检测max_volume小于0的文件拿到文件列表再通过ffmpeg指令来提高音频。关键代码如下 dbdetectthread.h #ifndef DBDETECTTHREAD_H #define DBDETECTTHREAD_H#include QObject #include QThread #include QProcess #include QStringListclass DbDetectThread : public QThread {Q_OBJECT public:explicit DbDetectThread(QObject *parent nullptr);void setList(const QStringList list);virtual void run(); signals:void sigPath(const QString p, float db);void sigMsg(const QString p);void sigEnd();public slots:void readStandardOutput();void readStandardError();void processFinished(int exitCode, QProcess::ExitStatus exitStatus);void threadFinished(); //线程退出private:QProcess *pCmdProcess;QStringList pathlist;QString curFile; };#endif // DBDETECTTHREAD_Hdbdetectthread.cpp #include dbdetectthread.h #include QDebug DbDetectThread::DbDetectThread(QObject *parent): QThread{parent} {qRegisterMetaTypeQProcess::ExitStatus(QProcess::ExitStatus); }void DbDetectThread::setList(const QStringList list) {pathlist list; }//ffmpeg -i 2.wav -filter_complex volumedetect -c:v copy -f null /dev/null//需要计算分贝相差值 //ffmpeg -i 2.wav -filter:a volume80dB output2.wavvoid DbDetectThread::run() {pCmdProcess new QProcess(); //不要加thisconnect(pCmdProcess, QProcess::readyReadStandardOutput, this, DbDetectThread::readStandardOutput);connect(pCmdProcess, QProcess::readyReadStandardError, this, DbDetectThread::readStandardError);connect(pCmdProcess, QOverloadint , QProcess::ExitStatus ::of(QProcess::finished), this, DbDetectThread::processFinished);connect(this, QThread::finished, this, DbDetectThread::threadFinished);QStringList arguments;//arguments -i C:/Users/wmm/Desktop/DbDetect/voice/input.mp4 -c:v h264 -c:a aac C:/Users/wmm/Desktop/DbDetect/voice/output.mp4;//arguments -i input.mp4 -c:v h264 -c:a aac output.mp4;//arguments -i p -filter_complex volumedetect -c:v copy -f null /dev/null;//QString cmd QString(ffmpeg -i %1 -filter_complex volumedetect -c:v copy -f null /dev/null).arg(p);//QString cmd QString(ffmpeg -i C:/Users/wmm/Desktop/DbDetect/voice/input.mp4 -filter_complex volumedetect -c:v copy -f null /dev/null);//QString cmd ping www.baidu.com -w 500;//QString result;foreach(auto p, pathlist){curFile p;qDebug() start detect curFile;QString cmd QString(ffmpeg -i %1 -filter_complex volumedetect -c:v copy -f null /dev/null).arg(p);pCmdProcess-start(cmd/*,arguments*/);pCmdProcess-waitForFinished();sleep(1);}}void DbDetectThread::readStandardOutput() {qDebug() Standard output: pCmdProcess-readAllStandardOutput(); }void DbDetectThread::readStandardError() {QString errorMessage QString::fromUtf8(pCmdProcess-readAllStandardError());QStringList errlist errorMessage.split(\r\n);//qDebug() errlist.size();//qDebug() errlist;// float num 3.1415926; // QString str QString::number(num, f, 2);foreach (auto p, errlist) {if(p.contains(max_volume)){qDebug() p;int pos p.indexOf(max_volume);int pos2 p.indexOf(dB,pos);QString val p.mid(pos11,pos2-11-pos);qDebug() val;float fval val.toFloat();qDebug() fval;if(fval 0){qDebug() 小于0;emit sigPath(curFile,fval);}else{qDebug() 不小于0;}}}// 对 errorMessage 进行解析和处理...//qDebug() Standard error: pCmdProcess-readAllStandardError(); }void DbDetectThread::processFinished(int exitCode, QProcess::ExitStatus exitStatus) {qDebug() Process finished with exit code exitCode and exit status exitStatus ((QProcess*)QObject::sender())-arguments();emit sigMsg(QString(%1 检测完成exitCode %2, exitStatus %3 ).arg(curFile).arg(exitCode).arg(exitStatus)); }void DbDetectThread::threadFinished() {qDebug() __func__;emit sigEnd();pCmdProcess-deleteLater(); }dbprocessthread.h #ifndef DBPROCESSTHREAD_H #define DBPROCESSTHREAD_H#include QObject #include QThread #include QProcess #include QMap #include QMediaPlayer class DbProcessThread : public QThread {Q_OBJECT public:explicit DbProcessThread(QObject *parent nullptr);void setOutputDir(const QString dir);void setMap(const QMapQString,float map);virtual void run(); signals:void sigPath(const QString p, float db);void sigMsg(const QString p);void sigEnd();public slots:void readStandardOutput();void readStandardError();void processFinished(int exitCode, QProcess::ExitStatus exitStatus);void threadFinished(); //线程退出private:QProcess *pCmdProcess;QMediaPlayer mediaPlayer;QMapQString,float m_needProcessMap;QString m_outputDir;QString m_curSrcFile;QString m_curDesFile; };#endif // DBPROCESSTHREAD_Hdbprocessthread.cpp #include dbprocessthread.h #include QDebug #include QFileInfo DbProcessThread::DbProcessThread(QObject *parent): QThread{parent} {}void DbProcessThread::setOutputDir(const QString dir) {m_outputDir dir; }void DbProcessThread::setMap(const QMapQString, float map) {m_needProcessMap map; }void DbProcessThread::run() {pCmdProcess new QProcess(); //不要加thisconnect(pCmdProcess, QProcess::readyReadStandardOutput, this, DbProcessThread::readStandardOutput);connect(pCmdProcess, QProcess::readyReadStandardError, this, DbProcessThread::readStandardError);connect(pCmdProcess, QOverloadint , QProcess::ExitStatus ::of(QProcess::finished), this, DbProcessThread::processFinished);connect(this, QThread::finished, this, DbProcessThread::threadFinished);QMapIteratorQString, float i(m_needProcessMap);while (i.hasNext()) {i.next();QFileInfo f(i.key());qDebug() f.fileName() m_outputDir/ f.fileName();m_curSrcFile i.key();m_curDesFile m_outputDir/ f.fileName();QStringList arguments;//arguments -i i.key() -c:v h264 -c:a aac m_outputDir/ f.fileName();arguments -i i.key() -af QString(volume%1dB).arg(qAbs(i.value())) -c:v copy -c:a aac m_outputDir/ f.fileName();qDebug() arguments;emit sigMsg(QString(正在处理...%1).arg(m_curSrcFile));if(f.completeSuffix() mp3 || f.completeSuffix() aac || f.completeSuffix() amr || f.completeSuffix() wav\|| f.completeSuffix() wma ){pCmdProcess-start(QString(ffmpeg -i %1 -af \volume%2dB\ %3).arg(i.key()).arg(qAbs(i.value())).arg(m_outputDir/ f.fileName())/*,arguments*/);}else {pCmdProcess-start(QString(ffmpeg -i %1 -af \volume%2dB\ -c:v copy %3).arg(i.key()).arg(qAbs(i.value())).arg(m_outputDir/ f.fileName())/*,arguments*/);}//pCmdProcess-start(QString(ffmpeg -i %1 -af \volume%2dB\ -c:v copy -c:a aac %3).arg(i.key()).arg(qAbs(i.value())).arg(m_outputDir/ f.fileName())/*,arguments*/);pCmdProcess-waitForFinished();msleep(500);}}void DbProcessThread::readStandardOutput() {qDebug() Standard output: pCmdProcess-readAllStandardOutput(); }void DbProcessThread::readStandardError() {qDebug() Standard error: pCmdProcess-readAllStandardError(); }void DbProcessThread::processFinished(int exitCode, QProcess::ExitStatus exitStatus) {qDebug() Process finished with exit code exitCode and exit status exitStatus ((QProcess*)QObject::sender())-arguments();emit sigMsg(QString(%1 处理完成,文件保存为%2exitCode %3, exitStatus %4 ).arg(m_curSrcFile).arg(m_curDesFile).arg(exitCode).arg(exitStatus)); }void DbProcessThread::threadFinished() {qDebug() __func__;emit sigEnd();pCmdProcess-deleteLater(); }效果如图 代码上传到此 https://download.csdn.net/download/u011942101/88299291
http://www.hkea.cn/news/14449491/

相关文章:

  • 常见电子商务网站基本模式施工者网官网
  • 单纯做seo能否提升网站流量上海做网站的
  • 龙泉网站建设wordpress 博主
  • 网站h1如何自己建设一个网站
  • 网站建设结课策划书网址的英文
  • 传奇网站模板使用石家庄做家教网站
  • 常见的网站建设技术网站文件夹没有权限
  • 网站外链价格网站长期建设 运营计划
  • 无锡网站的优化哪家好电商网站开发分销商
  • 世界网站北京网站优化关键词排名
  • ftp服务器搭建设置网站信息河北网站制作公司报价
  • 山东建设管理局网站创什么网站吸引人
  • 湘潭企业网站建设 磐石网络门户网站 建设 北京 航天
  • 提升访问境外网站速度wordpress写模版
  • 做网站前期工作果洛营销网站建设公司
  • 深圳最专业的高端网站建设如何弄微信小程序店铺
  • 公司网站域名备案wordpress推广机制
  • 做seo网站 公司周口logo设计公司
  • 个人怎么建网站网站建设开发合同书(终极版)
  • 唯品会一家做特卖的网站 分析如何建一个购物网站
  • 安全培训网站如何做网站不容易被攻击
  • 做企业门户网站要准备哪些内容app 门户网站
  • 淘宝优惠网站建设宁波外贸公司一览表
  • 建设摩托车官网官方网站wordpress怎么加背景
  • 建网站的意义在试用网站做推广
  • 厦门的网站建设公司哪家好网站建设的报价为什么不同
  • linux系统网站架构做自行车网站应该注意什么
  • 贵阳58同城做网站公司有哪些个人网站备案所需材料
  • 烟台城乡建设学校96级给排水网站佛山广告设计公司排名
  • 网站 云建站中国互联网数据平台