fpzeng / KSYStreamer_Android

金山云Android采集推流SDK(Livestream SDK),支持内置/自定义美颜(Beauty Filter)、美声(Beauty Voice)、软硬编(Software/Hardware Encoder) 、网络自适应(Network Auto Adapt)、混音(Voice Mixer)、混响(Reverb)、画中画(PIP)、连麦(RTC)、动态贴纸(Sticker)、大眼瘦脸(Bigger Eyes and Smaller Faces)
https://github.com/ksvc/KSYStreamer_Android/releases
730 stars 208 forks source link

Video h264 encodec profile无法设置 #245

Open zhengchengbin610 opened 7 years ago

zhengchengbin610 commented 7 years ago

由于Hls 的discontinue标签 ,播放带有B帧的h264编码会有问题,所以需要设置只有I帧和P帧的编码,所以请金山云的伙伴帮忙,非常感谢。

buliaoyin commented 7 years ago

首先,带有B帧和discontinue标签的hls视频是很正常不过的视频,播放有问题,就应该想办法解决播放的问题。

如果一定不要B帧,你可以:

  1. 选硬编,性能模式配成低功耗模式;
  2. 服务端转hls的时候同时转码视频为无B帧的。
zhengchengbin610 commented 7 years ago

@buliaoyin 感谢回复,你说的有道理,我用的是ijkplayer 是否可以指点一下? 你说的不要B帧的方法:1.选硬编,但是不是所有手机都可以支持硬编 ,这个要看白名单 2.转码是可以,但是想做到尽量不转码

buliaoyin commented 7 years ago

可以用我们的播放器试试,推流SDK里面已经集成了,可以直接调用试试。

用法参考:https://github.com/ksvc/KSYMediaPlayer_Android/wiki/KSYMediaPlayerBasicExample

zhengchengbin610 commented 7 years ago

@buliaoyin 好的,谢谢回复!不过我们还用了你们的SDK录制功能,发现部分手机录制总是不稳定(丢帧),导致我们转成ts文件后,时长和分割都不准确,这个有什么建议?

buliaoyin commented 7 years ago

出现丢帧的是软编吧?这个一般是手机性能不足引起的。

不过这个为什么会影响时长和分割呢?时长看时间戳,分割的话也依赖I帧间隔的,检查下你们的分割逻辑吧。

zhengchengbin610 commented 7 years ago

丢帧的是软编码,720P。使用金山播放器播放我们的m3u8的确好很多,seek和播放整体很流畅,佩服。

zhengchengbin610 commented 7 years ago

@buliaoyin 现在我们使用你们的录制和播放sdk,播放有B帧的编码时,在每个文件分割点会有一些抖动,画面会跳动一下,没有B帧的编码不会有抖动;请问这个可以解决吗?

zhengchengbin610 commented 7 years ago

@buliaoyin 是否可以让我们修改设置profile呢?

buliaoyin commented 7 years ago

软编模式不支持配置profile。

无B帧编码会大大降低相同码率下的画面质量,关于分割点画面会跳动的问题,建议你们再检查下分割逻辑(分割点的首帧是不是I帧?),正确的分割实现配合正确的播放处理是不会出现这个问题的。

zhengchengbin610 commented 7 years ago

我们的场景是把一个ts文件分割成多个ts文件,再对多个ts生成m3u8索引,我们所有的分割开始点都是I帧,我们会生成I帧索引的,然后分割时间点会向前移动最近的I帧时间点进行分割,发个链接给你分析一下?