gpt4 book ai didi

ios - FFMPEG:干净地关闭 RTSP 流——avformat_close_input 上的 av_read_frame 崩溃

转载 作者:行者123 更新时间:2023-12-01 17:09:12 50 4
gpt4 key购买 nike

我正在使用 KxMovie:https://github.com/kolyvan/kxmovie

它似乎停止了一个流并关闭了应该使用的 View Controller [暂停];
但是,如果流未正确关闭(它只是挂起),我正在尝试从存在内存泄漏的 gstreamer 版本接收流。

所以,只是[暂停]对我来说不是一个选择。

我正在尝试在 KxMovie 解码器中使用 [closeFile]:

-(void) closeFile
{

[self closeAudioStream];
[self closeVideoStream];
[self closeSubtitleStream];

_videoStreams = nil;
_audioStreams = nil;
_subtitleStreams = nil;

if (_formatCtx) {
_formatCtx->interrupt_callback.opaque = NULL;
_formatCtx->interrupt_callback.callback = NULL;
avformat_close_input(&_formatCtx);
_formatCtx = NULL;
}
}

但是,在 [closeFile] 发出 avformat_close_input 之后,我通常会从 av_read_frame 获得 EXC_BAD_ACCESS。

谁能给我一些关于如何使用 ffmpeg 彻底关闭 RTSP 流的建议?

谢谢!

最佳答案

我也对此感到困惑,我不太了解您的解决方案。

我把它固定在下面,你能给点建议吗?

_dispatchQueue 与执行 asyncDecodeFrames 工作的队列相同。

- (void)unSetup {

_buffered = NO;
_interrupted = YES;

dispatch_async(_dispatchQueue, ^{
if (_decoder) {

[self pause];
[self freeBufferedFrames];

if (_moviePosition == 0 || _decoder.isEOF)
[gHistory removeObjectForKey:_decoder.path];
else if (!_decoder.isNetwork)
[gHistory setValue:[NSNumber numberWithFloat:_moviePosition]
forKey:_decoder.path];

[_decoder closeFile];
}
});

}

关于ios - FFMPEG:干净地关闭 RTSP 流——avformat_close_input 上的 av_read_frame 崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19281692/

50 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com