Qt mp3 文件到数据流

Posted

技术标签:

【中文标题】Qt mp3 文件到数据流【英文标题】:Qt mp3 file to datastream 【发布时间】:2012-11-29 13:49:23 【问题描述】:

我的主要目标是使用 QDataStreamQTcpServerQTcpSocket 通过网络发送 mp3 文件。但我已将这项任务分解成更小的部分。首先,我需要将 mp3 文件转换为正确的格式,以便将其“输入”到数据流中。

我应该如何做到这一点?我认为这将是最容易使用 Phonon 的?但是MediaObject 似乎没有提供某种getData 方法。

任何关于我应该如何做的帮助将不胜感激。如果需要,我可以对此进行更多解释。

【问题讨论】:

短语“正确格式”是什么意思? 不能确定。我想通过 QTcpSocket 发送数据,这意味着我必须将它们转换为字节(const char*)。但我不确定,我是这类事情的新手。 您是否无法通过网络读取文件并发送文件? 好吧,任何可以抓住的东西都会很感激。我正在通过反复试验来学习。 【参考方案1】:

没有“正确的格式”。此外,您的问题不是 MP3 特有的。您对所有文件执行相同操作,无论它们包含何种数据。您打开文件,从中读取字节并发送这些字节,直到没有任何内容可发送。

您不需要 Phonon 或任何与 MP3 相关的东西。您只需要打开文件并从中读取字节。然后使用 QTcpSocket 对象的write() 函数将这些字节写入套接字。您甚至不需要 QDataStream,因为您只处理不需要解析的数据。

【讨论】:

是的,确实如此。写方法很熟悉。我如何读取文件并将其发送过来? @Majster 读取任何文件的方式相同。为它创建一个 QFile。无论你从 QFile::read() 得到什么,你都会发送到 QTcpSocket::write()。 嗯,我试过了。起初我试图读取文件并将同一个文件写回一个新的命名文件。我的方法不走运。我可以在哪里粘贴代码,因为它不是我的问题的一部分? @Majster 你为什么要写一个新文件?您从文件中读取数据,并将该数据写入套接字。 QFile::read() 给你一个 QByteArray,而 QTcpSocket::write() 可以写那个 QByteArray。或者您可以使用char* 重载。我看不出写一个新文件是如何影响这个的。 是的,我知道。这只是一个测试。我正在一步一步做。现在将尝试您的方法,看看客户端是否接受数据。

以上是关于Qt mp3 文件到数据流的主要内容,如果未能解决你的问题,请参考以下文章

需要 QMediaPlayer 播放内存中的 mp3 数据

我们如何在 Qt 工具包(Qt)应用程序中读取已安装(Raspberry pi)usb 中的所有 mp3 文件

从 Qt QMediaPlayer 获取流数据

我们如何在Qt工具包(Qt)应用程序中读取已挂载(Raspberry pi)usb中的所有mp3文件

在 Qt 和 C++ 中改变 mp3 速度 [QMediaPlayer]

iOS小技能:合并mp3格式的文件