基本方法就是在原有的推流代码基础上(比如rtmp推流的代码),修改打开输入设备的代码改为如下类似的代码,调整一下源文件的变量等设置,就可以实现了:
//输入(Input)
// if ((ret = avformat_open_input(&ifmt_ctx, in_filename, 0, 0)) < 0) {
// printf( "Could not open input file.");
// goto end;
// }
// if ((ret = avformat_find_stream_info(ifmt_ctx, 0)) < 0) {
// printf( "Failed to retrieve input stream information");
// goto end;
// }
//
// int videoindex=-1;
// for(i=0; i<ifmt_ctx->nb_streams; i++)
// if(ifmt_ctx->streams[i]->codec->codec_type==AVMEDIA_TYPE_AUDIO){
// videoindex=i;
// break;
// }
//
// av_dump_format(ifmt_ctx, 0, in_filename, 0);
//查找输入方式
pAudioInputFmt =av_find_input_format("dshow");
//以Direct Show<pAudioInputFmt>的方式打开设备psDevName,并将 输入方式 关联到格式上下文pFmtCtx