这是一个简单的Qt应用程序,Release版再加几个dll文件即可使用。纯绿色无污染。
如图所示,点击exe文件就进入界面:
?
使用时,只要把B站缓存的Video.m4s和Audio.m4s拖入相应的编辑框就可以了。
?
点击转换按钮,指定输出路径和文件名:
?
稍等片刻,就成功了。
?
以下是主要实现代码:
void Widget::on_pushButton_clicked()
{
//打开文件
QString filedir = QCoreApplication::applicationDirPath();
QString filename = QFileDialog::getOpenFileName(
this,
"请选择要打开的video.m4s文件",
filedir,
"m4s (video.m4s)");
// 取消打开则返回
if(filename==QString(""))
return;
// 写入文件路径
flag = true;
ui->lineEdit->setText(filename);
flag = false;
}
void Widget::on_pushButton_2_clicked()
{
//打开文件
QString filedir = QCoreApplication::applicationDirPath();
QString filename = QFileDialog::getOpenFileName(
this,
"请选择要打开的audio.m4s文件",
filedir,
"m4s (audio.m4s)");
// 取消打开则返回
if(filename==QString(""))
return;
// 写入文件路径
flag = true;
ui->lineEdit_2->setText(filename);
flag = false;
}
void Widget::on_lineEdit_textChanged(const QString &arg1)
{
if(!flag)
ui->lineEdit->setText("");
}
void Widget::on_lineEdit_2_textChanged(const QString &arg1)
{
if(!flag)
ui->lineEdit_2->setText("");
}
void Widget::on_pushButton_4_clicked()
{
QString fdir = QCoreApplication::applicationDirPath();
QProcess *process = new QProcess();
QString rfile = fdir+"/Readme.txt";
QFileInfo fileInfo3(rfile);
if(!fileInfo3.isFile()){
QMessageBox::information(this, tr("错误"),tr("没有找到Readme文件!"), QMessageBox::Ok);
return;
}else{
process->start("notepad.exe \""+rfile+"\"");
}
}
// 拖动进入事件
void Widget::dragEnterEvent(QDragEnterEvent *event)
{
// 数据中是否包含URL,如果是则接收动作,否则忽略该事件
if(event->mimeData()->hasUrls())
event->acceptProposedAction();
else event->ignore();
}
// 放下事件
void Widget::dropEvent(QDropEvent *event)
{
// 获取MIME数据
const QMimeData *m = event->mimeData();
// 如果数据中包含URL
if(m->hasUrls()){
// 获取URL列表
QList<QUrl> urlList = m->urls();
// 将其中第一个URL表示为本地文件路径
QString urlName = urlList.at(0).toLocalFile();
// 如果文件路径不为空
if(!urlName.isEmpty()){
// 路径转为char*
QByteArray pathByte = urlName.toAscii();//支持中文
char* pathChar = pathByte.data();
// 获取文件名
int tmp = pathByte.lastIndexOf("/");
QByteArray fileByte = pathByte.right(pathByte.length()-tmp-1);
char* fileChar = fileByte.data();
// 判断当前控件是否被鼠标选中
if(ui->lineEdit->underMouse()){
if(!strcmp(fileChar,"video.m4s")){//strcmp: 如果 str1 等于 str2,则返回 0
flag = true;
ui->lineEdit->setText(pathChar);//还需要判断是否为video
flag = false;
}else{
QMessageBox::information(this, tr("消息"),"抱歉 只能置入vedio.m4s文件", QMessageBox::Ok);
}
}else if (ui->lineEdit_2->underMouse()){
if(!strcmp(fileChar,"audio.m4s")){
flag = true;
ui->lineEdit_2->setText(pathChar);//还需要判断是否为video
flag = false;
}else{
QMessageBox::information(this, tr("消息"),"抱歉 只能置入audio.m4s文件", QMessageBox::Ok);
}
}
}
}
}
菜鸟作品,欢迎拍砖!
成品下载地址:
?B站视频合成MP4文件,将音频视频文件合并-其它文档类资源-CSDN下载
B站缓存转MP4.zip_m4s格式转换mp4-互联网文档类资源-CSDN下载
|