transitive-bullshit / ffmpeg-gl-transition

FFmpeg filter for applying GLSL transitions between video streams.
650 stars 126 forks source link

Bug - Segmantation Error with gltransition #19

Closed sureshNachiappan closed 6 years ago

sureshNachiappan commented 6 years ago

Hello,

I have spent several hours working on this now, and each time I rebuild ffmpeg, it results in a segmentation fault when I attempt to use the filter:

root@host:[/usr/local/src/ffmpeg-latest]: /usr/local/bin/ffmpeg -i /home/procserverjh/public_html/videosly/video/ikl3tkm_ez.mp4 -i /home/procserverjh/public_html/videosly/video/u5e9f3y_ez.mp4 -filter_complex gltransition -y /home/procserverjh/public_html/videosly/video/out.mp4 ... Stream mapping: Stream #0:0 (h264) -> gltransition:from (graph 0) Stream #1:0 (h264) -> gltransition:to (graph 0) gltransition (graph 0) -> Stream #0:0 (libx264) Stream #0:1 -> #0:1 (aac (native) -> aac (native)) Press [q] to stop, [?] for help Segmentation fault (core dumped)

This only occurs when I use the gltransition filter. If I remove that option from the processing command, or use a different filter, the output completes successfully.

I have tried rebuilding using different versions of the ffmpeg source, as well as installing various different components needed to compile it. At this point, I am unable to determine the cause of the segfault with the gltransition filter.

transitive-bullshit commented 6 years ago

Hey, sorry you're having issues.

Which platform are you using? And are you using the EGL or non-EGL version?

sureshNachiappan commented 6 years ago

Thanks for the reply, I was able to recompile ffmpeg using the gltransition filter intially at the github repo you provided. root@host:[~]: ffmpeg built with gcc 4.8.5 (GCC) 20150623 (Red Hat 4.8.5-28) configuration: --tempprefix=/usr/local/src/tmp --enable-version3 --enable-gpl --enable-nonfree --enable-shared --enable-postproc --enable-avfilter --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libvpx --enable-libmp3lame --enable-libtheora --enable-libvorbis --enable-libx264 --enable-libxvid --enable-pthreads --enable-libfreetype --enable-libfontconfig --enable-libspeex --enable-filter=gltransition --extra-cflags=-fPIC

When we tried to run the basic gltransition command, we getting this error "/usr/local/bin/ffmpeg: symbol lookup error: /usr/local/lib/libavfilter.so.6: undefined symbol: eglGetDisplay

i contacted our server support, they can't fix. they got "Segmentation fault" (https://www.screencast.com/t/K8fxArITvB2n)

