2016-07-28 1 views
0

Visual Studio 2013 C++ 소프트웨어 (궁극적으로 OpenCV 프로젝트의 일부로)에서 ffmpeg를 사용하려고합니다.하지만 지금은 기본 FFMPEG 기능을 얻으려고합니다. 일반적으로 Visual Studio에서 빌드 할 때 다중 스레드 DLL 런타임 라이브러리로 64 비트 소프트웨어를 빌드합니다. 나는 http://ffmpeg.org/platform.html#Windows에서 'MinGW-w64'를 사용하여 '기본 Windows 컴파일 사용'에 대한 일반적인 지침을 사용하여 ffmpeg를 작성했습니다 (아래에서 설명하는 단계별로 자세한 단계를 제공합니다 ...).Visual Studio 개발 용 FFMPEG 빌드

내 시스템에 ffmpeg 소프트웨어를 만든 후 Visual Studio 2013에서 간단한 'hello world'프로젝트를 만들려고했습니다. 특히 http://dranger.com/ffmpeg/tutorial01.html에 제시된 초기 자습서 파일을 구현하려고했습니다. 다음

c:\msys64\usr\local\ffmpeg\libavutil\common.h(45): fatal error C1083: Cannot open include file: 'libavutil/avconfig.h': No such file or directory

이는 FFmpeg을 구축하고 내 기본 비주얼 스튜디오 프로젝트 생성하기 내가했다 자세한 단계는 다음과 같습니다 :

을 ========== 프로젝트를 빌드하면, 나는 오류 == 건물의는 FFmpeg ===============

  1. 가 다운로드 및 http://msys2.github.io
  2. 에서 msys2-x86_64-20160205.exe을 intalled는 Msys2는
  3. 를 설치 업데이트 할 update-core를 실행 0
  4. pacman -Suu (두 번) 업데이트 완료 (바로 가기 업데이트에 대한 지침 등에 따라)
  5. 그런 다음 MSys2 셸을 종료하고 MinGW-w64 Win64 셸을 열었습니다. 이 새로운 쉘에서 :
  6. pacman -S <package-name>을 사용하여 다음 패키지를 설치했습니다. 내가 설치 한 패키지 목록은 다음과 같습니다. make, pkg-config, diffutils, mingw-w64-x86_64-yasm, mingw-w64-x86_64-gcc, mingw- x86_64에-SDL, 자식
  7. 은 그 때 나는
  8. 내가 '밖으로의 나무'이 MSys64 폴더의는 FFmpeg 라이브러리를 구축하고 싶어
  9. git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg를 실행 cd /usr/local에 cd'd. 그래서, 내 Windows 시스템의 일반 파일 시스템에 나는 C에서 폴더를 생성 : cd /c/ffmpeg
  10. 그런 다음 다음 make -r
  11. /usr/loca/ffmpeg/configure --enable-shared를 실행하십시오 Win64를 쉘 위로
  12. 을 FFMPEG \,이 새 폴더에 cd'd 내가 추측이 있다면
  13. 그리고는 마지막으로

make install 이제, 나의 '결함'는 FFmpeg의 '구성'스크립트를 호출 할 때 내가 사용하는 옵션에 있었다. Visual Studio에서 ffmpeg 라이브러리를 빌드하여 동적 (DLL) 라이브러리로 사용할 수 있도록 특정 옵션을 사용해야합니까? 내 비주얼 스튜디오 프로젝트 ============을

다음

내가 있는지 확인하려면 Visual Studio에서 간단한 인사 세계 프로젝트를 생성하는 방법은 구성

========== ffmpeg가 작동 중입니다.

