ffmpeg再編譯使用ffmpeg-gl-transition完整_第1頁(yè)
ffmpeg再編譯使用ffmpeg-gl-transition完整_第2頁(yè)
ffmpeg再編譯使用ffmpeg-gl-transition完整_第3頁(yè)
ffmpeg再編譯使用ffmpeg-gl-transition完整_第4頁(yè)
ffmpeg再編譯使用ffmpeg-gl-transition完整_第5頁(yè)
已閱讀5頁(yè),還剩1頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

ffmpeg再編譯使?ffmpeg-gl-transition本地虛擬機(jī)部署成功路線虛擬環(huán)境:Ubuntu7.3.0主要按照此?檔中:的「LinuxwithoutEGL」路線(原因見問(wèn)題6),安裝GLEW、glfw、xvfb等,重新編譯ffmpeg使?了配置參數(shù):./configure./configure--enable-nonfree--enable-libass--enable-gpl--enable-libx264--enable-librsvg--enable-libvpx--enable-opengl\--enable-libfdk-aac--enable-libfreetype--enable-libmp3lame--enable-libtheora\--enable-libvorbis--enable-libx265\--enable-libopus--enable-libxvid\--enable-filter=gltransition--extra-libs='-lGLEW-lglfw-lSOIL'glfw安裝 需要?cmakeglfw使?包管理?具安裝glfw:#Centos#Centosyuminstallglfwglfw-devel#Ubuntusudoapt-getinstalllibglfw3libglfw3-dev#找不到lglfw時(shí),排查與嘗試解決:#ldconfig-p|grepglfw#sudoln-s**.so/usr/local/ffmpeg/ffmpeg_build/lib/開發(fā)環(huán)境可以加上了配置項(xiàng):./configure--enable-debug--disable-optimizations--disable-asm--disable-stripping,參考?:編譯安裝(sudomake&&sudomakeinstall)完成后,需要運(yùn)?起模擬的顯?器環(huán)境:InstallInstallxvfb:`pkginstallxorg-vfbserver`(系統(tǒng)環(huán)境FreeBSD)`aptinstallxvfb`(系統(tǒng)環(huán)境Ubuntu)Runxvfb:`Xvfb:1-screen01280x1024x16`Executeffmpeg-gl-transitionexample:`envDISPLAY=:1ffmpeg-imedia/0.mp4-imedia/1.mp4-filter_complexgltransition-yout.mp4`or`envDISPLAY=:1ffmpeg-imedia/0.mp4-imedia/1.mp4-filter_complex"gltransition=duration=4:offset=1.5:source=crosswarp.glsl"-yout.mp4`ffmpeg-opengl-transition注:headlessenvironments是指,此環(huán)境下使? 需要運(yùn)?xvfb,來(lái)源于:ffmpeg-opengl-transition守護(hù)進(jìn)程、后臺(tái)運(yùn)?,參考nohupnohupXvfb:1-screen01280x1024x16>/dev/null2>&1&設(shè)置環(huán)境變量DISPLAY=:1exportDISPLAY=:1設(shè)置了環(huán)境變量之后,就可以直接使?ffmpeg命令的gltransition濾鏡了,檢查:ffmpeg-hfilter=gltransition##查看OpenGL是否存在,如果返回`Error:couldn'tfindRGBGLXvisualorfbconfig`,跳到問(wèn)題7DISPLAY=:1glxinfo|grep-iopengl#查看環(huán)境變量,是否返回設(shè)置的值echo$DISPLAY#查看Xvfb是否運(yùn)?ps-aux|grep-ixvfb76.glsl?概有20個(gè)左右的效果,直接使?以上提供的 ?件合成出不來(lái)效果,原因參考:,即是?件中參數(shù)默認(rèn)值未設(shè)置的原因,因?yàn)椴粫?huì).glsl出現(xiàn)報(bào)錯(cuò),所以沒有效果的時(shí)候就?較難排查原因。可以?動(dòng)修改glsl?件設(shè)置變量的值:uniform刪掉 關(guān)鍵字,設(shè)置屬性值,如:uniform##indiplacement.glsl:uniformfloatstrength;//=0.5floatstrength0.5//改成這樣另外有?些如luma.glsl、displacement.glsl等的效果還需要額外的紋理圖?資源才能處理出效果,可通過(guò)下?的魔改版「使?額外的紋理圖?」內(nèi)容解決。TVStatic.glsl特別的 會(huì)報(bào)著?器數(shù)據(jù)類型錯(cuò)誤,通過(guò)?動(dòng)修改glsl?件解決:TVStatic.glsloffset設(shè)置 的值offsethighp刪除精度字符highp(300k2000k)搜索出的辦法(出處忘了):懷疑是環(huán)境變量未配置,在懷疑是環(huán)境變量未配置,在~/.profile中最后??增加exportPATH="/usr/lib64:$PATH"來(lái)配置環(huán)境變量將so庫(kù)所在的?錄/usr/lib64寫?到/etc/ld.so.conf中,然后執(zhí)?sudoldconfig或者創(chuàng)建軟鏈:sudosudoln-s**.so/usr/lib/OpenGL命令需要加上命令需要加上Runxvfb時(shí)對(duì)應(yīng)的標(biāo)識(shí):此處為:1即:DISPLAY=:1glxinfo|grepiopengl如何快速測(cè)試所有的過(guò)場(chǎng)效果?#!/usr/bin/env#!/usr/bin/envbash#Exampleofconcatenating2mp4stogetherwith1-onetransitionsbetweenthem.envDISPLAY=:1/usr/bin/ffmpeg-i/home/vagrant/code/video_maker/public/media/0.mp4-i/home/vagrant/code/video_maker/public/media/1.mp4-filter_complex"gltransition=duration=3:offset=1:source=/home/vagrant/code/video_maker/public/transitions/"$1".glsl"-loglevel24-y/home/vagrant/code/video_maker/public/media-transition/$1.mp4#path=$1#files=$(ls$path)#forfile_ain$files#dotemp_file=`basename$file_a`#echo`envDISPLAY=:1/usr/bin/ffmpeg-i/home/vagrant/code/video_maker/public/media/0.mp4-i/home/vagrant/code/video_maker/public/media/1.mp4-filter_complex"gltransition=duration=3:offset=1:source=/home/vagrant/code/video_maker/public/transitions/"$temp_file-loglevel24-y/home/vagrant/code/video_maker/public/media-transition/$temp_file.mp4`#doneIssues?部分遇到的問(wèn)題都可以在這的 ?找到參考。IssuesLinuxwithEGL編譯安裝嘗試過(guò) 的路線,因?yàn)橛羞@句話「WedefaulttoEGLratherthanGLXonLinuxtomakeiteasiertoLinuxwithEGLheadlesssoxvfbisnolongerneeded.」。然?,裝好之后合成的視頻全?(編譯安裝以及合成信息?報(bào)錯(cuò)或警告)。報(bào)錯(cuò):Operationnotpermitted,通過(guò)上?的「排查環(huán)境是否設(shè)置成功」排查11、可能因?yàn)槲催\(yùn)?Xvfb:$nohupXvfb:1-screen01280x1024x16>/dev/null2>&1&2、可能環(huán)境變量DISPLAY未設(shè)置DISPLAY=:1glxinfo|grep-iopengl7.ffmpeg運(yùn)?報(bào)錯(cuò)setup_glERRORFailedtoconfigureinputpadonParsed_gltransition_0時(shí),且命令 返回Error:couldn'tfindDISPLAY=:1glxinfo|grep-iopenglyumyuminstallmesa*yuminstallfreeglut*魔改并且

