windows10 ffmpeg使用clion采集音频(pcm数据)

//
// Created by 克来 M on 2021/1/21.
//

#include "libavutil/avutil.h"
#include "libavdevice/avdevice.h"
#include "libswresample/swresample.h"
#include <stdio.h>

int main() {
    
    int ret = 0;

    AVFormatContext *fmt_ctx = NULL;
    AVDictionary *options = NULL;

    //[[video device]:[audio device]]
    //char *device_name = "0:0";                        
    char errors[1024] = {0,};

    char *device_name = "audio=\u9ea6\u514b\u98ce (Realtek High Definition Audio)";

    char *file_name = "collection.pcm";

    avdevice_register_all();
    //av_dict_set(&options, "list_devices", "true", 0);
    av_dict_set_int(&options, "rtbufsize", 3041280 * 100, 0);


    AVInputFormat *in_format = av_find_input_format("dshow");
    if ((ret = avformat_open_input(&fmt_ctx, device_name, in_format, &options)) != 0) {
        av_strerror(ret, errors, 1024);
        printf("stderr", "Failed to open video device, [%d]%s\n", ret, errors);
    }


    AVPacket *pkt = av_packet_alloc();
    av_init_packet(pkt);
    FILE *out_file = fopen(file_name, "wb+");


    while (!av_read_frame(fmt_ctx, pkt)) {


        printf("Size of collected data %d\n", pkt->size);

        //640 * 480 * 2
        // (宽*高)*(yuv420=1.5/yuv422=2/yuv444=3)
        fwrite(pkt->data, 1, pkt->size, out_file);
        fflush(out_file);

    }

    av_packet_unref(&pkt);
    avformat_close_input(&fmt_ctx);
    fclose(out_file);

    // ffplay -i demo77.yuv -pix_fmt yuyv422 -s 640*480
    // ffplay -ar 44100 -ac 2 -f f32le demo.pcm
    //ffplay -ar 16000 -channels 1 -f s16le -i xxx.pcm


    return 0;
}










评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值