command : /usr/local/bin/ffmpeg -i /home/XXXXX/public_html/XXXXX/video/ikl3tkm_ez.mp4 -i /home/XXXXX/public_html/XXXXX/video/u5e9f3y_ez.mp4 -filter_complex gltransition -y /home/XXXXX/public_html/XXXXX/video/out.mp4 (https://www.screencast.com/t/pXKGjJHT)

transitive-bullshit commented 6 years ago

You need to include the EGL libs when configuring ffmpeg. Please double-check the readme's --extra-libs section.

The error you're getting is saying that it can't find the EGL libs that you're using.

transitive-bullshit commented 6 years ago

Hope that helps! We recently made some major changes to the build instructions due to the inclusion of EGL, so feedback on whether or not it works for you and what, if anything, was confusing is very welcome.

Thanks!

sureshNachiappan commented 6 years ago

Thanks, I checked with server team. Their reply "So I took a look at the ffmpeg install on your server and it is referencing the files correctly.

[root@host ffmpeg-3.4.2]# ldd /usr/local/bin/ffmpeg linux-vdso.so.1 => (0x00007ffc9dd03000) libGLEW.so.2.1 => /lib64/libGLEW.so.2.1 (0x00007f8e0a433000) libEGL.so.1 => /lib64/libEGL.so.1 (0x00007f8e0a1fd000) libGLESv2.so.2 => /lib64/libGLESv2.so.2 (0x00007f8e09ff2000) libavdevice.so.58 => /usr/local/lib/libavdevice.so.58 (0x00007f8e09de1000)

libavfilter.so.7 => /usr/local/lib/libavfilter.so.7 (0x00007f8e09922000) libavformat.so.58 => /usr/local/lib/libavformat.so.58 (0x00007f8e094dd000) libavcodec.so.58 => /usr/local/lib/libavcodec.so.58 (0x00007f8e07de2000) libpostproc.so.55 => /usr/local/lib/libpostproc.so.55 (0x00007f8e07bc2000) libswresample.so.3 => /usr/local/lib/libswresample.so.3 (0x00007f8e079a4000) libswscale.so.5 => /usr/local/lib/libswscale.so.5 (0x00007f8e0771b000) libavutil.so.56 => /usr/local/lib/libavutil.so.56 (0x00007f8e074a8000) libm.so.6 => /lib64/libm.so.6 (0x00007f8e071a5000) libxcb.so.1 => /lib64/libxcb.so.1 (0x00007f8e06f7d000) libxcb-shm.so.0 => /lib64/libxcb-shm.so.0 (0x00007f8e06d79000) libxcb-shape.so.0 => /lib64/libxcb-shape.so.0 (0x00007f8e06b74000) libxcb-xfixes.so.0 => /lib64/libxcb-xfixes.so.0 (0x00007f8e0696c000) libfontconfig.so.1 => /lib64/libfontconfig.so.1 (0x00007f8e0672f000) libfreetype.so.6 => /lib64/libfreetype.so.6 (0x00007f8e06488000) libz.so.1 => /lib64/libz.so.1 (0x00007f8e06272000) liblzma.so.5 => /lib64/liblzma.so.5 (0x00007f8e0604c000) libopencore-amrwb.so.0 => /usr/local/lib/libopencore-amrwb.so.0 (0x00007f8e05e34000) libmp3lame.so.0 => /usr/local/lib/libmp3lame.so.0 (0x00007f8e05ba6000) libopencore-amrnb.so.0 => /usr/local/lib/libopencore-amrnb.so.0 (0x00007f8e05976000) libspeex.so.1 => /usr/local/lib/libspeex.so.1 (0x00007f8e0575c000) libtheoraenc.so.1 => /usr/local/lib/libtheoraenc.so.1 (0x00007f8e05518000) libtheoradec.so.1 => /usr/local/lib/libtheoradec.so.1 (0x00007f8e052fe000) libogg.so.0 => /usr/local/lib/libogg.so.0 (0x00007f8e050f6000) libvorbis.so.0 => /usr/local/lib/libvorbis.so.0 (0x00007f8e04ec0000) libvorbisenc.so.2 => /usr/local/lib/libvorbisenc.so.2 (0x00007f8e04c15000) libx264.so.142 => /usr/local/lib/libx264.so.142 (0x00007f8e0487c000) libxvidcore.so.4 => /usr/local/lib/libxvidcore.so.4 (0x00007f8e04563000) libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f8e04347000) libc.so.6 => /lib64/libc.so.6 (0x00007f8e03f79000) libGL.so.1 => /lib64/libGL.so.1 (0x00007f8e03d07000) libX11.so.6 => /lib64/libX11.so.6 (0x00007f8e039c9000) libselinux.so.1 => /lib64/libselinux.so.1 (0x00007f8e037a1000) libxcb-dri2.so.0 => /lib64/libxcb-dri2.so.0 (0x00007f8e0359c000) libX11-xcb.so.1 => /lib64/libX11-xcb.so.1 (0x00007f8e0339a000) libxcb-dri3.so.0 => /lib64/libxcb-dri3.so.0 (0x00007f8e03196000) libxcb-present.so.0 => /lib64/libxcb-present.so.0 (0x00007f8e02f93000) libxcb-sync.so.1 => /lib64/libxcb-sync.so.1 (0x00007f8e02d8c000) libxshmfence.so.1 => /lib64/libxshmfence.so.1 (0x00007f8e02b88000) libgbm.so.1 => /lib64/libgbm.so.1 (0x00007f8e0297a000) libwayland-client.so.0 => /lib64/libwayland-client.so.0 (0x00007f8e0276b000) libwayland-server.so.0 => /lib64/libwayland-server.so.0 (0x00007f8e02557000) libexpat.so.1 => /lib64/libexpat.so.1 (0x00007f8e0232d000) libdl.so.2 => /lib64/libdl.so.2 (0x00007f8e02129000) libdrm.so.2 => /lib64/libdrm.so.2 (0x00007f8e01f17000) libglapi.so.0 => /lib64/libglapi.so.0 (0x00007f8e01ce7000) /lib64/ld-linux-x86-64.so.2 (0x000055da338e7000) libXau.so.6 => /lib64/libXau.so.6 (0x00007f8e01ae2000) libstdc++.so.6 => /lib64/libstdc++.so.6 (0x00007f8e017da000) libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f8e015c4000) libXext.so.6 => /lib64/libXext.so.6 (0x00007f8e013b1000) libXdamage.so.1 => /lib64/libXdamage.so.1 (0x00007f8e011ae000) libXfixes.so.3 => /lib64/libXfixes.so.3 (0x00007f8e00fa8000) libxcb-glx.so.0 => /lib64/libxcb-glx.so.0 (0x00007f8e00d8c000) libXxf86vm.so.1 => /lib64/libXxf86vm.so.1 (0x00007f8e00b86000) libpcre.so.1 => /lib64/libpcre.so.1 (0x00007f8e00924000) libffi.so.6 => /lib64/libffi.so.6 (0x00007f8e0071b000) librt.so.1 => /lib64/librt.so.1 (0x00007f8e00513000)

It would say not found next to any of those that were missing. The part that bugs me is that your error appears to be from a previous install.

When we tried to run the basic gltransition command, we getting this error "/usr/local/bin/ffmpeg: symbol lookup error: /usr/local/lib/libavfilter.so.6: undefined symbol: eglGetDisplay

If you notice I bolded the filter in the output above that it was saying it was using, if you look above at the linkings of the last build of ffmpeg that Keven it is linking to a newer version of that file as it has .7 instead of .6.

I can also confirm that Keven compiled the software using the following line:

PKG_CONFIG_PATH='/usr/local/lib/pkgconfig:/usr/lib/pkgconfig' ./configure --tempprefix=/usr/local/src/tmp --enable-version3 --enable-gpl --enable-nonfree --enable-shared --enable-postproc --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libvpx --enable-libmp3lame --enable-libtheora --enable-libvorbis --enable-libx264 --enable-libxvid --enable-pthreads --enable-libfreetype --enable-libfontconfig --enable-libspeex --enable-filter=gltransition --extra-cflags=-fPIC --extra-ldflags='-lGLEW -lEGL -lGLESv2'

So it should have all of the support they requested and more. Can you ask them if the "-lGLESv2" might be affecting it?"

Is lGLESv2 affecting the install. Please help me on this.

Thanks

sureshNachiappan commented 6 years ago

Hi,

I am still awaiting your response and because of which I am not able to move forward. is there something pending from my end? Looking forward to your reply.

transitive-bullshit commented 6 years ago

Closing for inactivity and unable to repro. Please reopen with more info if you're still experiencing this issue.

Crispinli commented 4 years ago

Did you solve it?

transitive-bullshit commented 3 years ago

should be solved by https://github.com/transitive-bullshit/ffmpeg-gl-transition/pull/57