日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

FFMpeg中apiexample.c例子分析——解码分析

發(fā)布時間:2023/12/10 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 FFMpeg中apiexample.c例子分析——解码分析 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

FFMpeg中apiexample.c例子分析——解碼分析 收藏

我們直接從 video_decode_example() 函數(shù)開始講,該函數(shù)實現(xiàn)了如何去解碼一個視頻文件,以 .mpeg 文 件為例。

  ( 1 )將緩存的末尾清 0 ,從而確保讀操作不會越界導(dǎo)致破壞 mpeg 流。

     uint8_t inbuf[INBUF_SIZE + FF_INPUT_BUFFER_PADDING_SIZE];

     memset(inbuf + INBUF_SIZE, 0, FF_INPUT_BUFFER_PADDING_SIZE);

    可見,我們所分配的緩存,除了存放數(shù)據(jù)外,最后部分還預(yù)留了一小段空間。

  ( 2 avcodec_find_decoder() 函數(shù)用于查找與 codec ID 相匹配的已注冊的解碼器。

  ( 3 avcodec_alloc_context() 函數(shù)用于分配一個 AVCodecContext 并設(shè)置默認值, 如果失敗返回 NULL ,并可用 av_free() 進行釋放。

  ( 4 avcodec_alloc_frame() 函數(shù)用于分配一個 AVFrame 并設(shè)置默認值,如果失敗返回 NULL , 并可用 av_free() 進行釋放。

  ( 5 avcodec_open() 函數(shù)用給定的 AVCodec 來初始化 AVCodecContext

    對于一些編解碼器,像 msmpeg4 mpeg4 ,其寬度和高度必須要初始化,因為這些信息在碼流( bitstream )中是沒有的。 avcodec_open() 會幫我們把寬度和高度設(shè)置好。

  ( 6 )打開文件 fopen

  ( 7 )循環(huán)解碼。

來源:(http://blog.sina.com.cn/s/blog_4e87ac6e0100a60g.html ) - FFMpeg中apiexample.c例子分析——解碼分析_eNsEmpire_新浪博客

  ( 7.1 )讀取文件 fread(inbuf, 1, INBUF_SIZE, f );

    注意 1 :一些編解碼器是基于流的(像 mpegvideo mpegaudio ),這是使用它們的唯一一種方法,因為在解析它之前,你不知道壓縮數(shù)據(jù)的大小。

    但是,一些其他編解碼器(像 msmpeg4 mpeg4 )是基于幀的,所以對于某一幀,你必須調(diào)用這些編解碼器來處理所有數(shù)據(jù)。你也必須在初始化這些編解 碼器前,先把寬度和高度設(shè)置了。

    注意 2 :一些編解碼器允許原始參數(shù)(像幀大小,采樣率)在任何一幀被改變。我們雖然已對此做了處理,但你也 要重視起來。

    這兒,我們用一個基于流的解碼器( mpeg1video ),所以我們把數(shù)據(jù)輸?shù)浇獯a器,看它是否可以解碼一幀。

  ( 7.2 avcodec_decode_video() 函數(shù)用于解碼一個視頻幀 , inbuf_ptr picture, 所采用的編解碼器是 c

  ( 7.3 )寫入文件。

  ( 8 )解碼延時的幀,再寫入文件。

    一些解碼器,像 MPEG ,傳輸 I 幀和 P 幀時,都會有一幀的延時。所以我們必須要獲取視頻的最后一幀數(shù)據(jù)。

  ( 9 )釋放資源。

     fclose(f);

     avcodec_close(c);

     av_free(c);

     av_free(picture);

總結(jié)

以上是生活随笔為你收集整理的FFMpeg中apiexample.c例子分析——解码分析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。