首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从音频(或视频)文件生成波形?

从音频(或视频)文件生成波形?
EN

Stack Overflow用户
提问于 2015-12-04 19:49:15
回答 2查看 1.3K关注 0票数 1

我试图了解如何从音频(或视频)文件生成一个波形,以显示给用户。

我已经在谷歌上搜索了很长一段时间了,如果不使用类似FFmpeg的东西,就无法确定Qt中是否可能出现这种情况。我见过所有这些类:QMediaPlayerQMediaContentQMediaResourceQAudioProbe,并对Qt媒体播放器示例进行了实验,但我只是不知道在哪里可以访问实际的音频缓冲区。

所以我有两个问题:

  1. 如果没有第三方图书馆,我还能做些什么吗?
  2. 如果可能的话,某种灵魂能概述我需要阅读和理解什么才能访问音频数据吗?

我尝试过这个问题(基于QMediaPlayer的音频可视化)中的建议,但是audioProbe->setSource(player)的结果总是错误的,并且方法processBuffer从未被调用。

代码语言:javascript
复制
audioProbe = new QAudioProbe(this);
bool success = audioProbe->setSource(player);
qDebug() << success;

connect(audioProbe, SIGNAL(audioBufferProbed(QAudioBuffer)), this, SLOT(processBuffer(QAudioBuffer)));

更新:添加了一些额外的细节,希望能澄清问题。

  • 为了测试/学习,我使用了随Qt附带的媒体播放器示例,因此它是用Q_OBJECT等正确设置的。
  • 对于音频,我使用.mp3和.wav文件进行了测试。FWIW,player示例由于某种原因不播放视频(.mp4,.avi测试过)
  • 代码中的playerQMediaPlayer --它继承自QMediaObjectPlayer类的示例代码是这里。我在播放器实例化之后添加了我的代码(在上面的原始注释中)。我还试着在加载媒体之后添加它。
  • 我试着先宣布我的位置是私人的,然后是公开的--不管是哪种方式,它都不会被调用。

这么简单的事情这么难,真让人沮丧。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-12-04 20:11:43

走“没有外部库”的路线可能只会导致更多的麻烦和更多的工作是必要的。使用已建立的库的另一个优点是,您不会绑定到一种文件格式,因为并非所有格式都以相同的方式存储数据。如果音频格式是未压缩的(wav或其他),您可以读取报头,直到您到达数据块。这里对这个问题的回答在C中详细说明了这一点。您应该能够从这个问题中了解文件格式,以便将其应用于另一种语言。

您将需要了解wav文件中有多少通道、位深度以及采样率,然后才能对数据做任何有价值的操作。所有这些信息可以从头部抓取。

票数 1
EN

Stack Overflow用户

发布于 2015-12-05 23:55:55

事实证明,OSX不支持QAudioProbe --这是我正在开发的平台。花了很长时间( "Qt时间……“)我把它显式地张贴在这里。

有关详细信息,请参阅本文档:QT5.5.0多媒体后端

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34096322

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档