【问题标题】:Green screen when using mobile VLC to play rtsp streaming on iOS使用移动 VLC 在 iOS 上播放 rtsp 流时出现绿屏
【发布时间】:2015-04-28 03:24:55
【问题描述】:

我在 iOS 上通过 mobileVLCKit.framework 有一个基于 VLC 的播放器。

在执行和播放 h264 rtsp 流时,iPhone 将正确显示视频。但是,在开始的几秒钟内,显示绿色屏幕。我想原因是I-Frame还没到,yuv=000映射到rgb中的绿色。

我可以添加一些选项或操作来强制播放器在收到 I-Frame 后播放吗?或者有没有其他方法可以避免绿屏问题?

这是我的代码

- (instancetype)initWithFrame:(CGRect)frame
{
    self = [super init];
    if (self) {
        self.player =  [[VLCMediaPlayer alloc] init];
        self.player.delegate = self;
        self.player.media = [VLCMedia mediaWithURL:[NSURL URLWithString:@"rtsp://...."]];
        self.player.drawable = self.contentView;
    }

    return self;
}

- (void)play
{
     if (self.player && !self.player.isPlaying) {
         [slef.player play];
     }
}

任何回复将不胜感激。谢谢!

【问题讨论】:

  • 你有什么解决办法吗?因为我无法播放 rtsp url
  • 我可以播放 rtsp 网址。我的问题是绿屏。这个问题的最终解决方案是在播放开始时跳过非关键帧。它工作正常。
  • @chih-chunchan 你是怎么解决这个问题的?谢谢!
  • @DevranCosmoUenal :我发布了我的决议作为您参考的答案。希望对你有帮助:)
  • 大家好,仅供参考,我可以确认此问题也适用于普通 x86-64 PC 版本的 VLC 以及 OpenGL for Embedded Systems 2 视频输出设置.这些计算机运行的是 Linux 发行版 Kubuntu 20.04 LTS。有趣的是,并非所有 h264 视频文件都受到影响。但是,解决方案或解决方法只是切换回正常的常规 OpenGL 视频输出。之后,每个视频都重新开始工作。我在这里提到这一点是因为这个 stackoverflow 问题排名很高。因此,它也可能对遇到此“绿屏”问题的普通 PC 用户有所帮助。

标签: ios mobile vlc


【解决方案1】:

其实修改应该在/modules/codec/avcodec/video.c的函数static picture_t *DecodeVideo( decoder_t *p_dec, block_t **pp_block )中。

DecodeVideo()函数开头添加如下代码跳过非I帧,解决绿屏问题。

if (p_sys->b_first_frame && b_gotpicture) {
    if (AV_PICTURE_TYPE_I != frame->pict_type) {
        av_frame_unref(frame);
        break;
    }
}

然后,自己构建 mobileVLCKit.framework。

【讨论】:

  • 太棒了!谢谢! :)
猜你喜欢
  • 2011-08-18
  • 1970-01-01
  • 2013-01-03
  • 2013-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-28
  • 2017-04-04
相关资源
最近更新 更多