> 백엔드 개발 > Golang > Golang 및 FFmpeg를 사용하여 비디오 프레임을 추출하는 방법

Golang 및 FFmpeg를 사용하여 비디오 프레임을 추출하는 방법

PHPz
풀어 주다: 2023-09-29 16:05:08
원래의
1433명이 탐색했습니다.

Golang 및 FFmpeg를 사용하여 비디오 프레임을 추출하는 방법

Golang 및 FFmpeg를 사용하여 비디오 프레임을 추출하는 방법

요약:
이 문서에서는 Golang 및 FFmpeg를 사용하여 비디오 프레임을 추출하는 방법을 소개하고 구체적인 코드 예제를 제공합니다. 이 방법을 통해 비디오에서 각 프레임을 쉽게 추출하고 후속 처리 및 분석할 수 있습니다.

  1. 소개
    영상 콘텐츠가 지속적으로 증가함에 따라 영상 처리에 대한 수요도 늘어나고 있습니다. 그 중 비디오 프레임 추출은 많은 비디오 분석 및 처리 작업의 기본 단계 중 하나입니다. 이번 글에서는 Golang과 FFmpeg를 사용하여 비디오 프레임을 추출하는 방법을 소개하겠습니다.
  2. FFmpeg 개요
    FFmpeg는 오디오 및 비디오 형식을 변환, 인코딩 및 디코딩할 수 있는 오픈 소스 멀티미디어 처리 도구 세트입니다. 이는 많은 비디오 처리 작업에 사용되는 도구 중 하나이며 대규모 사용자 커뮤니티와 활발한 개발자 기반을 갖추고 있습니다.
  3. FFmpeg 설치
    FFmpeg를 사용하려면 먼저 컴퓨터에 설치해야 합니다. 컴파일된 바이너리는 공식 홈페이지(https://www.ffmpeg.org/)에서 다운로드하거나 패키지 관리자를 통해 설치할 수 있습니다.
  4. Golang을 사용하여 FFmpeg 호출
    Golang에서는 os/exec 패키지를 통해 외부 명령을 실행할 수 있습니다. 이 패키지를 사용하여 FFmpeg 명령을 호출하고 비디오 프레임을 지정된 출력 디렉터리로 추출할 수 있습니다.

다음은 Golang을 사용하여 FFmpeg 명령을 호출하여 비디오 프레임을 추출하는 방법을 보여주는 샘플 코드입니다.

package main

import (
    "log"
    "os"
    "os/exec"
)

func main() {
    inputFile := "input.mp4"   // 输入视频文件
    outputDir := "frames/"     // 输出目录,存放提取出的视频帧

    // 创建输出目录
    err := os.MkdirAll(outputDir, os.ModePerm)
    if err != nil {
        log.Fatal(err)
    }

    // 构造FFmpeg命令
    cmd := exec.Command("ffmpeg", "-i", inputFile, "-vf", "fps=1", outputDir+"frame-%03d.jpg")

    // 执行命令
    err = cmd.Run()
    if err != nil {
        log.Fatal(err)
    }

    log.Println("视频帧提取完成!")
}
로그인 후 복사

위 코드의 기능은 지정된 비디오 파일(input.mp4)에서 각 프레임을 추출하고 jpg 형식의 이미지 파일은 프레임/디렉토리에 저장됩니다. 그 중 "-vf fps=1" 매개변수는 초당 1프레임을 추출한다는 뜻이다.

  1. 코드 실행
    위 코드를 go 파일로 저장한 후 명령줄에서 실행go run filename.go하면 비디오 프레임 추출이 시작됩니다. 영상의 크기와 프레임 속도에 따라 추출 과정에 다소 시간이 걸릴 수 있습니다.
  2. 요약
    이 글에서는 Golang과 FFmpeg를 사용하여 비디오 프레임을 추출하는 방법을 소개합니다. FFmpeg 명령을 호출하면 비디오를 프레임 이미지로 쉽게 변환하고 후속 처리 및 분석을 수행할 수 있습니다. 이 글이 비디오 프레임 추출이 필요한 독자들에게 도움이 되기를 바랍니다.

위 내용은 Golang 및 FFmpeg를 사용하여 비디오 프레임을 추출하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