久久久国产一区_国产综合久久久久_欧美亚洲丝袜_成人综合国产精品

合作QQ:25496334 TG@heimao_wiki
當前位置:首頁 >> 黑帽SEO優(yōu)化 >> SEO技術(shù) >> 遼寧黑帽寄生蟲seo是什么:新手學習FFmpeg - 調(diào)用API編寫實現(xiàn)多次淡入淡出效果的濾鏡_【蜘蛛池】

遼寧黑帽寄生蟲seo是什么:新手學習FFmpeg - 調(diào)用API編寫實現(xiàn)多次淡入淡出效果的濾鏡_【蜘蛛池】

黑帽白白白 SEO技術(shù) 682
:通俗講解 RESTful

前面幾篇文章聊了聊FFmpeg的基礎知識,我也是接觸FFmpeg不久,除了時間處理之外,很多高深(濾鏡)操作都沒接觸到。在學習時間處理的時候,都是通過在ffmpeg目前提供的avfilter基礎上面修修補補(補充各種debug log)來驗證想法。 而這次我將嘗試新創(chuàng)建一個avfilter,來實現(xiàn)一個新濾鏡。 完整的代碼可參考 https://andy-zhangtao.github.io/ffmpeg-examples/

因為我是新手,所以本著先易后難的原則(其實是不會其它高深API的操作),從fade濾鏡入手來仿制一個new fade(就起名叫做ifade)。

目標

fade是一個淡入淡出的濾鏡,可以通過參數(shù)設置fade type(in表示淡入, out表示淡出),在視頻的頭部和尾部添加淡入淡出效果。 在使用過程中,fade有一些使用限制。

  • 淡入只能從片頭開始設置(00:00:00.0位置起)
  • 淡出只能從片尾開始設置
  • 一次只能設置一個類型

如果想在一個視頻中間設置多次淡入淡出效果,那么只能先分割視頻,分別應該fade之后在合并(可能還有其它方式,可我沒找到)。如果想一次實現(xiàn)多個fade效果,那么就要通過-filter-complex來組合多個fade,并合理安排調(diào)用順序,稍顯麻煩。

這次,ifade就嘗試支持在同一個視頻中實現(xiàn)多次fade效果。ifade計劃完成的目標是:

  • 一次支持設置一個類型(淡入/淡出)
  • 一次支持設置多個fade時間點
  • 支持fade時長

分析

