debugly / ijkplayer

iOS/macOS/tvOS video player based on ijkplayer, using FFmpeg 6, support Metal、hw accel、HDR、ass subtitle effect...

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

在有导航栏的页面,播放器出现被压缩现象

NUKisZ opened this issue · comments

commented

IMG_0823
使用Xcode 13.0 、Xcode 13.3.1编译出来的SDK在iOS 14.0 iOS14.4 iOS 15.4真机及模拟器等多种环境下测试均出现如图所示问题。

问题复现条件,当前竖屏状态下,当前页面由导航栏推出,代码中宝播放器大小为青蓝色视图+视频视图大小,真实展现出来视频画面被压缩为原来的1/3.

不知道你使用的是哪次提交,我这里使用 develop 最新代码,examples/ios 目录下的demo测试没有问题;很可能是你业务逻辑的问题,你可以进一步给我提供信息排查,让我能够复现这一问题。

验证效果如下:

IMG_4425 PNG

commented

我的项目文件如下:http://lovediary-oss.uilucky.com/uPic/20220509133122ook5al.zip
其播放器设置大小为:整个青蓝色视图。
e144cee196498a6d74e37d1818cdba4c

我使用的编译方式是:latest k0.9.0.5版本。

f4fb15e8dbcdb66d0bc6ea80547076f5

Xcode 版本为13.3.1 App Store下载,手机版本为iOS15.4、14.4 、14.0

同时,修改了部分文件:
添加ftp、rtsp、udp播放协议。

修改ff_ffplay.c文件
b65c309ae82780b3fce7461c88efc97e

static int packet_queue_get_or_buffering(FFPlayer *ffp, PacketQueue *q, AVPacket *pkt, int *serial, int finished)
{
while (1) {
int new_packet = packet_queue_get(q, pkt, 1, serial);
if (new_packet < 0){
new_packet = packet_queue_get(q, pkt, 0, serial);
if(new_packet < 0)
return -1;
}else if (new_packet == 0) {
if (!finished)
ffp_toggle_buffering(ffp, 1);
new_packet = packet_queue_get(q, pkt, 1, serial);
if (new_packet < 0)
return -1;
}
if (finished == *serial) {

        av_free_packet(pkt);
        continue;
    }
    else
        break;
}
return 1;

}

添加支持协议

4fa5a310246ff86ce57da35589edc5d8

d2949b3f38fa4abc8844a3600204ee4f

336469b54b4f7b1168bb04338a4f6e4f

ed5a1af25bfd27ce6c3e4e094a84d833

commented

补充播放器的的修改及播放视频效果。
image

RPReplay_Final1652071179.MP4

好的,我这里复现了,跟修改frame有关系:

//    self.player.view.autoresizingMask = UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight;
//    self.player.view.frame = self.view.bounds;
    self.player.view.frame = CGRectMake(0, 0, 414, 232);

我抽时间看下。

develop 分支,最新提交 4997737 修复了这个问题。