을 :

  1. 나는 다음과 같이 내가 다음 프로젝트 속성을 구성 2013
  2. Visual Studio에서 새 Visual C++ '빈 프로젝트'를 만들었습니다.C/C++ => 일반 => 추가 포함 디렉토리에

    C:\msys64\usr\local\ffmpeg

    b. 링커 => 일반 => 추가 라이브러리 디렉토리에서 필자는 각 라이브러리 라이브러리 폴더를 가리켰습니다. (기본적으로 실수로 중요한 라이브러리가 누락되지 않도록하기 위해 빌드 된 라이브러리 ).

    • C을 : 다음 목록은 FFmpeg에 \ \ 위해 libavcodec
    • C :는 FFmpeg \의 libavdevice \
    • C :는 FFmpeg \ \
    • C libavfilter :는 FFmpeg \의 libavformat \
    • C : \는 FFmpeg \ libavutil
    • C : \의는 FFmpeg \의 libswresample
    • C :는 FFmpeg \의 libswscale \
    • C :
    • 을 FFMPEG \

    c. Linker => Input => Additional Dependencies에서 특정 라이브러리를 가리켰습니다. (다시 - 나는 현재 존재하는 모든 라이브러리를 지적했습니다.) 목록은 다음과 같습니다

    • avdevice.lib
    • avfilter.lib
    • avformat.lib
    • swresample.lib
    • avutil.lib swscale.lib
    • avcodec.lib
  3. 다 새로운 소스 파일 'tut01.c'라는 및 복사/

  4. 그런 다음 F7을 누르 http://dranger.com/ffmpeg/tutorial01.c에서 코드를 붙여 및 오류에 대한 위의이 같은 나의 추측이다

을 avconfig.h 찾지 못하는 이상으로 지정 받았습니다 (btw, Windows 10, 64 비트) & Microsoft Visual Studio 2013.이 기본 프로그램을 빌드하고 실행하려면 무엇을 변경해야합니까?

+0

헤더를 찾을 수없는 경우 컴파일러는 include 디렉토리에 sth 오류가 있다고 불평합니다. 현재 링커 또는 외부 라이브러리와 아무 관련이 없습니다.따라서 프로젝트 속성 페이지 -> 구성 속성 -> VC++ 디렉토리 -> 디렉토리 포함으로 이동하여 헤더의 디렉토리를 추가하십시오. – halfelf

+0

@halfelf 팁 주셔서 감사. 문제는 (그리고 나는 내 게시물에서 이것을 언급해야만한다.) libavutil 폴더에는 avconfig.h 헤더가 없다. 이것이 내가 ffmpeg 빌드를 잘못 구성했다고 생각하는 이유입니다. – gboy

+0

신중히 읽지 않으셔서 죄송합니다. 이 경우 ffmpeg source dir에서 소스 코드를 찾아서 복사 할 수 있습니다. 그러나 전통적으로 말해서, 우리는 "--prefix = dir"옵션을 사용하여이 libs를 설정합니다. 그래서 모든 libs와 헤더는 빌드 후에 접두사 dir에있게됩니다. – halfelf

답변

0

@halfelf, 답장을 보내 주셔서 감사합니다. 그들은 내가 내 파일을 다시 한번 살펴보고 include (및 lib) 파일의 잘못된 위치를 지적하고 있음을 알았다. ffmpeg을 만들면 옆에있는 폴더 /usr/local/include/usr/local/bin에 각각 포함되는 것으로 보입니다. (avconfig.h를 포함하여) include 및 library 파일의 더 완전한 세트입니다. Visual Studio 프로젝트 속성이이 폴더를 가리 키도록 업데이트했습니다. 그 문제를 해결했다.

그러나 이후에는 'PIX_FMT_RGB24'라는 새로운 문제가 발견되지 않았습니다. 그러나 라고 생각합니다.이 파일은 내가 구식 인 튜토리얼 파일과 관련이 있습니다. 그 (그리고 관련된) 줄을 삭제할 수 있고 코드가 빌드되고 실행됩니다 (코드의 '돈'줄이 제거 된 이후로 많이하지는 않지만). 그러나 적어도 ffmpeg의 기본 기능이 작동하는 것처럼 보입니다.

+0

'PIX_FMT_xxx'는 오래된 매크로 이름이고, 대신'AV_PIX_FMT_xxx'로 변경하십시오. 사용 가능한 픽셀 형식 매크로에 대해서는'libavutil/pixfmt.h'를 확인하십시오. – halfelf

+0

@halfelf 감사합니다! 그것이 문제였습니다. 그 1 개의 치환과 Tut01가 지금 컴파일 & 실행하게했다! – gboy