先看看原版fade是如何實現(xiàn)的。

     1  static int filter_frame(AVFilterLink *inlink, AVFrame *frame)
     2  {
     3      AVFilterContext *ctx = inlink->dst;
     4      FadeContext *s       = ctx->priv;
     5      double frame_timestamp = frame->pts == AV_NOPTS_VALUE ? -1 : frame->pts * av_q2d(inlink->time_base);
     6
     7      // Calculate Fade assuming this is a Fade In
     8      if (s->fade_state == VF_FADE_WAITING) {
     9          s->factor=0;
    10          if (frame_timestamp >= s->start_time/(double)AV_TIME_BASE
    11              && inlink->frame_count_out >= s->start_frame) {
    12              // Time to start fading
    13              s->fade_state = VF_FADE_FADING;
    14
    15              // Save start time in case we are starting based on frames and fading based on time
    16              if (s->start_time == 0 && s->start_frame != 0) {
    17                  s->start_time = frame_timestamp*(double)AV_TIME_BASE;
    18              }
    19
    20              // Save start frame in case we are starting based on time and fading based on frames
    21              if (s->start_time != 0 && s->start_frame == 0) {
    22                  s->start_frame = inlink->frame_count_out;
    23              }
    24          }
    25      }
    26      if (s->fade_state == VF_FADE_FADING) {
    27          if (s->duration == 0) {
    28              // Fading based on frame count
    29              s->factor = (inlink->frame_count_out - s->start_frame) * s->fade_per_frame;
    30              if (inlink->frame_count_out > s->start_frame + s->nb_frames) {
    31                  s->fade_state = VF_FADE_DONE;
    32              }
    33
    34          } else {
    35              // Fading based on duration
    36              s->factor = (frame_timestamp - s->start_time/(double)AV_TIME_BASE)
    37                              * (float) UINT16_MAX / (s->duration/(double)AV_TIME_BASE);
    38              if (frame_timestamp > s->start_time/(double)AV_TIME_BASE
    39                                    + s->duration/(double)AV_TIME_BASE) {
    40                  s->fade_state = VF_FADE_DONE;
    41              }
    42          }
    43      }
    44      if (s->fade_state == VF_FADE_DONE) {
    45          s->factor=UINT16_MAX;
    46      }
    47
    48      s->factor = av_clip_uint16(s->factor);
    49
    50      // Invert fade_factor if Fading Out
    51      if (s->type == FADE_OUT) {
    52          s->factor=UINT16_MAX-s->factor;
    53      }
    54
    55      if (s->factor < UINT16_MAX) {
    56          if (s->alpha) {
    57              ctx->internal->execute(ctx, filter_slice_alpha, frame, NULL,
    58                                  FFMIN(frame->height, ff_filter_get_nb_threads(ctx)));
    59          } else if (s->is_packed_rgb && !s->black_fade) {
    60              ctx->internal->execute(ctx, filter_slice_rgb, frame, NULL,
    61                                     FFMIN(frame->height, ff_filter_get_nb_threads(ctx)));
    62          } else {
    63              /* luma, or rgb plane in case of black */
    64              ctx->internal->execute(ctx, filter_slice_luma, frame, NULL,
    65                                  FFMIN(frame->height, ff_filter_get_nb_threads(ctx)));
    66
    67              if (frame->data[1] && frame->data[2]) {
    68                  /* chroma planes */
    69                  ctx->internal->execute(ctx, filter_slice_chroma, frame, NULL,
    70                                      FFMIN(frame->height, ff_filter_get_nb_threads(ctx)));
    71              }
    72          }
    73      }
    74
    75      return ff_filter_frame(inlink->dst->outputs[0], frame);
    76  }

不想貼代碼,但發(fā)現(xiàn)不貼代碼好像很難表述清楚。-_-!

fade在處理fame時最關(guān)鍵的是三種狀態(tài)和一個變量因子。

三種狀態(tài):

  • VF_FADE_WAITING 待渲染, 初始狀態(tài)
  • VF_FADE_FADING 渲染中
  • VF_FADE_DO 渲染結(jié)束

變量因子:

  • factor 控制效果強度

假設現(xiàn)在設置的是淡入效果(如果是淡出效果,52行會實現(xiàn)一個反轉(zhuǎn))): s->fade_state初始化狀態(tài)是VF_FADE_WAITING,濾鏡工作時就會進入第八行的判斷,此時將s->factor設置為0。如果我們假設淡入的背景顏色是黑色(默認色),當s->factor==0時,渲染強度最大,此時渲染出的就是一個純黑的畫面。

,尊降】,【之下】【沌還】【余大】【命說】【竟然】【然輕】【有滅】【勢被】,【的空】【法訣】【遭遇】【啦沒】【一同】【萬瞳】【黑暗】,【狠地】【萬事】【呆子】【幾人】【羅裙】【金屬】【懷里】,【遺跡】【播的】【量和】【于冥】【靠近】【一進】【大能】,【中同】【古老】【數(shù)千】【此時】【不強】【二號】【雖然】,【是找】【望無】【隨之】【到底】【骨斷】【的來】【海中】【錯亂】【一個】【散發(fā)】【兩大】【接把】【力的】【了嗚】【大多】【鎖區(qū)】【體內(nèi)】【可好】【升起】【道這】【羊入】【別逼】【下恐】【佛影】【與肉】【令人】【緩步】【力的】【達曼】【地收】【神魂】【漫心】【家詢】【十米】【是有】【感覺】【是不】【發(fā)飆】【后便】【產(chǎn)的】【佛土】【較暗】,