GL_RGBGL_RGBA全替換為GL_RGBGL_RGBAglPixelStoreiquery_formats參數(shù)修改,原glPixelStoreiquery_formats

***/3fromFrame->linesize[0]/4query_formats改成***/4***/3fromFrame->linesize[0]/4query_formats將

?法替換為(參考?官?filterffmpeg-4.2.4/libavfilter/vf_rotate.c的

?法):GL_RGBPIXEL_FORMATc->pix_fmt刪除設(shè)置項(xiàng)#definePIXEL_FORMAT(GL_RGB),將 和 全替換為GL_RGBPIXEL_FORMATc->pix_fmtGLTransitionContext在結(jié)構(gòu)體 增加屬性值:GLTransitionContextintintalpha;//輸?值設(shè)置通道屬性//判斷通道值intpix_fmt;intchannel_num;query_formats?法 改為:query_formatsstaticstaticintquery_formats(AVFilterContext*ctx){staticconstenumAVPixelFormatpix_fmts[]={AV_PIX_FMT_RGB24,AV_PIX_FMT_BGR24,AV_PIX_FMT_ARGB, AV_PIX_FMT_ABGR,AV_PIX_FMT_RGBA, AV_PIX_FMT_BGRA,AV_PIX_FMT_NONE};AVFilterFormats*fmts_list;fmts_list=ff_make_format_list(pix_fmts);if(!fmts_list){returnAVERROR(ENOMEM);}returnff_set_common_formats(ctx,fmts_list);}增加透明屬性:staticconstenumstaticconstenumAVPixelFormatalpha_pix_fmts[]={AV_PIX_FMT_ARGB,AV_PIX_FMT_ABGR,AV_PIX_FMT_RGBA,AV_PIX_FMT_BGRA,AV_PIX_FMT_NONE};setup_gl在?法 中增加判斷:setup_glcc->alpha=ff_fmt_is_in(inLink->format,alpha_pix_fmts);av_log(ctx,AV_LOG_DEBUG,"c->alpha:%d,inLink->format:%d\n",c->alpha,inLink->format);//getalphainfoif(c->alpha){c->pix_fmt=GL_RGBA;c->channel_num=4;}else{c->pix_fmt=GL_RGB;c->channel_num=3;}glPixelStorei?法glPixelStorei

