bilibili / ijkplayer

Android/iOS video player based on FFmpeg n3.4, with MediaCodec, VideoToolbox support.
GNU General Public License v2.0
32.46k stars 8.12k forks source link

如何播放地址是 tcp://192.168.... 的视频流 #1551

Open kQly opened 8 years ago

kQly commented 8 years ago

环境 ios: 代码: _player = [[IJKFFMoviePlayerController alloc] initWithContentURL:[NSURL URLWithString:@"tcp://192.168...."] withOptions:nil];

以下是log: ===== custom modules begin ===== register protocol: async register protocol: ijkhttphook register protocol: ijkinject register protocol: ijklongurl register protocol: ijksegment register protocol: ijktcphook register demuxer : ijklivehook ===== custom modules end ===== av_version_info: ff3.0--ijk0.5.0--dev0.4.5--rc11 ijkmp_set_inject_opaque(0x154dc3340) ijkmp_set_inject_opaque()=void ijkmp_ios_set_view(glView=0x154dc53f0) ijkmp_ios_set_view(glView=0x154dc53f0)=void 2016-06-28 18:12:03.675 IjkDemo[6118:3439990] invalidateRenderBuffer ijkmp_set_data_source(url="tcp://192.168.....") ijkmp_set_data_source(url="tcp://192.168.....")=0 ijkmp_prepare_async() ijkmp_prepare_async()=0 2016-06-28 18:12:03.681 IjkDemo[6118:3439990] IJKSDLGLView:applicationDidBecomeActive: 0 2016-06-28 18:12:03.681 IjkDemo[6118:3439990] IJKFFMoviePlayerController:applicationDidBecomeActive: 0 2016-06-28 18:12:03.694 IjkDemo[6118:3439990] invalidateRenderBuffer 2016-06-28 18:12:03.728 IjkDemo[6118:3439990] invalidateRenderBuffer 2016-06-28 18:12:03.734 IjkDemo[6118:3440054] OK setup GL 2016-06-28 18:12:03.734 IjkDemo[6118:3440054] IJKSDLGLView:display: unable to tryLock GL active: 0 2016-06-28 18:12:03.735 IjkDemo[6118:3440062] IJKSDLGLView: setupDisplay not ready

如何修改才能播放这种tcp地址对应的h264流

bbcallen commented 8 years ago

If you mean raw h264 stream, you need to enable h264 demuxer/protocol or something else.

kQly commented 8 years ago

@bbcallen 那么要怎样设置才能 enable h264 demuxer/protocol

bbcallen commented 8 years ago

Modify config/module-lite.sh

kQly commented 8 years ago

config/module-lite.sh 查看了list-demuxers ,我添加了 export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --enable-demuxer=h264" 重新编译之后成功播放,感谢bbcallen

kQly commented 8 years ago

播放这个地址的流 播放前的准备时间大概有6s,相比于播放rtmp的不到0.5s有很大的差距,请问有什么办法降低这个播放h264原生流播放前的准备时间 @bbcallen

等待vtb fail!!! switch to ffmpeg decode!!!! 用了将近5s的时间 log:

ijkmp_set_inject_opaque(0x125db6e10) ijkmp_set_inject_opaque()=void 2016-07-06 14:23:59.293 IjkDemo[9092:5253074] OK setup GL ijkmp_ios_set_view(glView=0x1294ae4a0) ijkmp_ios_set_view(glView=0x1294ae4a0)=void 2016-07-06 14:23:59.300 IjkDemo[9092:5253074] invalidateRenderBuffer ijkmp_set_data_source(url="tcp://192.168.42.1:8001") ijkmp_set_data_source(url="tcp://192.168.42.1:8001")=0 ijkmp_prepare_async() ijkmp_prepare_async()=0 2016-07-06 14:23:59.304 IjkDemo[9092:5253074] invalidateRenderBuffer 2016-07-06 14:23:59.315 IjkDemo[9092:5278786] IJKSDLGLView: setupDisplay not ready 2016-07-06 14:23:59.316 IjkDemo[9092:5278786] IJKSDLGLView: setupDisplay not ready vtb fail!!! switch to ffmpeg decode!!!! 2016-07-06 14:24:04.644 IjkDemo[9092:5253074] FFP_MSG_VIDEO_DECODER_OPEN: false 2016-07-06 14:24:04.645 IjkDemo[9092:5253074] FFP_MSG_VIDEO_SIZE_CHANGED: 848, 480 2016-07-06 14:24:04.645 IjkDemo[9092:5253074] FFP_MSG_SAR_CHANGED: 1, 1 ijkmp_get_msg: FFP_MSG_PREPARED 2016-07-06 14:24:04.646 IjkDemo[9092:5253074] FFP_MSG_PREPARED: ijkmp_get_meta_l ijkmp_get_meta_l()=void 2016-07-06 14:24:04.646 IjkDemo[9092:5253074] fps in meta 29.970030 2016-07-06 14:24:04.646 IjkDemo[9092:5253074] mediaIsPrepareToPlayDidChange 2016-07-06 14:24:04.647 IjkDemo[9092:5253074] LoadStateDidChange: IJKMovieLoadStatePlayThroughOK: 3 aout_pause_audio(1) 2016-07-06 14:24:04.647 IjkDemo[9092:5253074] IJKMPMoviePlayBackStateDidChange 1: playing 2016-07-06 14:24:04.654 IjkDemo[9092:5253074] FFP_MSG_BUFFERING_START: 2016-07-06 14:24:04.655 IjkDemo[9092:5253074] loadStateDidChange: IJKMPMovieLoadStateStalled: 4 SDL_VoutFFmpeg_CreateOverlay(w=848, h=480, fmt=I420(0x30323449, dp=0x125def9e0) Video: first frame decoded 2016-07-06 14:24:04.986 IjkDemo[9092:5253074] FFP_MSG_VIDEO_SIZE_CHANGED: 848, 480 SDL_VoutFFmpeg_CreateOverlay(w=848, h=480, fmt=I420(0x30323449, dp=0x125def9e0) 2016-07-06 14:24:04.990 IjkDemo[9092:5253074] FFP_MSG_VIDEO_SIZE_CHANGED: 848, 480 SDL_VoutFFmpeg_CreateOverlay(w=848, h=480, fmt=I420(0x30323449, dp=0x125def9e0) 2016-07-06 14:24:05.031 IjkDemo[9092:5253074] FFP_MSG_VIDEO_SIZE_CHANGED: 848, 480 aout_pause_audio(0) 2016-07-06 14:24:05.403 IjkDemo[9092:5253074] FFP_MSG_BUFFERING_END: 2016-07-06 14:24:05.404 IjkDemo[9092:5253074] LoadStateDidChange: IJKMovieLoadStatePlayThroughOK: 3 2016-07-06 14:24:05.404 IjkDemo[9092:5253074] IJKMPMoviePlayBackStateDidChange 1: playing [GLES2] Version = OpenGL ES 2.0 Apple A9 GPU - 77.14 [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 yuv420p use render yuv420p 2016-07-06 14:24:05.413 IjkDemo[9092:5278885] IJKSDLGLView: renderbufferStorage fromDrawable [yuv420p] padding changed: 864 - 848 = 16 (0.018519) IJK_GLES2_Renderer_TexCoords_cropRight2016-07-06 14:24:05.425 IjkDemo[9092:5253074] FFP_MSG_VIDEO_RENDERING_START:

bbcallen commented 8 years ago

No idea, without debug.

coder-woo commented 8 years ago

你好,你最后解决了吗,我的延迟也很大。之前我是直接用的ffmpeg,比这个延迟低点,卡顿好点,现在的不知道原因?