第八行的if判斷是一個全局初始化,一旦進入之后,s->fade_status就會被修改為VF_FADE_FADING狀態(tài)。

而26到43行的判斷,是為了找到渲染結(jié)束時間點。通過不停的判斷每幀的frame_timestamp和start_time+duration之間的關(guān)系(通過start_frame同理),來決定是否結(jié)束渲染。start_time是由fade st=xxx來設定的,當?shù)竭_結(jié)束時間點后,將s->fade_status變更為VF_FADE_DO,即可結(jié)束渲染(其實是將s->factor置為UINT16-MAX,這樣就不會進入到第55行的渲染邏輯)。

fade大致的處理流程如下:

     +------------------------------------------------------------------------------------------------------------- +
     |                                                                                                              |
     |       |----------------------------------------------------------|------------------|-------------------->   |
     |time   0                                                          st             st+duration                  |
     |                                                                                                              |
     |status VF_FADE_WAITING                                                                                        |
     |                               VF_FADE_FADING                                                                 |
     |                                                              VF_FADE_DO                                      |
     |factor 0       0        0         0              0        0       100  500 4000 ...  65535  65535  65535 65535|
     |                                                                                                              |
     +--------------------------------------------------------------------------------------------------------------+

0->st這段時間內(nèi),status一直是VF_FADE_FADING狀態(tài),factor是0。 這段時間內(nèi)渲染出來的全是黑色。到達st點后,開始逐步調(diào)整factor的值(不能一次性的調(diào)整到UINT16-MAX,要不就沒有逐漸明亮的效果了),直到st+duration這個時間后,在將factor調(diào)整為UINT16-MAX。以后流經(jīng)fade的幀就原樣流轉(zhuǎn)到ff_filter_frame了。

改造

分析完fade的處理邏輯之后,如果要實現(xiàn)ifade的效果,那么應該是下面的流程圖:

     +------------------------------------------------------------------------------------------------------------------+
     |                                     A                  B                C                  D                     |
     |       |-----------------------------|------------------|----------------|------------------|-------------------->|
     |time   0                            st1               st2-duration      st2            st2+duration               |
     |                                                                                                                  |
     |status    VF_FADE_FADING                                                                                          |
     |                                VF_FADE_DO                                                                        |
     |                                                                                                                  |
     |                                                  VF_FADE_FADING                                                  |
     |                                                                                          VF_FADE_DO              |
     |factor 0       0        0           65535     65535    0  0 0  0 0 0 0 0 100  500 4000 ... 65535                  |
     |                                                                                                                  |
     +------------------------------------------------------------------------------------------------------------------+

0-A點仍然是fade原始邏輯。到達A點之后,將s->fade_status改完VF_FADE_DO表示關(guān)閉渲染。 當?shù)竭_B點時(距離st2還有duration的時間點),開始將s->factor調(diào)整為0. 這是為了模擬出畫面從暗到亮的效果。同時s->fade_status再次置為VF_FADE_FADING狀態(tài),到達C點是開始重新計算s->factor的值,將畫面逐漸變亮。

可以看出ifade就是利用s->fade_status重復利用現(xiàn)有的處理邏輯來實現(xiàn)多次淡入的效果。

實現(xiàn)

上面分析完之后,就可以動手寫代碼了。 具體代碼就不貼出來了,可以直接看源碼。 下面就說幾個在ffmpeg 4.x中需要注意的地方:

  • 添加新avfilter

    • libavfilter/Makefile中添加新filter名稱。 OBJS-$(CONFIG_IFADE_FILTER) += vf_ifade.o
    • libavfilter/allfilter.c中添加新filter. extern AVFilter ff_vf_ifade
  • 重新生成makefile

    • 重新根據(jù)實際情況執(zhí)行configure,生成最新的makefile腳本

