0

我已经阅读了很多帖子并在我的项目中安装了 libmms 库,但是当我编译我的项目时出现错误。

有没有人有在 iphone 项目中安装 libmms 库的步骤?有没有人有示例代码来调用 libmms 函数?

谢谢

4

2 回答 2

2

您需要使用 xCode 编译 Libmms 源代码,这将为您提供 Libmms 库。为此,您需要已经为 iPhone 修改过的源代码。

由于 Libmms 是开源的,因此 Internet 上有一些项目包含 Libmms,并且会为您提供您将编译的 iPhone 版本。你可以看看 WunderRadio,因为他们有包含 Libmms 的 xCode 项目。

一件非常重要的事情,当我第一次尝试编译 Libmms 时给我带来了问题,就是将标头放在您的路径或其他地方,并将此路径指向 xCode。如果您使用的是 xCode 4,只需单击Targets,选择Build Settings并搜索Header Search Paths。并且不要忘记检查Recursive选项。

您需要为 iPhone 模拟器编译一个产品版本,为 armv6/armv7 编译另一个产品版本,以便在 iPhone 上运行 Libmms。所以,这是一个两步的过程。为模拟器构建,完成后为 iPhone 构建。

完成所有设置后,只需Build,不要运行项目。Products 将是两个已编译的库。只需右键单击每个并选择在 Finder 中显示,您就会知道 xCode 将它们放在哪里。您必须将这两个库放入您的 xCode 项目中。同样,不要忘记在项目中包含 Libmms 的标头路径,否则当您选择 Run 时,编译器会因为找不到 Libmms 的标头而报错。

我希望这会有所帮助。

要建立连接,您必须在应用程序头文件中#include "mmsx.h" 。您需要使用 .m 文件中的函数,如下所示:

使用指向 mmsx_connect 的指针,并带有以下参数: mmsx_connect (mms_io_t *io, void *data, const char *url,const char *host, const char * uri, const char *query,int port,char *scheme,int bandwidth)

要读取文件,请使用 mmsx_read (mms_io_t *io, mmsx_t *instance, char *data, int len);

要关闭连接,请使用 mmsx_close (mmsx_t *instance)。

如果您需要更多功能,只需查看 mmsx.h,其中的功能对如何使用它们是不言自明的。

于 2011-05-07T20:09:26.577 回答
0

我猜您将使用 FFmpeg 来解码音频流。但是您知道您还可以使用 FFmpeg 连接到 mms 流吗?

const char *url = "mmst://somemmsurlhere.com";
avformat_open_input(formatCtx, url, NULL, NULL);

只需一行代码,您就可以连接到 mms 流。如果通过 tcp 连接失败,您也可以尝试使用 mmsh:// 方案,该方案将尝试连接到端口 80。

连接后,您可以使用 FFmpeg 的av_read_frame功能,它将读取 mms 音频数据包并将音频数据包传递给avcodec_decode_audio3进行解码。

于 2011-11-19T20:22:37.960 回答