进入页面获取不到audio/video属性值问题

有时候我们不用html5自带的视频/音频的控件,需要自定义, 这个时候可能就需要用到一些audio/video属性值。我们有个业务场景需要进入页面就获取音频的总时长, 但一直无法获取到,只有和页面产生交互才能获取,折腾了一段时间,总算解决了。 

当音频/视频处于加载过程中时,会依次发生以下事件:
loadstart
durationchange
loadedmetadata
loadeddata
progress
canplay
canplaythrough

通过监听除了loadstart, progress的其他事件,都可以获取到视频、音频的总时长duration的值。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
您可以使用QDir和QFileInfo类来遍历/home/audio目录下的所有音频文件,然后使用QMediaPlayer类获取音频文件的时长并将其显示在列表中。 以下是一个示例代码,可以帮助您实现此功能: ```cpp #include <QApplication> #include <QDir> #include <QFileInfo> #include <QMediaPlayer> #include <QMediaMetaData> #include <QStandardItemModel> #include <QTableView> int main(int argc, char *argv[]) { QApplication a(argc, argv); // 创建一个标准项模型 QStandardItemModel model; model.setHorizontalHeaderLabels({"文件名", "时长"}); // 遍历/home/audio目录下的所有音频文件 QDir audioDir("/home/audio"); QStringList audioFilters; audioFilters << "*.mp3" << "*.wav" << "*.aac"; // 这里可以添加更多的音频格式 const auto audioFiles = audioDir.entryList(audioFilters, QDir::Files | QDir::Readable); for (const auto &audioFile : audioFiles) { QFileInfo fileInfo(audioDir, audioFile); // 使用QMediaPlayer类获取音频文件的时长 QMediaPlayer mediaPlayer; mediaPlayer.setMedia(QUrl::fromLocalFile(fileInfo.absoluteFilePath())); mediaPlayer.metaDataChanged(); // 使QMediaPlayer类更新元数据 mediaPlayer.play(); // 播放音频以获取时长 const auto duration = mediaPlayer.duration(); mediaPlayer.stop(); // 将音频文件的信息添加到模型中 QList<QStandardItem*> items; items << new QStandardItem(audioFile); items << new QStandardItem(QTime(0, 0, 0).addMSecs(duration).toString("hh:mm:ss")); model.appendRow(items); } // 创建一个表格视图并设置模型 QTableView tableView; tableView.setModel(&model); tableView.resizeColumnsToContents(); tableView.show(); return a.exec(); } ``` 这段代码会在表格视图中显示/home/audio目录下所有音频文件的信息,包括文件名和时长。注意,这段代码只能获取文件的元数据,因此如果音频文件没有元数据,则无法正确显示时长。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值