ffmpeg av_read_frame被长时间阻止

时间:2018-04-10 02:27:37

标签: ffmpeg block rtsp

while (av_read_frame(pFormatCtx, packet) >= 0) {
    if (packet->stream_index == videoindex) {
        ret = avcodec_decode_video2(pCodecCtx, pFrame, &got_picture, packet);
        if (ret < 0) {
            printf("Decode Error.\n");
            return -1;
        }
        printf("Succeed to decode 1 frame! %d\n", tt++);
    }
    av_packet_unref(packet);
}

我正在使用ffmpeg在Android中提供实时音频/视频RTSP流。

但是我永远无法阻止av_read_frame功能。 Android日志:

I/libnav: Succeed to decode 1 frame! 70
I/libnav: Succeed to decode 1 frame! 71
I/libnav: Succeed to decode 1 frame! 72
I/libnav: Succeed to decode 1 frame! 73
I/libnav: Succeed to decode 1 frame! 74
I/libnav: Succeed to decode 1 frame! 75
blocking forever...

因此我  已经尝试了一些代码。我已将关于ffmpeg的Android jni代码复制到pc(ubuntu)。我的代码上面没有任何阻塞。

Succeed to decode 21122 frame!
Succeed to decode 21123 frame!
Succeed to decode 21124 frame!
...
without blocking ...

我猜这个问题是关于延迟的。我在android jni中删除了avcodec_decode_video2调用。我的代码没有任何阻塞地执行。

我找到了ffmpeg av_read_frame() need very long time to stop个帖子。但它无法帮助我。

如果您遇到类似问题,请帮助我。

0 个答案:

没有答案