2016-08-09 24 views
5

Tôi đang xây dựng một ứng dụng giải mã đơn giản bằng cách sử dụng API FFMPEG. Tôi biết có những giải pháp có sẵn trong OpenCV nhưng vì lý do cụ thể, tôi đang kiềm chế bản thân mình bằng cách sử dụng nó. Vì tôi rất mới với FFMPEG (và đối với cộng đồng này), tôi muốn biết nếu có bất kỳ sai lầm nào mà tôi có thể đã làm khi xây dựng FFMPEG.FFMPEG: ‘PIX_FMT_BGR24’ không được khai báo trong phạm vi này

Trình biên dịch: Tôi đang sử dụng gcc 5.3.0 để biên dịch và xây dựng.

Sau đây là các bước mà chúng tôi theo:

  1. Tôi đã xây dựng thư viện FFMPEG sử dụng cấu hình sau:

    ./configure --prefix =/home/dep/ffmpeg/cài đặt/--pkg-config-cờ = - tĩnh enable-gpl --disable-yasm

  2. lệnh biên dịch của tôi là cho các ứng dụng:

    012.

    g ++ -std = C++ 11 -I/home/dep/ffmpeg/install/include/Queue.cpp Image.cpp CaptureFFMPEGFrame.cpp Object.cpp main.cpp -o main -L/home/dep/ffmpeg/cài đặt/lib -lavutil -lavcodec -lavformat -lavdevice -lavfilter -lswscale -lswresample -lpostproc -lpthread -lz -lrt -llzma -lbz2

Các lỗi tôi phải đối mặt là:

CaptureFFMPEGFrame.cpp:203:169: error: ‘PIX_FMT_BGR24’ was not declared in this scope 
    mpFrameSwsContext = sws_getContext(mpAVCodecContext->width, mpAVCodecContext->height, mpAVCodecContext->pix_fmt, mpAVCodecContext->width, mpAVCodecContext->height, PIX_FMT_BGR24, SWS_BICUBIC, NULL, NULL, NULL) 

Nỗ lực và sự hiểu biết của tôi:

  1. Từ hiểu biết của tôi, libavutil/pixfmt.h chứa định dạng pixel mà tôi đưa vào cùng với các lỗi khác và lỗi vẫn tồn tại. Bạn cũng có thể xem các thư viện tôi đã đưa vào cùng với ứng dụng của mình.

  2. Kể từ khi chương trình của tôi là mã cpp, do đó tiêu đề của tôi đã được bao gồm sử dụng extern "C", ví dụ: #include "libavcodec/avcodec.h"

Bất cứ điều gì tôi có thể đã bỏ lỡ?

Rất cám ơn.

+5

Tại một số thời điểm nó được đổi tên thành 'AV_PIX_FMT_BGR24', có lẽ đó là vấn đề. –

+1

Oh hoàn hảo! Điều đó hoạt động rất tốt, có vẻ như tôi đang theo tài liệu cũ (https://www.ffmpeg.org/doxygen/0.5/pixfmt_8h.html) – msz

+1

Rất cám ơn Roman, tài liệu mới ở đây dành cho những độc giả khác: https: // www. ffmpeg.org/doxygen/2.5/pixfmt_8h.html – msz

Trả lời

6

Tính đến cam kết 78071a14, định dạng pixel đã được bắt đầu bằng AV_, và PIX_FMT_* định nghĩa là di chuyển đến libavutil/old_pix_fmts.h (được bao gồm theo bản gốc pixfmt.h). Tệp này sau đó đã bị xóa trong phiên bản chính tiếp theo.

Sửa chữa (như được mô tả trong các nhận xét) chỉ để thêm tiền tố này vào bất kỳ câu hỏi PIX_FMT_* nào chưa được cập nhật.

Các vấn đề liên quan