的參數(shù)修改,原

改成***/c->channel_num,如***/3fromFrame->linesize[0]/***/3fromFrame->linesize[0]/c->channel_num?前?標(biāo)是?持上?個(gè)額外的紋理圖?,圖?路徑可輸?。SOIL安裝 來(lái)加載圖?:SOILgitgitclone/kbranigan/Simple-OpenGL-Image-Library.gitcdSimple-OpenGL-Image-Librarysudomakesudomakeinstall./configure加上--extra-libs='-lSOIL'vf_gltransition.c?件 頭部加上:vf_gltransition.c##include<SOIL.h>GLTransitionContext結(jié)構(gòu)體 加上:GLTransitionContextcharchar*extra_texture;//注意與下?的屬性區(qū)分GLuintextra_tex;//?成紋理需要?到,參考fromgltransition_options輸?項(xiàng)說(shuō)明 加上:gltransition_options......{"extra_texture","pathtothegl-transitionextra_texturefile",OFFSET(extra_texture),AV_OPT_TYPE_STRING,{.str=NULL},CHAR_MIN,CHAR_MAX,FLAGS},...setup_tex?法 增加:setup_tex......if(c->extra_texture){//extra_textureintwidth,height,soilPixFmt;soilPixFmt=SOIL_LOAD_RGB;if(c->pix_fmt==GL_RGBA){soilPixFmt=SOIL_LOAD_RGBA;}unsignedchar*image=SOIL_load_image(c->extra_texture,&width,&height,0,soilPixFmt);glGenTextures(1,&c->extra_tex);glActiveTexture(GL_TEXTURE0+2);glBindTexture(GL_TEXTURE_2D,c->extra_tex);glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_CLAMP_TO_EDGE);glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_CLAMP_TO_EDGE);glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);glTexImage2D(GL_TEXTURE_2D,0,c->pix_fmt,width,height,0,c->pix_fmt,GL_UNSIGNED_BYTE,image);glUniform1i(glGetUniformLocation(c->program,"extra_tex"),2);SOIL_free_image_data(image);}使?前?作:glsl修改 ?件,如displacement.glsl,將其中的glsl

以及著?器中的

改為uniformuniformsampler2DdisplacementMap;displacementMapsampler2Duniformsampler2DdisplacementMap;displacementMapglsltexture_dir/texture.png獲取 ?件?錄,如glsltexture_dir/texture.pngffmpegff

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論