ffserver for Windows 64bit 빌드

rtsp 테스트를위해 윈도 서버에 ffserver를 올릴 일이 생겼다. ffmpeg 홈페이지에서 받을 수 있는 윈도용 바이너리는 ffserver가 없다. 반나절 msys에서 ‘configure –toolchain=msvc’로 아무리 컨피그를 해봐도 ffserver가 빌드 안되길레 구글링 해봤더니 Cygwin에서 빌드된다는 문서가 나왔다. 그것도 밤 12시 쯤 집에서 마지막으로 한번 더 찾아봤을때서야 찾게되었다(…).

암튼 빌드 과정은 아래와같고 64비트 버전 기준이다.

 

1. Cygwin 설치

https://cygwin.com/install.html에서 Cygwin 다운로드. (OS가 64비트라서 64비트 버전을 받았다.)

– setup-x86_64 실행. 왠만한건 Next하면 되며, Local Package Directory에서 에러가 날 수 있지만 무시하면 된다.

– 아래 화면에서 속도가 잘 나오도록 daum 미러서버를 선택.

Cygwin select mirror

– Select Packages에서 Devel Category를 펼친다음 아래 항목들을 찾아서(Search에 입력하여 검색 가능) 선택

gcc-core, gcc-g++, git, make, yasm

– Editors에서 vim을 선택하여 ‘다음(N)’ 선택

 

2. 소스코드 다운로드
소스코드 다운로드 시 3.1.2버전을 받도록 하였다. 이유는 다음 버전부터 ffserver가 제거되기때문이다.

– 시작메뉴에서 Cygwin64 Terminal을 찾아서 실행

– git config core.autocrlf 실행하여 false가 출력되는지 확인

– true일경우 git config –global core.autocrlf false 실행, 이후 다시 git config core.autocrlf 실행하면 false가 출력됨

– git clone –branch n3.1.2 https://git.ffmpeg.org/ffmpeg.git 실행하여 소스코드 다운로드

– ffmpeg 폴더로 이동 (cd ffmpeg)

– ./configure –prefix=../ffmpeg-3.1.2 실행

– vi config.h 실행 (vim 사용법을 모른다면 구글링을)
핵심으로는 i 누르면 입력(끼워넣기)모드, ESC누르면 커서이동모드, 커서이동모드에서는 / 입력 후 검색할 단어 입력 가능, 커서이동모드에서 : 입력 후 wq 입력하면 저정 후 종료 정도이다. (검색어, wq입력 후 엔터는 필수)

– HAVE_ARC4RANDOM의 값을 1에서 0으로 수정 (링크에서 나는 에러 패치)

– #ifndef 다음라인(약 3~4번째 라인)에 _XOPEN_SOURCE 700 추가 (sigaction 함수선언 문제 해결)

– 저장 후 종료

– make -j5 실행 (-j 옵션은 동시빌드 개수. i7이면 8정도로 해도 무난하다.)

– make install 실행

3. 완료

아마 위 대로만 진행하면 에러없이 c드라이브의 cygwin64 – home – iruis – ffmpeg-3.1.2 폴더에서  ffserver.exe 파일을 얻을 수 있다. 단, cygwin64 – bin 폴더에서 cygwin1.dll 파일을 ffserver.exe 파일이 있는 폴더에 복사해둬야된다.

그러면 프롬프트상에서 ffserver를 실행하면 아래와같이 실행되는 ffserver 결과를 볼 수 있다. 설정은 다루지 않을것이기때문에 잘 설명 된 자료를 찾아서 ffserver를 사용하면 될것이다.

ffserver

 

그나저나 구글링을 더 심도있게하면 이미 빌드된 윈도용 ffserver를 받을 수 있는건 아니겠지(…)

 

참고:
https://ffmpeg.org/download.html (소스 저장소 정보)
https://trac.ffmpeg.org/wiki/StreamingGuide (Cygwin에서 ffserver가 빌드 됨)
https://ffmpeg.org/index.html#news (다음버전 부터는 ffserver는 drop 됨)
http://stackoverflow.com/a/37443771 (에러 패치 참고내용)

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다

*
*

이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.