ksvc / KSYMediaPlayer_iOS

金山云iOS播放SDK(KSYUN Live Streaming player SDK),支持RTMP HTTP-FLV HLS 协议(supporting RTMP HTTP-FLV HLS protocol),直播延时2-3秒(Living delay 2 or 3 seconds)
http://v.ksyun.com/
Apache License 2.0
561 stars 143 forks source link

播放出现kVTVideoDecoderBadDataErr #95

Open nyz110 opened 6 years ago

nyz110 commented 6 years ago

播放地址:https://dianbo.mmbang.com/sv/98a6d08-1615931f81d/98a6d08-1615931f81d.mp4 在三秒之后 有一段 视频卡住,音频正常 log 如下

after scale width 854 height 480 
Video: first frame decoded
[GLES2] Version = OpenGL ES 2.0 Metal - 52.1.2
[GLES2] Vendor = Apple Inc.
[GLES2] Renderer = Apple A9 GPU
[GLES2] Extensions = GL_OES_depth_texture GL_OES_depth_texture_cube_map GL_OES_depth24 GL_OES_element_index_uint GL_OES_fbo_render_mipmap GL_OES_mapbuffer GL_OES_packed_depth_stencil GL_OES_rgb8_rgba8 GL_OES_standard_derivatives GL_OES_texture_float GL_OES_texture_half_float GL_OES_texture_half_float_linear GL_OES_vertex_array_object GL_EXT_blend_minmax GL_EXT_color_buffer_half_float GL_EXT_debug_label GL_EXT_debug_marker GL_EXT_discard_framebuffer GL_EXT_draw_instanced GL_EXT_instanced_arrays GL_EXT_map_buffer_range GL_EXT_occlusion_query_boolean GL_EXT_pvrtc_sRGB GL_EXT_read_format_bgra GL_EXT_separate_shader_objects GL_EXT_shader_framebuffer_fetch GL_EXT_shader_texture_lod GL_EXT_shadow_samplers GL_EXT_sRGB GL_EXT_texture_filter_anisotropic GL_EXT_texture_rg GL_EXT_texture_storage GL_APPLE_clip_distance GL_APPLE_color_buffer_packed_float GL_APPLE_copy_texture_levels GL_APPLE_framebuffer_multisample GL_APPLE_rgb_422 GL_APPLE_sync GL_APPLE_texture_format_BGRA8888 GL_APPLE_texture_max_level GL_APPLE_texture_packed_float GL_IMG_read_format GL_IMG_texture_compression_pvrtc 
create render yuv420sp_vtb
use render yuv420sp_vtb
2018-02-08 14:55:40.696164+0800 mmbang[740:325165] FFP_MSG_AUDIO_RENDERING_START
2018-02-08 14:55:40.701888+0800 mmbang[740:325165] FFP_MSG_VIDEO_RENDERING_START
decode callback -12909 kVTVideoDecoderBadDataErr
decode callback -12909 kVTVideoDecoderBadDataErr
decode callback -12909 kVTVideoDecoderBadDataErr
decode callback -12909 kVTVideoDecoderBadDataErr
decode callback -12909 kVTVideoDecoderBadDataErr
decode callback -12909 kVTVideoDecoderBadDataErr
decode callback -12909 kVTVideoDecoderBadDataErr
decode callback -12909 kVTVideoDecoderBadDataErr
decode callback -12909 kVTVideoDecoderBadDataErr
after scale width 854 height 480 
decode callback -12909 kVTVideoDecoderBadDataErr
decode callback -12909 kVTVideoDecoderBadDataErr
decode callback -12909 kVTVideoDecoderBadDataErr
decode callback -12909 kVTVideoDecoderBadDataErr
decode callback -12909 kVTVideoDecoderBadDataErr
decode callback -12909 kVTVideoDecoderBadDataErr
decode callback -12909 kVTVideoDecoderBadDataErr
decode callback -12909 kVTVideoDecoderBadDataErr
decode callback -12909 kVTVideoDecoderBadDataErr
decode callback -12909 kVTVideoDecoderBadDataErr
decode callback -12909 kVTVideoDecoderBadDataErr
decode callback -12909 kVTVideoDecoderBadDataErr
decode callback -12909 kVTVideoDecoderBadDataErr
decode callback -12909 kVTVideoDecoderBadDataErr
decode callback -12909 kVTVideoDecoderBadDataErr
decode callback -12909 kVTVideoDecoderBadDataErr
decode callback -12909 kVTVideoDecoderBadDataErr
decode callback -12909 kVTVideoDecoderBadDataErr
decode callback -12909 kVTVideoDecoderBadDataErr
decode callback -12909 kVTVideoDecoderBadDataErr
decode callback -12909 kVTVideoDecoderBadDataErr
decode callback -12909 kVTVideoDecoderBadDataErr
decode callback -12909 kVTVideoDecoderBadDataErr
decode callback -12909 kVTVideoDecoderBadDataErr
decode callback -12909 kVTVideoDecoderBadDataErr
decode callback -12909 kVTVideoDecoderBadDataErr
decode callback -12909 kVTVideoDecoderBadDataErr
decode callback -12909 kVTVideoDecoderBadDataErr
decode callback -12909 kVTVideoDecoderBadDataErr
decode callback -12909 kVTVideoDecoderBadDataErr
decode callback -12909 kVTVideoDecoderBadDataErr
decode callback -12909 kVTVideoDecoderBadDataErr
decode callback -12909 kVTVideoDecoderBadDataErr
decode callback -12909 kVTVideoDecoderBadDataErr
decode callback -12909 kVTVideoDecoderBadDataErr
decode callback -12909 kVTVideoDecoderBadDataErr
decode callback -12909 kVTVideoDecoderBadDataErr
decode callback -12909 kVTVideoDecoderBadDataErr
decode callback -12909 kVTVideoDecoderBadDataErr
decode callback -12909 kVTVideoDecoderBadDataErr
decode callback -12909 kVTVideoDecoderBadDataErr
decode callback -12909 kVTVideoDecoderBadDataErr
decode callback -12909 kVTVideoDecoderBadDataErr
decode callback -12909 kVTVideoDecoderBadDataErr
decode callback -12909 kVTVideoDecoderBadDataErr
decode callback -12909 kVTVideoDecoderBadDataErr
decode callback -12909 kVTVideoDecoderBadDataErr
decode callback -12909 kVTVideoDecoderBadDataErr
decode callback -12909 kVTVideoDecoderBadDataErr
decode callback -12909 kVTVideoDecoderBadDataErr
decode callback -12909 kVTVideoDecoderBadDataErr
decode callback -12909 kVTVideoDecoderBadDataErr
init filter w3fdifSDL_VoutFFmpeg_CreateOverlay(w=854, h=480, fmt=I420(0x30323449, dp=0x1c068aaa0)
Video: first frame decoded
SDL_VoutFFmpeg_CreateOverlay(w=854, h=480, fmt=I420(0x30323449, dp=0x1c068aaa0)
mayudong1 commented 6 years ago

这个是sdk在硬解之前先对数据进行了一些预处理,用来兼容一些异常的封装格式,但是判定方式有缺陷,导致这个视频被判定为异常封装,对数据进行了一些修改,导致后续硬解失败,然后自动切换到了软解
画面卡住的时间时切换时丢弃了一部分视频数据导致的

我们会在下个版本修复这个问题,谢谢反馈

nyz110 commented 6 years ago

这个判断应该存在较多情况,不太好覆盖所有情况吧。对于支持硬解的设备上,为什么不在硬解错误或者失败的时候进行判断,是否数据异常,是否可以修改数据然后进行软解