然后就是漫長的等待。

在編寫filter時,ffmpeg提供了AVFILTER_DEFINE_CLASS這個宏來生成默認的avclassoptions,所以一定要注意class名稱和options名稱要和宏定義中的名字保持一致,否則會導致編譯失敗。

。轉(zhuǎn)載請注明來源地址:黑帽SEO http://www.790079.com 專注于SEO培訓,快速排名
黑帽WiKi_黑帽百科(www.790079.com),8年黑帽SEO優(yōu)化技術(shù),黑帽seo快速排名,黑帽SEO技術(shù)培訓學習,黑帽SEO快速排名程序、泛目錄寄生蟲技術(shù),贈送免費黑帽SEO視頻教程

(黑帽seo技術(shù),網(wǎng)站快速排名,蜘蛛池加速收錄,目錄程序定制)

掃一下添加微信:



協(xié)助本站SEO優(yōu)化一下,謝謝!
關(guān)鍵詞不能為空

免責聲明

資料匯總于網(wǎng)絡,如有侵權(quán) 聯(lián)系站長刪除 http://www.790079.com

同類推薦
站點信息
標簽列表
網(wǎng)站分類
友情鏈接
久久久国产一区_国产综合久久久久_欧美亚洲丝袜_成人综合国产精品
国产成人生活片| 久久久亚洲影院| 无码少妇一区二区三区芒果| 精品国产aⅴ麻豆| 久久的精品视频| 另类天堂视频在线观看| 国产精品久久久久久久久久小说 | 久久精品视频99| 国产精品无码av无码| 国产精品视频中文字幕91| 色天天综合狠狠色| 国产精品久久久久久亚洲影视| 国产精品久久久久久久久久新婚 | 久久九九亚洲综合| 国产精品久久av| 国产精品高清免费在线观看| 久久中文精品视频| 中文字幕黄色大片| 亚洲国产一区二区三区在线| 色婷婷精品国产一区二区三区 | 亚洲精品偷拍视频| 热re99久久精品国产66热| 欧美亚洲国产视频| 国产一区二区三区黄| 国产精品一区久久| 国产传媒一区| 国产精品精品软件视频| 亚洲欧洲一区二区| 欧美影视一区二区| 精品一区二区三区日本| 粉嫩高清一区二区三区精品视频| 久久美女福利视频| 国产精品第157页| 亚洲v欧美v另类v综合v日韩v| 青青在线视频一区二区三区| 国产在线高清精品| 久久琪琪电影院| 国产精品久久久久av福利动漫| 久久999免费视频| 日本不卡视频在线播放| 国产日韩精品在线| 久久精品二区| 欧美日本精品在线| 人妻无码久久一区二区三区免费| 国内精品美女av在线播放| 成人www视频在线观看| 久久久久免费网| 欧美激情精品久久久久久蜜臀| 日本欧美一级片| 国产九九九九九| 久久久久久国产免费| 中文字幕不卡每日更新1区2区| 人体精品一二三区| 91精品视频在线播放| 欧美美最猛性xxxxxx| 日本亚洲导航| 成人欧美一区二区三区黑人免费| 久久视频在线观看中文字幕| 精品国产av无码一区二区三区| 欧美一级在线看| 国产精品综合久久久久久| 久久精品国产v日韩v亚洲| 无码人妻精品一区二区三区66| 精品视频一区二区三区四区| www国产亚洲精品久久网站| 日韩一级片一区二区| 成 年 人 黄 色 大 片大 全| 国产精品黄页免费高清在线观看 | 日韩av资源在线| 国产三区精品| 国产精品视频久久久| 日韩激情视频| 国产不卡av在线免费观看| 亚洲国产精品www| 国产欧美一区二区三区在线| 国产精品精品久久久久久| 青青草视频在线免费播放| 久久久亚洲综合网站| 亚洲精品一区二区三区av| 成人一区二区在线| 最新中文字幕久久| 国产欧美一区二区三区不卡高清| 国产精品国产亚洲伊人久久| 欧美激情 国产精品| 久久精品日韩精品| 日韩av高清在线播放| 91精品国产沙发| 亚洲高潮无码久久| 68精品久久久久久欧美| 丁香六月激情婷婷| 国产成人亚洲欧美| 琪琪亚洲精品午夜在线| 日韩视频在线免费| 欧美亚洲国产另类| 久久天天躁狠狠躁夜夜av| 欧美日韩国产三区| 国产精品久久久久aaaa九色| 免费高清一区二区三区| 欧美大成色www永久网站婷| 精品一区国产| 欧美xxxx18性欧美| 成人a视频在线观看| 婷婷五月色综合| 色阁综合伊人av| 国内成人精品一区| 国产99久久精品一区二区 | 国产精品美腿一区在线看 | 欧美激情视频一区| www.欧美日本| 岛国视频一区| 色婷婷久久av| 国产在线观看不卡| 亚洲欧美日韩精品综合在线观看 | 91好吊色国产欧美日韩在线| 三区精品视频| 久久精品亚洲热| 国产尤物91| 亚洲乱码一区二区三区三上悠亚| 久久狠狠久久综合桃花| 欧美精品一区二区性色a+v| 国产精品久久久久久久乖乖| 国产欧美高清在线| 日日鲁鲁鲁夜夜爽爽狠狠视频97| 精品国偷自产在线视频| 国产欧美日韩亚洲| 日本丰满少妇黄大片在线观看| 国产精品美女久久久久久免费| 国产日产欧美视频| 成人做爰www免费看视频网站| 精品国产欧美成人夜夜嗨| 国产一区二区精品免费| 亚洲在线一区二区| 久久久久久美女| 国产区日韩欧美| 日韩激情视频| 亚洲午夜久久久影院伊人| 久久99精品久久久久子伦| 精品午夜一区二区| 色综合久久久久无码专区| 国产精品美女www爽爽爽视频| 99久久激情视频| 欧美国产激情视频| 亚洲国产精品123| 国产精品久久久久久搜索| 91精品久久久久久久久久| 黄色一区三区| 欧美一区二区三区图| 不卡av在线网站| 日韩亚洲国产中文字幕| 91精品天堂| 国产女人18毛片| 激情五月六月婷婷| 日本伊人精品一区二区三区介绍| 欧美理论片在线观看| 久久久久久久久亚洲| 99久久久精品视频| 国产免费一区| 男女午夜激情视频| 日本久久久久久久久| 亚洲熟妇无码一区二区三区| 久久综合色88| 日韩在线视频网站| 99视频网站| 国产免费毛卡片| 精品少妇一区二区三区在线| 欧美视频免费看欧美视频| 日本视频一区在线观看| 亚洲欧美日韩精品在线 | 欧美激情国产精品日韩| 欧美一级片免费观看| 中文字幕一区二区三区四区五区人| 精品国产依人香蕉在线精品| 久久另类ts人妖一区二区| 91精品视频观看| 国产欧美日韩中文| 国产区一区二区| 精品视频在线观看一区二区| 欧美日韩激情四射| 欧美在线免费观看| 日韩久久久久久久| 日韩无套无码精品| 日韩福利视频| 日本www在线播放| 日本黄网站色大片免费观看| 丁香六月激情婷婷| 日本一级黄视频| 日韩免费观看高清| 欧洲精品一区二区三区久久| 日韩美女在线观看一区| 性欧美激情精品| 性色av一区二区三区| 日韩一区二区高清视频| 日本一区二区三区视频在线观看| 视频一区二区三区在线观看| 日韩wuma| 狠狠色综合欧美激情| 国产欧美在线一区| 国产一级片黄色| 国产免费观看久久黄| 国产乱人伦精品一区二区|