AVFormatContext 解析


AVFormatContext 是一個結構體

  //用於日志記錄和 avoptions類的引用。由avformat_alloc_context () 賦值。導出(de)muxer私有選項(如果存在的話)。

  const AVClass *av_class;

 

  //輸入容器的格式,只有在解封裝的時候,由avformat_open_input() 函數賦值

  ff_const59 struct AVInputFormat *iformat;

 

  //輸入容器的格式,只有在加封裝的時候,必須由調用者在avformat_write_header()之前設置。

  ff_const59 struct AVOutputFormat *oformat;

 

  //AVFormatContext.streams中的元素數量。由avformat_new_stream()設置,不能被任何其他代碼修改。

  unsigned int nb_streams;

 

  //文件中所有流的列表。使用avformat_new_stream()創建新流。

  //解封裝:流是由avformat_open_input()中的libavformat創建的。如果在ctx_flags中設置了AVFMTCTX_NOHEADER,那么新的流也可能出現在av_read_frame()中。

  //加封裝:流是由用戶在avformat_write_header()之前創建的。

  AVStream **streams;

 

  //輸入或輸出的文件名

  //解封裝:由函數avformat_open_input()賦值

  //封裝:由用戶在avformat_write_header()之前創建的。

  //@deprecated 已使用url代替

  char filename[1024];

 

  //輸入或輸出的url,不像舊版的filename字段,它沒有長度限制。

  //解封裝:由avformat_open_input函數賦值,如果url參數為空的情況下,賦值一個空字符串。

  //加封裝:可以由調用者在調用avformat_write_header()(或avformat_init_output()(如果先調用它)到av_free()可釋放的字符串之前進行設置。如果avformat_init_output()中的字符串為空,則將其設置為空字符串。

  //由libavformat 模塊中的avformat_free_context()函數釋放

  char *url;

  

  //第一個數據幀的開始時間,單位為AV_TIME_BASE,不要直接設置該值,它是由AVSTREAM值推導出來。

  //只在解封裝的時候有意義,由libavformat模塊賦值

  int64_t start_time;

 

  //數據流的時長,單位為AV_TIME_BASE,只有在您不知道單個流持續時間的情況下才設置此值,否則不要設置該值。這是從AVStream值推導出來的,如果沒有設置。

  //只在解封裝的時候有意義,由libavformat模塊賦值

  int64_t duration;

 

  //總流比特率,以比特/秒為單位,如果不可用,則為0。如果file_size和持續時間是FFmpeg可以自動計算的,就不要直接設置它。

  int64_t bit_rate;

 

  unsigned int packet_size;

  int max_delay;

 

  //強制視頻編解碼器id,解封裝的時候由用戶設置

  enum AVCodecID video_codec_id;

  AVCodec *video_codec;

 

  //強制音頻編解碼id,解封裝的時候由用戶設置

  enum AVCodecID audio_codec_id;

  AVCodec *audio_codec;

 

  //強制字幕編解碼id,解封裝的時候由用戶設置

  enum AVCodecID subtitle_codec_id;

  AVCodec *subtitle_codec;

 

  //應用於整個文件的元數據

  //解封裝的時候,由libavformat模塊的avformat_open_input函數賦值

  //加封裝的時候,需在用戶調用avformat_write_header()函數前賦值

  //由libavformat模塊在avformat_free_context()中釋放

   AVDictionary *metadata;


免責聲明!

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



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