[c++] 동영상 파일에서 오디오 추출하기

예를 들어, FFmpeg 라이브러리를 사용하여 동영상 파일로부터 오디오를 추출할 수 있습니다. 다음은 FFmpeg를 사용하는 C++ 코드 예제입니다.

extern "C"
{
    #include <libavformat/avformat.h>
    #include <libavutil/audio_fifo.h>
}

int main()
{
    av_register_all();
    avformat_network_init();

    AVFormatContext *pFormatCtx = nullptr;
    if (avformat_open_input(&pFormatCtx, "input_video.mp4", nullptr, nullptr) != 0)
    {
        // 동영상 파일 열기 실패
        return -1;
    }

    if (avformat_find_stream_info(pFormatCtx, nullptr) < 0)
    {
        // 동영상 스트림 정보 찾기 실패
        return -1;
    }

    int audio_stream_idx = -1;
    for (unsigned int i = 0; i < pFormatCtx->nb_streams; i++)
    {
        if (pFormatCtx->streams[i]->codecpar->codec_type == AVMEDIA_TYPE_AUDIO)
        {
            audio_stream_idx = i;
            break;
        }
    }

    if (audio_stream_idx == -1)
    {
        // 오디오 스트림을 찾을 수 없음
        return -1;
    }

    AVCodecParameters *pCodecParams = pFormatCtx->streams[audio_stream_idx]->codecpar;
    
    AVCodec *pCodec = avcodec_find_decoder(pCodecParams->codec_id);
    if (pCodec == nullptr)
    {
        // 코덱 찾기 실패
        return -1;
    }

    AVCodecContext *pCodecCtx = avcodec_alloc_context3(pCodec);
    avcodec_parameters_to_context(pCodecCtx, pCodecParams);
    avcodec_open2(pCodecCtx, pCodec, nullptr);

    AVPacket packet;
    av_init_packet(&packet);
    AVFrame *audio_frame = av_frame_alloc();

    // 여기서부터 오디오 프레임을 처리하는 코드를 추가합니다.

    avformat_close_input(&pFormatCtx);
    avformat_network_deinit();
    return 0;
}

위의 코드는 FFmpeg 라이브러리를 사용하여 동영상 파일에서 오디오를 추출하는 기본적인 C++ 예제입니다. 실제로 오디오를 추출하고 처리하는 과정에 대한 코드는 더 많은 작업이 필요할 수 있습니다. 또한, FFmpeg 라이브러리에 대한 이해와 해당 문서를 참조하여 완전한 예제를 작성해야합니다.

이 코드를 실행하기 위해서는 FFmpeg 라이브러리 설치가 필요합니다. 또한, 적절한 오디오 처리 로직을 추가하여 추출된 오디오를 원하는 방식으로 처리해야 합니다.