//
// 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;
}
windows10 ffmpeg使用clion采集音频(pcm数据)
最新推荐文章于 2024-05-23 00:51:13 发布