목록2023/03/19 (13)
buntalk.com
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 ..
2019/04/07 Tutorial 01: Making Screencaps http://dranger.com/ffmpeg/tutorial01.html Overview 영화파일은 기본적인 몇가지 컴포넌트를 가지고 있다. 먼저, 파일 자체는 컨테이너라고 불리며 컨테이너의 형식으로 파일이 갖는 정보를 알 수 있다. 컨테이너에는 AVI와 퀵타임같은게 있다. 다음은 스트림 모음이다. 예를들어, 오디오 스트림과 비디오 스트림. ("스트림"은 시간에 따라 만들어진 데이터 엘리먼트의 묶음"을 나타내는 용어이다. 스트림내 데이터 엘리먼트는 프레임. 각 스트림은 다른 코덱으로 인코드될 수 있다. 코덱은 어떻게 실제 데이터가 코드되고 디코드되는지를 정의하는 것으로 그래서 이름이 코덱이다. 코덱의 예시에는 DivX와 MP3가..