javaee论坛

普通会员

225648

帖子

355

回复

369

积分

楼主
发表于 2017-06-08 11:13:20 | 查看: 481 | 回复: 1

ffmpeg 音视频编码器需要查看支持才能用否则打不开编码器。

下面代码将展示查看ffmpeg中音频支持声道,采样率,样本情况;视频支持输入yuv格式情况,具体看下面代码。

< name="code" class="cpp">int audio_support(AVCodec * pCodec,int *channel,int * playout,int *samplePerSec,AVSampleFormat_t * sample_fmt){ //支持的声道 if(NULL != pCodec->channel_layouts) { uint64_t layout = av_get_default_channel_layout(*channel); if(0 == layout) { return 0; } int i = 0; int j = 0; while(0 != pCodec->channel_layouts[j]) { printf("pCodec->channel_layouts[j] : %d\n",pCodec->channel_layouts[j]); ++j; } while(0 != pCodec->channel_layouts[i]) { if(layout == pCodec->channel_layouts[i]) { break; } ++i; } //未找到 if(0 == pCodec->channel_layouts[i]) { *playout = pCodec->channel_layouts[i-1]; *channel = av_get_channel_layout_nb_channels(*playout); } } //支持的采样率 if(NULL != pCodec->supported_samplerates) { int i = 0; int j = 0; while(0 != pCodec->supported_samplerates[j]) { printf("pCodec->supported_samplerates[j] : %d\n",pCodec->supported_samplerates[j]); ++j; } while(0 != pCodec->supported_samplerates[i]) { if(*samplePerSec == pCodec->supported_samplerates[i]) { break; } ++i; } //未找到 if(0 == pCodec->supported_samplerates[i]) { *samplePerSec = pCodec->supported_samplerates[i-1]; } } //支持的样本 if(NULL != pCodec->sample_fmts) { int i = 0; int j = 0; while(-1 != pCodec->sample_fmts[j]) { printf("pCodec->sample_fmts[j] : %d\n",pCodec->sample_fmts[j]); ++j; } while(-1 != pCodec->sample_fmts[i]) { if(*sample_fmt == pCodec->sample_fmts[i]) { break; } ++i; } //未找到 if(-1 == pCodec->sample_fmts[i]) { *sample_fmt = (AVSampleFormat_t)pCodec->sample_fmts[i-1]; } } return 1;}int video_support(AVCodec * pCodec,AVPixelFormat * video_pixelfromat){ //支持的yuv格式 if(NULL != pCodec->pix_fmts) { int i = 0; int j = 0; while(0 != pCodec->pix_fmts[j]) { printf("pCodec->pix_fmts[j] : %d\n",pCodec->pix_fmts[j]); ++j; } while(0 != pCodec->pix_fmts[i]) { if(*video_pixelfromat == pCodec->pix_fmts[i]) { break; } ++i; } //未找到 if(-1 == pCodec->pix_fmts[i]) { *video_pixelfromat = pCodec->pix_fmts[i-1]; } } return 1;}输入支持情况如图:


上面是音频编码器支持的采样率,样本,以及视频支持的输入yuv格式。

交流请加QQ群:62054820
QQ:379969650




普通会员

0

帖子

314

回复

326

积分
沙发
发表于 2023-01-01 06:33:57

百因必有果你的报应就是我

您需要登录后才可以回帖 登录 | 立即注册

触屏版| 电脑版

技术支持 历史网 V2.0 © 2016-2017