Open iqluoji opened 8 years ago
iOS平台 模拟器上拖动没问题 真机拖动画面停止 声音还有
FFP_MSG_SAR_CHANGED: 1, 1 2016-07-27 14:33:13.448 videoSearch[75125:3896524] FFP_MSG_PREPARED: ijkmp_get_meta_l ijkmp_get_meta_l()=void [ffplay_abuffer @ 0x7fdd01324210] Setting 'sample_rate' to value '44100' 2016-07-27 14:33:13.449 videoSearch[75125:3896524] fps in meta 23.976024 [ffplay_abuffer @ 0x7fdd01324210] Setting 'sample_fmt' to value 'fltp' [ffplay_abuffer @ 0x7fdd01324210] Setting 'channels' to value '2' [ffplay_abuffer @ 0x7fdd01324210] Setting 'time_base' to value '1/44100' [ffplay_abuffer @ 0x7fdd01324210] Setting 'channel_layout' to value '0x3' 2016-07-27 14:33:13.449 videoSearch[75125:3896524] mediaIsPreparedToPlayDidChange [ffplay_abuffer @ 0x7fdd01324210] tb:1/44100 samplefmt:fltp samplerate:44100 chlayout:0x3 [ffplay_abuffersink @ 0x7fdd01444620] auto-inserting filter 'auto-inserted resampler 0' between the filter 'ffplay_abuffer' and the filter 'ffplay_abuffersink' [AVFilterGraph @ 0x7fdd01471b20] query_formats: 2 queried, 0 merged, 3 already done, 0 delayed [auto-inserted resampler 0 @ 0x7fdd01324380] [SWR @ 0x7fdcfd2d8800] Using fltp internally between filters [auto-inserted resampler 0 @ 0x7fdd01324380] ch:2 chl:stereo fmt:fltp r:44100Hz -> ch:2 chl:stereo fmt:s16 r:44100Hz 2016-07-27 14:33:13.449 videoSearch[75125:3896524] loadStateDidChange: IJKMPMovieLoadStatePlaythroughOK: 3 2016-07-27 14:33:13.449 videoSearch[75125:3896524] IJKMPMoviePlayBackStateDidChange 1: playing SDL_VoutVideoToolBox_CreateOverlay(w=960, h=540, fmt=_VTB(0x4254565f, dp=0x7fdcfe687b80) Video: first frame decoded 2016-07-27 14:33:13.479 videoSearch[75125:3896524] FFP_MSG_VIDEO_SIZE_CHANGED: 960, 540 SDL_VoutVideoToolBox_CreateOverlay(w=960, h=540, fmt=_VTB(0x4254565f, dp=0x7fdcfe687b80) 2016-07-27 14:33:13.486 videoSearch[75125:3896524] FFP_MSG_VIDEO_SIZE_CHANGED: 960, 540 2016-07-27 14:33:13.487 videoSearch[75125:3897608] OK use NV12 GL renderer 2016-07-27 14:33:13.490 videoSearch[75125:3897608] OK setup GL programm 2016-07-27 14:33:13.492 videoSearch[75125:3897608] OK setup GL framebuffer 750:480 2016-07-27 14:33:13.496 videoSearch[75125:3896524] FFP_MSG_VIDEO_SIZE_CHANGED: 960, 540 avcodec/Audio: first frame decoded 2016-07-27 14:33:13.502 videoSearch[75125:3896524] FFP_MSG_AUDIO_RENDERING_START: [mpegts @ 0x7fdcfca8f800] first_dts 900000 not matching first dts 987771 (pts 987771, duration 2089) in the queue SDL_VoutVideoToolBox_CreateOverlay(w=960, h=540, fmt=_VTB(0x4254565f, dp=0x7fdcfe687b80) 2016-07-27 14:33:13.516 videoSearch[75125:3896524] FFP_MSG_VIDEO_RENDERING_START: [hls,applehttp @ 0x7fdcfd123a00] HLS request for url 'http://175.6.234.18/6774E7F88023C7307749D38CC/03000118005794F63C12162D9B7D2F224F04EF-5263-7817-D117-ACC6F79A2630.flv.ts?ts_start=5&ts_end=15&ts_seg_no=1&ts_keyframe=0', offset 0, playlist 0 [http @ 0x7fdcfe93b840] No trailing CRLF found in HTTP header. [http @ 0x7fdcfe93b840] request: GET /6774E7F88023C7307749D38CC/03000118005794F63C12162D9B7D2F224F04EF-5263-7817-D117-ACC6F79A2630.flv.ts?ts_start=5&ts_end=15&ts_seg_no=1&tskeyframe=0 HTTP/1.1 User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727) Accept: /_ Connection: close Host: 175.6.234.18 Icy-MetaData: 1
[NULL @ 0x7fdcfca83800] unknown SEI type 37 [hls,applehttp @ 0x7fdcfd123a00] HLS request for url 'http://175.6.234.18/6774E7F88023C7307749D38CC/03000118005794F63C12162D9B7D2F224F04EF-5263-7817-D117-ACC6F79A2630.flv.ts?ts_start=15&ts_end=25&ts_seg_no=2&ts_keyframe=0', offset 0, playlist 0 [http @ 0x7fdcfe93b840] No trailing CRLF found in HTTP header. [http @ 0x7fdcfe93b840] request: GET /6774E7F88023C7307749D38CC/03000118005794F63C12162D9B7D2F224F04EF-5263-7817-D117-ACC6F79A2630.flv.ts?ts_start=15&ts_end=25&ts_seg_no=2&tskeyframe=0 HTTP/1.1 User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727) Accept: /_ Connection: close Host: 175.6.234.18 Icy-MetaData: 1
2016-07-27 14:33:16.104 videoSearch[75125:3896524] IJKMPMoviePlayBackStateDidChange 4: seeking ijkmp_seek_to(1388776) ijkmp_seek_to(1388776)=0 ijkmp_get_msg: FFP_REQ_SEEK [FFPlayer @ 0x7fdd01572f60] stream_seek 1398776000(1388776) + 10000000, [FFPlayer @ 0x7fdd01572f60] ijkmp_get_msg: FFP_REQ_SEEK: seek to 1388776 [FFPlayer @ 0x7fdd01572f60] ffp_toggle_buffering_l: start aout_pause_audio(1) 2016-07-27 14:33:16.161 videoSearch[75125:3896524] FFP_MSG_BUFFERING_START: 2016-07-27 14:33:16.161 videoSearch[75125:3896524] loadStateDidChange: IJKMPMovieLoadStateStalled: 4 ijkmp_get_msg: FFP_MSG_SEEK_COMPLETE [hls,applehttp @ 0x7fdcfd123a00] HLS request for url 'http://121.12.95.11/6578FE9C94E3F748136FB3592/03000118075794F63C12162D9B7D2F224F04EF-5263-7817-D117-ACC6F79A2630.flv.ts?ts_start=40&ts_end=50&ts_seg_no=143&ts_keyframe=0', offset 0, playlist 0 2016-07-27 14:33:16.162 videoSearch[75125:3896524] FFP_MSG_SEEK_COMPLETE: [http @ 0x7fdd0149b550] No trailing CRLF found in HTTP header. [http @ 0x7fdd0149b550] request: GET /6578FE9C94E3F748136FB3592/03000118075794F63C12162D9B7D2F224F04EF-5263-7817-D117-ACC6F79A2630.flv.ts?ts_start=40&ts_end=50&ts_seg_no=143&tskeyframe=0 HTTP/1.1 User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727) Accept: /_ Connection: close Host: 121.12.95.11 Icy-MetaData: 1
这是模拟器的log
hls 目前硬解不支持拖动,ijk没做处理,可能默认认为hls是实时流,不需要支持拖动,我自己跟踪代码,找了个方法解决,目前没有发生其他问题
int videotoolbox_decode_video(VideoToolBoxContext* context, AVCodecContext avctx, const AVPacket *avpkt, int got_picture_ptr) 在这个函数里,加上 context->recovery_drop_packet = false;
加上这行代码后,hls,ts流就都可以seek了
@LSLdalong 请问在哪个类里面的呢...
int videotoolbox_decode_video(VideoToolBoxContext* context, AVCodecContext avctx, const AVPacket *avpkt, int got_picture_ptr) { if (!avpkt || !avpkt->data) { return 0; }
if (ff_avpacket_is_idr(avpkt) == true) {
context->idr_based_identified = true;
}
if (ff_avpacket_i_or_idr(avpkt, context->idr_based_identified) == true) {
ResetPktBuffer(context);
context->recovery_drop_packet = false;
}
if (context->recovery_drop_packet == true) {
return -1;
}
DuplicatePkt(context, avpkt);
if (context->refresh_session) {
int ret = 0;
if (context->m_vt_session) {
VTDecompressionSessionWaitForAsynchronousFrames(context->m_vt_session);
VTDecompressionSessionInvalidate(context->m_vt_session);
CFRelease(context->m_vt_session);
}
CreateVTBSession(context, context->ffp->is->viddec.avctx->width, context->ffp->is->viddec.avctx->height);
if ((context->m_buffer_deep > 0) &&
ff_avpacket_i_or_idr(&context->m_buffer_packet[0], context->idr_based_identified) == true ) {
for (int i = 0; i < context->m_buffer_deep; i++) {
AVPacket* pkt = &context->m_buffer_packet[i];
ret = videotoolbox_decode_video_internal(context, avctx, pkt, got_picture_ptr);
}
} else {
context->recovery_drop_packet = true;
ret = -1;
ALOGE("recovery error!!!!\n");
}
context->refresh_session = false;
return ret;
}
return videotoolbox_decode_video_internal(context, avctx, avpkt, got_picture_ptr);
}
@LSLdalong 这个方法里有做判断呀...
是的
@iqluoji 哪个类?
https://github.com/befovy/ijkplayer/commit/313ea5e0c34e18f9ab08e94fc7a8c4ecc7a79e29
这样修改也可以
static bool ff_avpacket_i_or_idr(const AVPacket* pkt,bool isIdr) {
if (isIdr == true) {
--- return ff_avpacket_is_idr(pkt);
+++ return ff_avpacket_is_idr(pkt) || ff_avpacket_is_key(pkt);
} else {
return ff_avpacket_is_key(pkt);
}
}
unknown SEI type 37 decode callback -12909 kVTVideoDecoderBadDataErr decodeFrame -12911 kVTVideoDecoderMalfunctionErr HLS request for url 'http://183.61.6.236/677C43DD6524381156E5785A37/03000118095794F63C12162D9B7D2F224F04EF-5263-7817-D117-ACC6F79A2630.flv.ts?ts_start=80&ts_end=90&ts_seg_no=187&ts_keyframe=0', offset 0, playlist 0 No trailing CRLF found in HTTP header. request: GET /677C43DD6524381156E5785A37/03000118095794F63C12162D9B7D2F224F04EF-5263-7817-D117-ACC6F79A2630.flv.ts?ts_start=80&ts_end=90&ts_seg_no=187&ts_keyframe=0 HTTP/1.1
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)
Accept: /
Connection: close
Host: 183.61.6.236
Icy-MetaData: 1