iphone - ios http live黑屏

标签 iphone ios ffmpeg video-streaming http-live-streaming

在我的 ios 应用程序中,我正在尝试使用 http 直播播放视频。播放进行得很顺利,直到我决定使用洗涤器并跳到尚未缓冲的某个点。从那一刻起,音频继续,但视频变黑。

我已经使用以下命令转换了我的 .MP4 视频:

avconv -y -i video.mp4 -f mpegts -acodec libmp3lame -ar 48000 -ab 64k -s 640x480 -vcodec libx264 -b 64k -flags +loop -cmp +chroma -partitions +parti4x4+partp8x8+partb8x8 -subq 7 -trellis 0 -refs 0 -coder 0 -me_range 16 -keyint_min 25 -sc_threshold 40 -i_qfactor 0.71 -bt 200k -maxrate 64k -bufsize 64k -rc_eq 'blurCplx^(1-qComp)' -qcomp 0.6 -qmin 30 -qmax 51 -qdiff 4 -level 30 -aspect 640:480 -g 30 -async 2 sample_64.ts

我使用多种比特率(64、150、240、440 和 640)执行此操作,并创建了一个包含不同流的 .m3u8。转换后,我使用 mediafilesegmenter 将视频分成每 10 秒的片段。

擦洗后输出窗口中出现以下内容:

2013-03-08 17:30:21.827 Geschiedenis Trainer[88129:19a03] [MPAVController] Autoplay: Disabling autoplay for pause
2013-03-08 17:30:21.827 Geschiedenis Trainer[88129:19a03] [MPAVController] Autoplay: Disabling autoplay
2013-03-08 17:30:21.977 Geschiedenis Trainer[88129:19a03] [MPAVController] Autoplay: _streamUnlikelyToKeepUp: 1 -> 0
2013-03-08 17:30:21.978 Geschiedenis Trainer[88129:19a03] [MPAVController] Autoplay: Skipping autoplay, disabled (for current item: 1, on player: 0)
2013-03-08 17:30:21.978 Geschiedenis Trainer[88129:19a03] [MPAVController] Autoplay: _streamRanDry: 0 -> 1
2013-03-08 17:30:21.980 Geschiedenis Trainer[88129:19a03] [MPAVController] Autoplay: Took background task assertion (32) for playback stall
2013-03-08 17:30:21.981 Geschiedenis Trainer[88129:19a03] [MPAVController] Autoplay: Skipping autoplay, disabled (for current item: 1, on player: 0)
2013-03-08 17:30:22.634 Geschiedenis Trainer[88129:19a03] [MPAVController] Autoplay: _streamUnlikelyToKeepUp: 0 -> 0
2013-03-08 17:30:22.634 Geschiedenis Trainer[88129:19a03] [MPAVController] Autoplay: _streamRanDry: 0 -> 1
2013-03-08 17:30:22.667 Geschiedenis Trainer[88129:19a03] [MPAVController] Autoplay: Skipping autoplay, disabled (for current item: 1, on player: 0)
2013-03-08 17:30:22.769 Geschiedenis Trainer[88129:19a03] [MPAVController] Autoplay: Ending background task assertion (32) for playback stall

我的视频播放器的代码:

self.streamPlayer = [[MPMoviePlayerController alloc] initWithContentURL:movieURL];
[self.view addSubview:self.streamPlayer.view];
[self.streamPlayer setFullscreen:YES animated:YES];

跳转到已经缓冲的点时不会出现这个问题。

最佳答案

问题出在我的视频转换上。我使用的是 avconv/ffmpeg 的过时版本。我将 ffmpeg 更新到最新版本 (1.1),这解决了问题。

转换视频后,我使用苹果的 mediafilesegmenter 将视频分成 10 秒的片段。在更新 ffmpeg 之前,它生成了一个错误:segment does not contain sync frame for each segment。更新 ffmpeg 后,此错误消失,流媒体问题也消失了。

关于iphone - ios http live黑屏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15299098/

相关文章:

vb.net - 在 VB 中使用计时器为 Windows 桌面背景设置动画

objective-c - 我有一个循环引用。如何在 Objective-C 中创建弱引用?

ios - UITableViewCell 在 subview 性能问题中调用 .layer.maskToBounds = YES

audio - FFmpeg 错误地连接两个 m4a 文件

ios - 如何在 UIScrollView 的滚动指示器下方放置一个非滚动 UIView?

ios - iOS 中的 Google API OVER_QUERY_LIMIT 问题

audio - ffmpeg concat vidoes 找不到流 1 的编解码器参数

iphone - 检测到与加载的库不匹配的 UUID

iphone - 核心数据查询 1<-->>2<<-->3。如何从 3 中得到 1?

ios - 将 Sprite 添加到其他 Sprite 位置