Фильтрация (деинтерлейсинг) в ffmpeg

Можно ли сделать деинтерлейс? я следил

и к сожалению

Среда выполнения Java обнаружила фатальную ошибку:

EXCEPTION_ACCESS_VIOLATION (0xc0000005) по адресу pc=0x00007ff831ee94cd, pid=8808, tid=9184

Версия JRE: Java(TM) SE Runtime Environment (8.0_91-b14) (сборка 1.8.0_91-b14) Java VM: Java HotSpot(TM) 64-битный сервер VM (25.91-b14 смешанный режим windows-amd64 сжатый oops) Проблематично кадр: C [avfilter-6.dll+0x394cd]

когда init вызывает avfilter.avfilter_graph_create_filter. Код метода:

avfilter.AVFilterContext filter_src_ctx = null;
avfilter.AVFilterContext filter_sink_ctx = null;
 private void init_filtering(avcodec.AVCodecContext ctx, AVFrame frame) {
        avfilter.AVFilter buffer_src = avfilter.avfilter_get_by_name("buffer");
        avfilter.AVFilter buffer_sink = avfilter.avfilter_get_by_name("buffersink");
        avfilter.AVFilterInOut inputs = avfilter.avfilter_inout_alloc();
        avfilter.AVFilterInOut outputs = avfilter.avfilter_inout_alloc();

        String args = String.format("video_size=%dx%d:pix_fmt=%d:time_base=%d/%d:pixel_aspect=%d/%d",
            frame.width(),
            frame.height(),
            frame.format(),
            ctx.time_base().num(),
            ctx.time_base().den(),
            ctx.sample_aspect_ratio().num(),
            ctx.sample_aspect_ratio().den());

        String description = "yadif=1:-1:0";
        avfilter.AVFilterGraph graph = avfilter.avfilter_graph_alloc();

        int result = avfilter.avfilter_graph_create_filter(filter_src_ctx, buffer_src, "in", args, null, graph);
        if (result < 0) {
            System.out.println("error");
        }

        avfilter.AVBufferSinkParams params = avfilter.av_buffersink_params_alloc();
        params.pixel_fmts().put(avutil.AV_PIX_FMT_NONE);

        result = avfilter.avfilter_graph_create_filter(filter_sink_ctx, buffer_sink, "out", null, params, graph);
        av_free(params);
        if (result < 0) {
            System.out.println("error");
        }
        inputs.name(new BytePointer("out"));
        inputs.filter_ctx(filter_sink_ctx);
        inputs.pad_idx(0);
        inputs.next(null);

        inputs.name(new BytePointer("in"));
        inputs.filter_ctx(filter_src_ctx);
        inputs.pad_idx(0);
        inputs.next(null);

        result = avfilter.avfilter_graph_parse_ptr(graph, description, inputs, outputs, null);
        if (result < 0) {
            System.out.println("error");
        }

        result = avfilter.avfilter_graph_config(graph, null);
        if (result < 0) {
            System.out.println("error");
        }
        isInitFilter = true;
    }

Я был бы признателен за любое предложение. (Это копия проблемы, описанной в javacpp)


person mtadmk    schedule 02.12.2016    source источник
comment
Создан ли ffmpeg с параметром --enable-gpl?   -  person WLGfx    schedule 02.12.2016
comment
Проблема, похоже, связана с неправильным разрешением. Какая ОС?   -  person Marichyasana    schedule 02.12.2016