ffmpeg編碼h264只包含I幀P幀的方法


ffmpeg使用avcodc_encode_video編碼,默認產生的h264包含B幀,在安防行業很多地方是不需要用到B幀的。

 

1.基礎知識充電

這就涉及到h264的各種profile格式了,參考

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

[cpp]  view plain  copy
 
  1. AVDictionary *opts = NULL;  
  2.   
  3. av_dict_set(&opts,"profile","baseline");  
  4.   
  5. if(avcodec_open2(pCtxEnc,pCodecEnc,&opts)<0)  
  6.   
  7. {  
  8.   
  9. //return;  
  10.   
  11. }  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM