如何在具有单独位置 url 和资源 url 的 swift 中从服务器实时流式传输音频?
Posted
技术标签:
【中文标题】如何在具有单独位置 url 和资源 url 的 swift 中从服务器实时流式传输音频?【英文标题】:How to live stream audio from server in swift which has separate location url and resource url? 【发布时间】:2016-06-01 02:09:06 【问题描述】:我正在从第三方 API 提供商 (www.mndigital.com) 开发音乐应用程序。 API 提供商为每首歌曲提供 30 秒的演示。演示应用的位置以这种格式给出
"SampleLocations": [
"Location": "rtmp://mn-ecn-prd-rtmp.mndigital.com",
"Resource": "mp3:/spl/382/071/327/spl_024?48d882e51ff49ca3806e4b63d90b926556349db16cecf61947a8eb9a44f9bee3bf7d",
"Type": "s_mp3"
,
"Location": "rtmp://mn-ecn-prd-rtmp.mndigital.com",
"Resource": "mp4:/spl/382/071/327/spl_029.mp4?48d882e51ff49ca3806e4b63d90b926556349db16cecf61947a8eb9a44f9bee3bf7d",
"Type": "s_mp4"
],
API 提供商还说,在条款和条件中,样本必须是来自服务器的 streamed live
和 should not be saved locally
。
经过几个小时的搜索,我发现这种格式用于在 Flash 播放器中播放音频。但在ios flash player中不支持。
即使AVPlayer
工作,我们也只需要更新后的 swift 语法中的一个 url
do
let url = "http://yourdomain.com/file.mp3"
let fileURL = NSURL(string:url)
let soundData = NSData(contentsOfURL:fileURL!)
self.audioPlayer = try AVAudioPlayer(data: soundData!)
audioPlayer.prepareToPlay()
audioPlayer.volume = 1.0
audioPlayer.delegate = self
audioPlayer.play()
catch
print("Error getting the audio file")
所以我不知道如何在 swift 中流式传输这种 url。任何人都可以提出解决方案。
我正在使用 swift 2.0 xcode 7.1.1 。我的部署目标是IOS 8.0及以上
【问题讨论】:
既然是他们的 API,为什么不发邮件给 mndigital.com?只有他们可以告诉您如何访问相同的 MP3,而无需从 RTMP 服务器加载它。 PS:RTMP 并不总是需要 Flash,即使是 VLC 和 Media Player Classic 等桌面播放器也可以加载 RTMP 流。如果你像那些播放器的编码器一样知道秘密,你就可以得到 MP3 【参考方案1】:经过长时间的搜索,我发现 rtmp 文件无法在苹果设备上播放,因为苹果不支持 flash payers。无法播放这些格式的 URL 提供的任何数据。
【讨论】:
以上是关于如何在具有单独位置 url 和资源 url 的 swift 中从服务器实时流式传输音频?的主要内容,如果未能解决你的问题,请参考以下文章