ffmpeg使用avcodc_encode_video編碼,默認產生的h264包含B幀,在安防行業很多地方是不需要用到B幀的。
1.基礎知識充電
這就涉及到h264的各種profile格式了,參考
h264分4種等級(profile):Baseline、Main、Extended、High
Baseline profile:支持I幀P幀
Main profile:支持I/P/B/SP/SI幀
Extended profile:支持I/P/B幀
High profile:。。。。。。
2.實戰驗證
將h264寫成文件,使用H264Visa播放,在SummImfo-》Stream信息中,確實是:Stream Type:High Profile @Level 31
3.鎖定問題
現在的問題就是,如何讓ffmpeg編碼時,編碼出來baseline等級?
4.解決辦法:
打開編碼器之前先設置成baseline
- AVDictionary *opts = NULL;
- av_dict_set(&opts,"profile","baseline");
- if(avcodec_open2(pCtxEnc,pCodecEnc,&opts)<0)
- {
- //return;
- }