목록FFmpeg (8)
buntalk.com
2019/04/08 Tutorial 07: Seeking http://dranger.com/ffmpeg/tutorial07.html 탐색 명령 다루기 이제 재생기에 탐색 기능을 추가한다. 또한 av_seek_frame 이 얼마나 쉽게 사용할 수 있는지 확인한다. 작게 앞뒤로 가는 것과 많이 앞뒤로 가는 것을 만들 것이다. 왼쪽 오른쪽 방향은 10초, 위 아래 방향은 60초이다. 그러니 먼저 메인루프에 키 입력을 받도록 처리한다. 키입력을 받은 곳에서 직접적으로 av_seek_frame을 호출할 수는 없다. 이 것은 decode_thread루프에서 처리해야한다. 그러니 큰 구조체에 추가적인 변수를 추가하여 탐색 플래그를 설정한다. int seek_req; int seek_flags; int64_t seek..
2019/04/08 Tutorial 06: Synching Audio http://dranger.com/ffmpeg/tutorial06.html 마지막시간으로, 동기화에 대해 조금더 살펴봐야 하는데, 이름하여 비디오 시간에 오디오를 동기화 하는 것이다. 비디오에서 했던것과 같은 방법으로 하는데, 내부 비디오 클락을 만들어 비디오 스레드가 얼마나 멀리 있는지 추적하고 오디오를 거기에 맞춘다. 이후에 우리는 외부 클락에 맞춰 오디오와 비디오를 동기화하는 일반화 방법에대해 살펴본다. 비디오 클락 구현하기 오디오 클락에서처럼 비디오 클락을 구현하기를 원한다. : 현재 재생한 비디오의 현 시간 옵셋이 주어지는 내부값이 있다. 먼저, 보여진 마지막 프레임의 현 PTS에 맞춘 타이머를 업데이트하는 만큼 간단하게 생각..
2019/04/08 Tutorial 05: Synching Video http://dranger.com/ffmpeg/tutorial05.html 주의 이 튜토리얼을 만들때 싱킹코드는 ffplay.c에서 얻었으나. 현제 완전히 다른 프로그램이되었고 FFmpeg라이브러리가 향상되어 몇몇 전략이 변경되었다. 이 코드가 여전히 작동하지만 좋아보이지 않을 수 있다. 이 튜토리얼에서 사용하는 것보다 더 나은 방법이 있을 수 있다. 어떻게 비디오가 싱크되는가 지금까지 우리는 사용불가능한 영화 플레이어를 만들었다. 비디오를 재생하고 오디오를 재생하지만 이 것을 영화라고 부르기는 어렵다. 이제 무엇을 해야하는가? PTS와 DTS 다행히, 오디오와 비디오 스트림은 얼마나 빠르게, 그리고 언제 재생해야 하는지에 대한 정보를..
2019/04/08 Tutorial 04: Spawning Threads http://dranger.com/ffmpeg/tutorial04.html 오버뷰 마지막에 SDL의 오디오 함수를 통해 오디오 지원을 추가했다. SDL은 오디오가 필요할 때 우리가 지정한 콜백함수를 호출할 수 있는 스레드를 생성한다. 이제 비디오 디스플레이에 대한 처리를 수행할 때다. 이는 코드를 더욱 모듈러하고 작업하기 쉽게 하는데 특히 싱킹을 추가하기를 원할 때 그렇다. 그래서 어디서 시작해야할까? 먼저 메인함수는 너무 많은 것을 다루고 있음을 알 수 있다. 이벤트 루프를 거쳐 실행하며, 패킷을 읽고, 비디오를 디코딩한다. 그래서 우리가 할 것은 이들을 부분으로 쪼개는 것이다. 스레드를 가져 패킷을 디코딩하는 것을 맡긴다. 이들..
2019/04/08 Tutorial 03: Playing Sound http://dranger.com/ffmpeg/tutorial03.html 오디오 이제 사운드를 재생한다. SDL은 사운드 출력을 제공한다. SDL_OpenAudio() 함수는 오디오 장치를 열기위한 함수로서 이 함수는 SDL_AudioSpec 구조체를 매개변수로 받는데 여기에 출력하고자하는 오디오에 대한 모든정보를 지정한다. 이를 어떻게 설정하는지 보여주기전에 먼저 오디오가 어떻게 처리되는지 알아보자. 디지털 오디오는 샘플의 긴 스트림으로 구성된다. 각 샘플은 오디오 웨이브폼의 값을 나타낸다. 사운드는 특정 샘플 레이트로 녹음되어 있으며 이를 통해 각 샘플을 재생하는데 어느정도 속도를 갖는지를 나타내는 것으로서 초당 샘플의 갯수로 측정..
2019/04/07 Tutorial 02: Outputting to the Screen http://dranger.com/ffmpeg/tutorial02.html SDL and Video 스크린에 그리기위해 SDL을 사용한다. SDL은 Simple DirectMedia Layer 로서 멀티미디어를 위한 훌륭한 라이브러리이며 크로스 플랫폼이고 다양한 프로젝트에서 사용된다. 라이브러리는 get the library at the official website 거나 운영체제에 맞는 개발 패키지를 다운로드할 수 있다. 이 튜토리얼을 위해 라이브러리를 컴파일 해야 한다. SDL은 스크린에 드로잉하기 위한 다양한 방법을 가지고 있는데 그 중에 하나가 스크린에 영화를 보여주는 것으로서 YUV오버레이라 부른다. YUV ..