代码拉取完成,页面将自动刷新
同步操作将从 liyanan/Qml--mediaPlayer 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
#include "mythread.h"
void MyThead::getFile(QUrl &sd)
{
urls = sd;
if (!this->isRunning())
this->start();
}
void MyThead::run()
{
auto &&url = this->urls;
std::string imagePath = url.toLocalFile().toStdString();
AVFormatContext *fmt_ctx = nullptr;
AVDictionaryEntry *tag = nullptr;
int ret = 0;
qDebug() << "当前的资源为" << imagePath.c_str();
if ((ret = avformat_open_input(&fmt_ctx, imagePath.c_str(), nullptr, nullptr))) {
qDebug() << "Fail to open file";
return;
} else {
avformat_find_stream_info(fmt_ctx, nullptr);
// 读取为秒 //将此数据传到 数据库中去
QMap<QString, QString> maps;
//读取metadata中所有的tag
while ((tag = av_dict_get(fmt_ctx->metadata, "", tag, AV_DICT_IGNORE_SUFFIX))) {
maps.insert(tag->key, tag->value);
}
if (fmt_ctx->iformat->read_header(fmt_ctx) < 0) {
printf("No header format");
return;
}
auto duration = static_cast<int>(fmt_ctx->duration / AV_TIME_BASE);
QString time;
if (duration <= 600) {
time = "0" + QString::number(duration / 60) + ":" + QString::number(duration % 60);
} else {
time = QString::number(duration / 60) + ":" + QString::number(duration % 60);
}
qDebug() << "读取的时长为" << time;
emit insertMusic(maps.value("title"),
maps.value("artist"),
maps.value("album"),
time,
url.toString());
}
emit compeleted();
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。