【问题标题】:Streaming mp3 file from server in Swift 3在 Swift 3 中从服务器流式传输 mp3 文件
【发布时间】:2017-03-22 06:09:00
【问题描述】:

我正在尝试从基于 centOS 的服务器流式传输 mp3 文件,我已将文件上传到服务器并尝试在 AvPlayer 中打开它,但它实际上会下载并播放它,当我在浏览器中打开相同的链接时它能够要流式传输文件,它会在 5 秒左右开始播放。 是否有任何解决方案可以使用 swift 在 iOS 应用程序中执行相同的操作?

【问题讨论】:

    标签: ios swift3 avplayer audio-streaming


    【解决方案1】:

    在我的例子中,我使用 php 作为流,这意味着 IOS 应用程序将通过 stream.php 播放 mp3 文件:

    <?php
    set_time_limit(0);
    $filePath = $dirPath . "/songname.mp3";
    $strContext=stream_context_create(
        array(
            'http'=>array(
            'method'=>'GET',
            'header'=>"Accept-language: en\r\n"
            )
        )
    );
    $fpOrigin=fopen($filePath, 'rb', false, $strContext);
    header('Content-Disposition: inline; filename="songname.mp3"');
    header('Pragma: no-cache');
    header('Content-type: audio/mpeg');
    header('Content-Length: '.filesize($filePath));
    while(!feof($fpOrigin)){
      $buffer=fread($fpOrigin, 4096);
      echo $buffer;
      flush();
    }
    fclose($fpOrigin);
    

    然后我将 url 传递给 swift:http://domain/stream.php

    【讨论】:

    • ok 试试看,没想到可以这样解决 :D
    • 如果此方法适合您,您只需添加一个Content-Disposition 标头即可。让你的网络服务器来做这件事……通过调用 PHP 来做是低效的。您还需要非常小心...根据您在参数中指定文件名的方式,您的 PHP 脚本可能会从磁盘返回任意文件。
    猜你喜欢
    • 2017-10-27
    • 1970-01-01
    • 1970-01-01
    • 2011-08-05
    • 2013-01-22
    • 1970-01-01
    • 2022-01-12
    • 1970-01-01
    • 2011-03-25
    相关资源
    最近更新 更多