프로젝트 소개

FFMpegCore는 FFMpeg 및 FFProbe 명령줄 도구를 감싸는 .NET Standard 라이브러리로, .NET 애플리케이션에서 미디어 분석과 변환을 가능하게 한다. 동기 및 비동기 호출을 모두 지원한다. 미디어 분석은 FFProbe를 통해 수행되며, Analyse 또는 AnalyseAsync를 통해 주어진 입력 경로에 대한 미디어 정보를 반환한다. 변환은 유창한 인수 빌더를 사용하는 FFMpeg를 통해 처리된다. 입력은 파일 또는 파이프에서 올 수 있고, 출력은 파일 또는 파이프로 갈 수 있다. 옵션은 비디오 및 오디오 코덱, constant rate factor, variable bitrate, 스케일링과 같은 비디오 필터, 웹 재생을 위한 faststart를 포함한다. 이 라이브러리는 또한 스트림으로의 변환 및 스트림으로부터의 변환을 지원하며, 예를 들어 VP9/WebM 출력을 스트림에 쓰는 것을 지원한다. 헬퍼 메서드는 일반적인 작업을 단순화한다: 비디오에서 이미지 스냅샷 캡처(디스크에 저장하거나 선택적 System.Drawing.Common 또는 SkiaSharp 확장 패키지를 통해 메모리에서 처리), 선택적 종횡비 유지 리사이즈를 통한 GIF 스냅샷 캡처, 비디오 부분 병합, 시간 범위로 하위 비디오 생성, 이미지 시퀀스를 비디오로 병합, 오디오 음소거, 오디오 트랙 추출, 오디오 트랙 교체, 정지 이미지와 오디오 파일 결합. 입력 파이핑은 중간 이미지 파일을 저장하지 않고 프로그램 메모리에서 직접 비디오 프레임을 쓸 수 있게 하며, 프레임이 생성되거나 수신되는 동안 실시간 변환을 가능하게 한다. IPipeSource 인터페이스는 스트림, 원시 비디오 프레임 및 원시 오디오 샘플에 대한 구현을 가지고 있다. 원시 비디오 프레임 소스는 프레임 레이트를 설정할 수 있으며, 이미지 확장 패키지는 System.Drawing.Bitmap 또는 SKBitmap을 프레임 인터페이스에 맞게 조정하는 래퍼를 제공한다. 바이너리는 FFMpegCore.Extensions.Downloader 패키지를 통해 런타임에 설치할 수 있으며, 이 패키지는 ffbinaries API를 사용하여 ffmpeg와 ffprobe를 구성된 바이너리 폴더로 가져온다. 또는 Windows의 Chocolatey, macOS의 Homebrew, Ubuntu의 apt와 같은 패키지 관리자를 통해 바이너리를 수동으로 설치할 수 있다. 경로 구성은 FFOptions 클래스를 통해 전역적으로, 실행별로, 또는 처음 사용할 때 읽히는 ffmpeg.config.json 파일을 통해 사용할 수 있다. 옵션에는 바이너리 폴더, 임시 파일 폴더 및 작업 디렉터리가 포함된다. 32비트와 64비트가 혼합된 배포의 경우, 바이너리 폴더 내부의 별도 x64 및 x86 하위 폴더에 아키텍처별 바이너리를 넣을 수 있으며, 그렇지 않으면 라이브러리는 바이너리 폴더를 직접 찾는다. 이 프로젝트는 구버전 ffmpeg 버전이 라이브러리에서 노출하는 모든 인수를 지원하지 않을 수 있으며, CI는 ffmpeg 8.1에 대해 테스트한다고 명시한다. MIT 라이선스로 배포된다.