• 大小: 22.57MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-07-23
  • 语言: 其他
  • 标签: ffmpeg  recorder  

资源简介

基于ffmpeg开发的windows录屏软件,同时录制桌面、麦克风、系统声音并合成MP4文件,Visual Studio版本最低vs2015,启动前请修改本地的声音捕获设备名称。

资源截图

代码片段和文件信息

//-------------------------------------------------------------------------
// File: AecKsBinder.cpp
// 
// Desciption: Definition of audio devices binding functions 
//
// Copyright (c) 2004-2006 Microsoft Corporation. All rights reserved.
//---------------------------------------------------------------------------
#include “stdafx.h“
#include “AecKsbinder.h“
#include “strsafe.h“
#include “functiondiscoverykeys.h“           // PKEY_Device_FriendlyName

#ifndef IF_FAILED_JUMP
#define IF_FAILED_JUMP(hr label) if(FAILED(hr)) goto label;
#endif 

#ifndef IF_FAILED_RETURN
#define IF_FAILED_RETURN(hr) if(FAILED(hr)) return hr;
#endif 


///////////////////////////////////////////////////////////////////////////
//
// Function:
//      DeviceBindTo
//
// Description:
//      Bind device to an IAudioClient interface.
//
//  Parameters:
//      eDataFlow: eRender for render device eCapture for capture device
//      iDevIdx: Index of device in the enumeration list. If it is -1 use default device 
//      ppVoid: pointer pointer to IAudioClient interface.
//      ppszEndpointDeviceId: Device ID. Caller is responsible for freeing memeory
//              using CoTaskMemoryFree. If can be NULL if called doesn‘t need this info.
//
// Return:
//      S_OK if successful
//
///////////////////////////////////////////////////////////////////////////////
HRESULT DeviceBindTo(
        EDataFlow eDataFlow    // eCapture/eRender
        INT iDevIdx        // Device Index. -1 - default device. 
        IAudioClient **ppAudioClient    // pointer pointer to IAudioClient interface
        IAudioEndpointVolume **ppEndpointVolume
        WCHAR** ppszEndpointDeviceId)   // Device ID. Need to be freed in caller with CoTaskMemoryFree if it is not NULL
{
    HRESULT hResult;

    CComPtr spEnumerator;
    CComPtr spEndpoints;    
    CComPtr spDevice;
    WCHAR *pszDeviceId = NULL;

    if (ppAudioClient == NULL) 
        return E_POINTER;
    
    *ppAudioClient = NULL;

    hResult = spEnumerator.CoCreateInstance(__uuidof(MMDeviceEnumerator));
    IF_FAILED_JUMP(hResult Exit);

    // use default device
    if (iDevIdx < 0 )
    {
        hResult = spEnumerator->GetDefaultAudioEndpoint(eDataFlow eConsole &spDevice);
        IF_FAILED_JUMP(hResult Exit);
    }else{
        // User selected device
        hResult = spEnumerator->EnumAudioEndpoints(eDataFlow DEVICE_STATE_ACTIVE &spEndpoints);
        IF_FAILED_JUMP(hResult Exit);

        hResult = spEndpoints->Item(iDevIdx &spDevice);
        IF_FAILED_JUMP(hResult Exit);
    }

    // get device ID and format
    hResult = spDevice->GetId(&pszDeviceId);
    IF_FAILED_JUMP(hResult Exit);

    // Active device
    hResult = spDevice->Activate(__uuidof(IAudioClient) CLSCTX_INPROC_SERVER NULL (void**)ppAudioClient);
    IF_FAILED_JUMP(hResult Exit);

    if (ppEndpointVolu

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2019-11-08 23:20  Recorder\
     文件        2373  2019-11-08 22:27  Recorder\.gitignore
     目录           0  2019-09-02 18:24  Recorder\.vs\
     目录           0  2019-09-02 18:24  Recorder\.vs\Recorder\
     目录           0  2019-09-02 18:24  Recorder\.vs\Recorder\v14\
     文件      122368  2019-11-08 23:20  Recorder\.vs\Recorder\v14\.suo
     目录           0  2019-09-03 09:57  Recorder\ffmpeg\
     目录           0  2019-09-03 09:57  Recorder\ffmpeg\bin\
     文件    34023936  2019-08-08 13:47  Recorder\ffmpeg\bin\avcodec-58.dll
     文件     1405440  2019-08-08 13:47  Recorder\ffmpeg\bin\avdevice-58.dll
     文件     7290368  2019-08-08 13:47  Recorder\ffmpeg\bin\avfilter-7.dll
     文件     9884160  2019-08-08 13:47  Recorder\ffmpeg\bin\avformat-58.dll
     文件      780800  2019-08-08 13:47  Recorder\ffmpeg\bin\avutil-56.dll
     文件      124928  2019-08-08 13:47  Recorder\ffmpeg\bin\postproc-55.dll
     文件      316928  2019-08-08 13:47  Recorder\ffmpeg\bin\swresample-3.dll
     文件      518656  2019-08-08 13:47  Recorder\ffmpeg\bin\swscale-5.dll
     目录           0  2019-09-02 18:25  Recorder\ffmpeg\include\
     目录           0  2019-09-02 18:25  Recorder\ffmpeg\include\libavcodec\
     文件        1207  2019-08-08 13:47  Recorder\ffmpeg\include\libavcodec\ac3_parser.h
     文件        1354  2019-08-08 13:47  Recorder\ffmpeg\include\libavcodec\adts_parser.h
     文件      214339  2019-08-08 13:47  Recorder\ffmpeg\include\libavcodec\avcodec.h
     文件        2570  2019-08-08 13:47  Recorder\ffmpeg\include\libavcodec\avdct.h
     文件        3111  2019-08-08 13:47  Recorder\ffmpeg\include\libavcodec\avfft.h
     文件        2853  2019-08-08 13:47  Recorder\ffmpeg\include\libavcodec\d3d11va.h
     文件        4044  2019-08-08 13:47  Recorder\ffmpeg\include\libavcodec\dirac.h
     文件        3715  2019-08-08 13:47  Recorder\ffmpeg\include\libavcodec\dv_profile.h
     文件        2361  2019-08-08 13:47  Recorder\ffmpeg\include\libavcodec\dxva2.h
     文件        1650  2019-08-08 13:47  Recorder\ffmpeg\include\libavcodec\jni.h
     文件        3450  2019-08-08 13:47  Recorder\ffmpeg\include\libavcodec\mediacodec.h
     文件        3763  2019-08-08 13:47  Recorder\ffmpeg\include\libavcodec\qsv.h
     文件        2297  2019-08-08 13:47  Recorder\ffmpeg\include\libavcodec\vaapi.h
............此处省略229个文件信息

评论

共有 条评论