所以我一直想要制作一个实时直播应用程序。从本质上讲,应用程序会将麦克风源从Xcode应用程序发送到可以实时查看的网站。 FFMPEG是最好的解决方案吗?我该怎么做呢?如果这太宽泛,那么我如何在OS X objective-c应用程序中使用FFMPEG框架?
答案 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功能。然而,在处理流式传输挑战时,我更喜欢使用实际命令而不是在其间推送另一层框架,这可能会遗漏一些选项。
我希望这能指出正确的方向。有多种方法可以解决这个问题。这是一个广泛的问题,因此这是回答你问题的广泛方法。