在OS X应用程序中使用FFMPEG

时间:2016-03-22 08:35:34

标签: objective-c xcode ffmpeg live-streaming

所以我一直想要制作一个实时直播应用程序。从本质上讲,应用程序会将麦克风源从Xcode应用程序发送到可以实时查看的网站。 FFMPEG是最好的解决方案吗?我该怎么做呢?如果这太宽泛,那么我如何在OS X objective-c应用程序中使用FFMPEG框架?

1 个答案:

答案 0 :(得分:0)

直接解决您的问题:

  

(1)FFMPEG是最佳解决方案吗?

这取决于。在设置实时流式传输环境时,您可能会偶然发现FFMPEG,VLC和gstreamer,这些是您只需简单地传输视频/音频的选项。因此,是的,FFMPEG可以用作解决方案的一部分。请查看以下问题:DIY Video Streaming Server

  

(2)我将如何做到这一点?

您的要求是制作一个实时流媒体应用程序,将麦克风输入发送到网络上。这包括以下步骤:

(0)您的Xcode应用程序需要提供一种方法来启动此过程。您不一定需要集成框架来实现这一目标。

(1)流媒体/重组

使用FFMPEG或VLC抓取您的设备并在本地流式传输:

ffmpeg -i audioDevice -acodec libfaac -ar 44100 -ab 48k -f rtp rtp://host:port

(2)HTTP流媒体直播*

的分段

使用分段程序,例如:mediastreamsegmenter(Apple),livehttp(VLC)或segment(FFMPEG)来准备您的网络投放流:

vlc -vvv -I dummy <SOURCEADDRESS> --sout='#transcode{acodec=libfaac,ab=48}:std{access=livehttp{seglen=10,delsegs=false,numsegs=10,index=/path/to/your/index/prog_index.m3u8,index-url=YourUrl/fileSequence######.ts},mux=ts{use-key-frames},dst=/path/to/your/ts/files/fileSequence######.ts}'

*您也可以简单地使用VLC来使用qtsound来获取您的audiodevice(请参阅此question)并准备好使用livehttp进行流式传输。

(3)HTML 5交付

发布您的信息流

<audio>
<source src="YOUR_PATH/playlist.m3u8" />
</audio>
  

(3)如果这个太宽泛,那么我如何在OS X objective-c应用程序中使用FFMPEG框架?

使用外部包装器框架来访问FFMPEG功能并查阅教程以使用这些框架,或者您也可以使用NSTask在Objective-C中包装命令行参数并简​​单地启动这些任务来解决此问题来自您的申请 - 如question

另一种方法是使用VLCKit,它在Objective-C(VLCKit wiki)的框架中提供VLC功能。然而,在处理流式传输挑战时,我更喜欢使用实际命令而不是在其间推送另一层框架,这可能会遗漏一些选项。

我希望这能指出正确的方向。有多种方法可以解决这个问题。这是一个广泛的问题,因此这是回答你问题的广泛方法。