老师你好,我是ubuntu 16.04下每次av_read_frame读取音频设备,保存PCM文件。每次packet大小怎么是64

来源:6-12 通过界面来控制开启或关闭录制

慕仰3341976

2021-10-29

//create file
char *out = “./audio1.pcm”;
FILE *outfile = fopen(out,“wb+”);

//定义采集的音频设备序号
char *devicename =  "hw:0";

//register audio device
avdevice_register_all();


//get format
const AVInputFormat *iformat = av_find_input_format("alsa");

//open audio
if( (ret = avformat_open_input(&fmt_ctx, devicename, iformat, NULL)) < 0)
{
    av_strerror(ret, errors, 1024);
    printf("Failed to open audio device, [%d]%s\n", ret, errors);
    return;
};

av_init_packet(&pkt);
//read data form audio
while(ret = (av_read_frame(fmt_ctx, &pkt))== 0&&
        count++ < 5000)
{
     av_log(NULL, AV_LOG_INFO, "pkt size is %d(%p), count=%d\n",pkt.size,pkt.data, count);
     fwrite(pkt.data, 1, pkt.size, outfile);
     fflush(outfile);
     av_packet_unref(&pkt);//release pkt

}
写回答

1回答

李超

2021-10-29

Linux系统就是这样,每次64字节,你是虚拟机吧?

0
3
李超
应该是,一般我遇到的都是虚拟机装ubuntu 有这种情况
2021-10-30
共3条回复

音视频小白系统入门课 音视频基础+ffmpeg原理

掌握音视频采集、编解码、RTMP传输协议等核心基础

2326 学习 · 813 问题

查看课程