- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在开发一款旨在通过使用 TuneIn URL 播放生活广播的应用程序。在 TuneIn 中,API 中有一个 http get 请求,它提供一个包含所有 URL 及其比特率的 JSON。
所以 http://opml.radiotime.com/Tune.ashx?id=s150147&formats=aac,mp3&render=json
会回来
{ "head": { "status": "200"}, "body": [
{ "element" : "audio",
"url": "http://player.absoluteradio.co.uk/tunein.php?i=a664.aac",
"reliability": 95,
"bitrate": 64,
"media_type": "aac",
"position": 0,
"player_width": 529,
"player_height": 716,
"guide_id": "e89279187",
"is_direct": false }, { "element" : "audio",
"url": "http://player.absoluteradio.co.uk/tunein.php?i=a6low.mp3",
"reliability": 78,
"bitrate": 48,
"media_type": "mp3",
"position": 0,
"player_width": 529,
"player_height": 716,
"guide_id": "e89279188",
"is_direct": false }, { "element" : "audio",
"url": "http://player.absoluteradio.co.uk/tunein.php?i=a624.aac",
"reliability": 29,
"bitrate": 24,
"media_type": "aac",
"position": 0,
"player_width": 529,
"player_height": 716,
"guide_id": "e89279186",
"is_direct": false }] }
我的第一种方法是使用给定的一个 URL 设置一个 AVPlayer,但它没有播放。
此外,如果您在 Chrome 浏览器中复制并粘贴 URL,它会开始下载一个需要很长时间的文件。
用wireshark检查,我终于发现流媒体URL是不同的,它是在你第一次请求文件时与Header一起提供的。
我知道这已经在 Android 上通过拦截 header 完成了,但是,是否可以在 iOS 上做同样的事情?
我一直在寻找一些库,MobileVLCKit 似乎是一个候选者,但不确定我如何冒我的应用被拒绝的风险。
既然流媒体是当今非常流行的行为,我能否以“Apple 方式”实现它
谢谢
最佳答案
对于所有想从 TUNEIN 流式传输的人
事实证明,如果您像这样设置 AVPlayer:
class ViewController: UIViewController, AVAssetResourceLoaderDelegate {
let urlFile = URL(string:"http://opml.radiotime.com/Tune.ashx?id=s150147&formats=aac,mp3")!
private var avPlayer:AVPlayer!
private var avAudioSession:AVAudioSession = AVAudioSession.sharedInstance()
override func viewDidLoad() {
super.viewDidLoad()
try! avAudioSession.setCategory(.playback, mode: .default, options: [])
try! avAudioSession.setActive(true)
let audioURLAsset = AVURLAsset(url: urlFile)
//audioURLAsset.resourceLoader.setDelegate(self, queue:DispatchQueue.init(label: "MY QUEUE"))
avPlayer = AVPlayer(playerItem: AVPlayerItem(asset: audioURLAsset))
avPlayer.play()
}
}
它会播放,但你需要在 info.plist 中允许任意加载
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
成功了!
添加
我还发现有些链接无法播放,特别是那些包含 .pls 文件的链接(尽管 URL 保持不变)。 iOS 和 safari 都尝试解决它们,但存在有关插件不兼容的错误。
我发现,如果我向 URL 发出 URL 请求,返回的数据是一个由换行符分隔的链接列表。
所以:我的连接助手类:
class URLConnectionHelper: NSObject {
static func getResponse(fromURL url:URL?)->Data?{
guard let url = url else{ return nil }
var result:Data? = nil
let semaphore = DispatchSemaphore(value: 0)
URLSession.shared.dataTask(with: url) { (data, response, error) in
//guard let data = data else{ return nil}
result = data
semaphore.signal()
}.resume()
semaphore.wait()
return result
}
}
并且从类中调用函数:
guard let dataRadioItem = URLConnectionHelper.getResponse(fromURL: urlFile) else {return}
var urlArray = [URL]()
if let stringData = String(data: dataRadioItem, encoding: String.Encoding.utf8){
print("String Data: \(stringData)")
stringData.enumerateLines { (line, _) -> () in
if let urlLine = URL(string: line){
print("added = \(line)")
urlArray.append(urlLine)
}
}
}
if urlArray.count > 0{
urlFile = urlArray.first!
}
字符串数据的结果:
String Data: http://player.absoluteradio.co.uk/tunein.php?i=a664.aac
http://player.absoluteradio.co.uk/tunein.php?i=a6.mp3
http://player.absoluteradio.co.uk/tunein.php?i=a6low.mp3
http://player.absoluteradio.co.uk/tunein.php?i=a624.aac
关于ios - 播放现场 TuneIn Radio URL iOS Swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52754263/
我对软件 radio 感兴趣。我基本上没有涉及任何电气工程或数学主题的经验,但我正在阅读...... 与其尝试处理天线和 ADC 的硬件方面,我想它会很有趣(而且更便宜)来播放一些预先录制的(甚至是实
我是 C++ 的新手,想了解一些东西。我的 main.cpp 中有这段代码: Radio r = Radio("PSR", 100.8); 或者那个代码: Radio r("PSR", 100.8);
我是 C++ 的新手,想了解一些东西。我的 main.cpp 中有这段代码: Radio r = Radio("PSR", 100.8); 或者那个代码: Radio r("PSR", 100.8);
如何将选定的 radio (从 radio 组)复制到另一个 radio ?这是我的jsfiddle:http://jsfiddle.net/fu3oyscq/1/ 这是我的jquery $("#co
我有这个表格: 1 X 2 1 2 我想实现这个: If a=1 then b=1 If a=X then unset b If a=2 then b=2 我尝试了这个,但没有任何作用: $
我为什么要为此苦苦挣扎? 我有一个值:5 如何查看值为 5 的组“mygroup”的单选按钮? $("input[name=mygroup]").val(5); // doesn't work? 最佳
正如标题所说例如: User1 User2 如何获取文本:用户 1 最佳答案 $('input:radio:checked').siblings('label:first').html() 更新:
无法在 Bootstrap radio 组中检查 radio 。只有 div 处于事件状态。 Link Bootstrap 单选组: Enabled Disa
如何禁用 radio 组中的一个 radio 输入? Option1 Option2 Option3 Option4 我的问题是我想在单击任何其他按钮后禁用选项1 例如: when i sele
我正在使用 jQuery 验证来验证其上设置了单选按钮的表单(在本例中设置 = 两个单选按钮)。带标签的单选按钮如下。该表单位于 jQueryUI 对话框上。 Yes No 我从 jquery.com
我有一个包含 26 个问题的表格,所有问题都有单选按钮组作为用户的答案选择(它计算给定属性(property)上特定入侵植物物种的风险因素)。最后,将每个 radio 组中的选定值相加。 让事情变得复
我创建了一个单选组列表并将它们附加到一个产品类别。因此,我正在做的是检查该类别应具有的组,然后选取该类别可用的这些组中的单选值并将其显示给用户进行填充。 接下来我想将它们传递给我的 ajax 函数,然
圆形边缘刚好从正方形或圆形中伸出,因此如果我在 before 之前提供白色背景,则 radio 边缘仍然略微可见。 input[type=radio] { box-sizing: border-b
我找到了一个纯 CSS 星级系统,但是对于给定的代码,我只能在每个页面上使用一个星级系统。我试过更改类(class)名称,但不幸的是,第二个星级评分表在按下时会检查第一个星级评分表。有什么办法解决这个
我有一个包含 radio 输入和标签的无序列表。当用户点击列表项时,它会切换一些信息并选择单选输入。 但是,由于上述原因,如果用户点击实际的 radio 输入本身,它不会选择它,因为我猜点击是针对 r
我想使用一些 radio 输入创建一个表单。检查输入时,还会使用 jQuery 自动检查另一个 radio 。 例如: 问题1:A(勾选),B,Cquestion2: D(auto checked),
如果我检查了名称为“most1”且值相同的单选按钮,如何禁用名称为“least1”的单选按钮 最佳答案 在
如何在选择第一个 radio 输入时选择所有复选框并在选择第二个 radio 输入时取消选中所有复选框? (Javascript)? 我在这里研究过以前的类似问题,但它们似乎都是关于使用复选框而不是单
Please, please check me Am I selected ? 我想要以下行为: 当 myCheckbox 被选中时,myRadio 将被选中。 当 myCheckbox
我知道无符号数永远不会小于 0,因此无需对其进行测试。但我想避免调谐器出现虚假频率。 /* freqKHz is in KHz (duh) */ void videoinput_set_tuner
我是一名优秀的程序员,十分优秀!