0

次のコードの場合(ARCなしでビルド)

.hで

@interface VideoFrameExtractor : NSObject {
AVFormatContext *pFormatCtx;
AVCodecContext *pCodecCtx;
}

.mで

int av_open_input_file(AVFormatContext **ic_ptr, const char *filename,
                       AVInputFormat *fmt,
                       int buf_size,
                       AVFormatParameters *ap);

    // Open video file
    if(av_open_input_file(&pFormatCtx, [moviePath  cStringUsingEncoding:NSASCIIStringEncoding], NULL, 0, NULL)!=0)
        goto initError; // Couldn't open file

    // Retrieve stream information
    if(av_find_stream_info(pFormatCtx)<0)
        goto initError; // Couldn't find stream information

pFormatCtxプロパティの属性を保持するように設定する必要がありますか?これを尋ねる理由は、av_find_stream_info呼び出しでプロパティを参照するときにEXC_BAD_ACCESSエラーが発生したためです。

4

1 に答える 1

0

pFormatCtxプロパティの属性をstrongまたは他の何かに設定する必要がありますか?

av_open_input_fileこれはObjectiveCの方法ではなく、ARCの外部に直接メモリを割り当て、参照カウントは一切行いません。したがって、強力なプロパティを介してこれらの参照を処理する必要はありません。

av_find_stream_infoあなたは間違いなく失敗するかもしれない方法でそれを探すべきです。

実際、私が見ているのは、ライブラリが機能するように正しく設定するには、いくつかの手順に従う必要があるということです。

AVFormatContext* pFormatCtx = avformat_alloc_context();
avformat_open_input(&pFormatCtx, filename, NULL, NULL);
int64_t duration = pFormatCtx->duration;
// etc
avformat_free_context(pFormatCtx);

いずれにせよ、ドキュメントを調べて、このチュートリアルも見てください。

于 2012-07-24T07:59:29.640 に答える