菜鸟教程小白 发表于 2022-12-12 21:10:06

ios - m3u8 音频流在 MPMoviePlayerController 中播放但不是 AVPlayer?


                                            <p><p>我有点迷失了这个。我有一个类需要播放音频和视频文件或流。它有一个完全自定义的 UI,所以我为此使用 AVPlayer。</p>

<p>有一个实时音频流无法播放。每次AVPlayerItem观察者触发AVPlayerItemStatusFailed,AVPlayer的error为nil。</p>

<p>但是当我尝试在 MPMoviePlayerController 或 Safari 或 Chrome 中播放相同的音频流时,它工作得很好。这非常奇怪,因为 MPMoviePlayerController 在内部使用了 AVPlayer。</p>

<p>这是失败的实时音频流的 URL:<a href="http://bit.ly/1gIqjV6" rel="noreferrer noopener nofollow">http://bit.ly/1gIqjV6</a> </p>

<p>我的 AVPlayer 代码(不适用于 URL)</p>

<pre><code>_currentItem = [ initWithURL:];
;

_avPlayer = [ initWithPlayerItem:self.currentItem];
[ addObserver:self selector:@selector(itemDidFinishPlaying:) name:AVPlayerItemDidPlayToEndTimeNotification object:self.currentItem];
</code></pre>

<p>AVPlayerItem 观察者</p>

<pre><code>-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{


    if (])
    {
      if ()
      {
            switch (.status) {
                case AVPlayerItemStatusReadyToPlay:

                  NSLog(@&#34;AVPlayerItemStatusReadyToPlay&#34;);
                  break;

                case AVPlayerItemStatusFailed:

                  // The live audio stream always fails, error is always nil
                  NSLog(@&#34;AVPlayerItemStatusFailed&#34;);
                  NSError* error = self.avPlayer.error;
                  break;

                case AVPlayerItemStatusUnknown:

                  NSLog(@&#34;AVPlayerItemStatusUnknown&#34;);
                  break;
            }
      }
    }
}
</code></pre>

<p>使用 MPMoviePlayerController(与 URL 配合使用)</p>

<pre><code>MPMoviePlayerViewController* controller = [ initWithContentURL:];
;
</code></pre>

<p>有没有人遇到过这样的问题?
提前致谢。</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>看起来这是您的 m3u8 播放列表。我尝试了一个带有简单 AVPlayer 的空白项目,当测试流(“<a href="http://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8" rel="noreferrer noopener nofollow">http://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8</a>”)以及 <em>your</em> m3u8 文件中的“hi”和“lo”流正常工作时,创建了带有 m3u8 文件的 AVPlayerItem 总是失败。 </p>

<p>m3u8中的diff如下:</p>

<p>你的:</p>

<pre><code>#EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=35200, CODECS=&#34;mp4a.40.2&#34;
</code></pre>

<p>苹果的样本:</p>

<pre><code>#EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=200000
</code></pre>

<p>您还有其他 m3u8 播放列表要测试吗?</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - m3u8 音频流在 MPMoviePlayerController 中播放但不是 AVPlayer?,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/22772065/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/22772065/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - m3u8 音频流在 MPMoviePlayerController 中播放但不是 AVPlayer?