trying to build for jetson nano
Closed this issue · 21 comments
i have ubuntu 20.04 running on jetson nano and try to use it for livestreaming. i would like to make an overlay with an webpage...
so i tried to use gstcefsrc for that i compiled and try to run, but get the following error:
No such element or plugin 'cefsrc'
jetson@nano:~/.sources/gstcefsrc/build/Release$ gst-launch-1.0 cefsrc
(gst-plugin-scanner:67316): GStreamer-WARNING **: 23:45:03.954: Failed to load plugin '/usr/lib/aarch64-linux-gnu/gstreamer-1.0/libcef.so': /usr/lib/aarch64-linux-gnu/gstreamer-1.0/libcef.so: cannot allocate memory in static TLS block
(gst-plugin-scanner:67316): GStreamer-WARNING **: 23:45:04.022: Failed to load plugin '/usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstcef.so': ./libcef.so: cannot allocate memory in static TLS block
ERROR: pipeline could not be constructed: no element "cefsrc".
jetson@nano:~/.sources/gstcefsrc/build/Release$
any idea/hint ??
thanks in advance
Lars
That doesn't sound like a cefsrc issue to be honest, have you tried simply googling for the error?
yes i did, i had this kind of error also with obs. building with a libcef provided by obs (repo) helped there
any hints for doing similar with this project would be great
You can build with your own CEF version with such a command:
CEF_ROOT=/path/to/chromium/src/out/Release_GN_x64/ cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release ..
I don't think there is much more I can do here, please propose a MR if you have a fix :)
@MathieuDuponchelle just to have it correct for my build ...
`jetson@nano:~/.sources$ ls obs-build-dependencies/cef_binary_5060_linuxarm64
build cmake CMakeCache.txt CMakeFiles cmake_install.cmake CMakeLists.txt include libcef_dll libcef_dll_wrapper LICENSE.txt Makefile README.txt Release Resources
jetson@nano:~/.sources$ ls obs-build-dependencies/cef_binary_5060_linuxarm64/Release/
chrome-sandbox libcef.so libEGL.so libGLESv2.so libvk_swiftshader.so libvulkan.so.1 snapshot_blob.bin v8_context_snapshot.bin vk_swiftshader_icd.json`
CEF_ROOT=~/.sources/obs-build-dependencies/cef_binary_5060_linuxarm64
or a subdir of ~/.sources/obs-build-dependencies/cef_binary_5060_linuxarm64 ??
with the provied command i get:
jetson@nano:/.sources/gstcefsrc/build$ CEF_ROOT=/.sources/obs-build-dependencies/cef_binary_5060_linuxarm64/Release/ cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release ..
-- The C compiler identification is GNU 8.4.0
-- The CXX compiler identification is GNU 8.4.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Downloading /home/jetson/.sources/gstcefsrc/third_party/cef/cef_binary_103.0.9%2Bgd0bbcbb%2Bchromium-103.0.5060.114_linuxarm64.tar.bz2.sha1...
-- Downloading /home/jetson/.sources/gstcefsrc/third_party/cef/cef_binary_103.0.9%2Bgd0bbcbb%2Bchromium-103.0.5060.114_linuxarm64.tar.bz2...
-- [download 0% complete]
-- [download 1% complete]
-- [download 2% complete]
-- [download 3% complete]
it seems not to take the provided libcef
with absolute paths:
`jetson@nano:/.sources/gstcefsrc$ mkdir build && cd build/.sources/gstcefsrc/build$ CEF_ROOT=/home/jetson/.sources/obs-build-dependencies/cef_binary_5060_linuxarm64/Release cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release ..
jetson@nano:
-- The C compiler identification is GNU 8.4.0
-- The CXX compiler identification is GNU 8.4.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
CMake Error at CMakeLists.txt:49 (find_package):
By not providing "FindCEF.cmake" in CMAKE_MODULE_PATH this project has
asked CMake to find a package configuration file provided by "CEF", but
CMake did not find one.
Could not find a package configuration file provided by "CEF" with any of
the following names:
CEFConfig.cmake
cef-config.cmake
Add the installation prefix of "CEF" to CMAKE_PREFIX_PATH or set "CEF_DIR"
to a directory containing one of the above files. If "CEF" provides a
separate development package or SDK, be sure it has been installed.
-- Configuring incomplete, errors occurred!
See also "/home/jetson/.sources/gstcefsrc/build/CMakeFiles/CMakeOutput.log".
jetson@nano:~/.sources/gstcefsrc/build$ mc
jetson@nano:/.sources/gstcefsrc/build$ cd /home/jetson/.sources/obs-build-dependencies//.sources/obs-build-dependencies$ find . | grep cmake
jetson@nano:
./cef_binary_5060_linuxarm64/CMakeFiles/Makefile.cmake
./cef_binary_5060_linuxarm64/CMakeFiles/3.25.2/CMakeSystem.cmake
./cef_binary_5060_linuxarm64/CMakeFiles/3.25.2/CMakeCXXCompiler.cmake
./cef_binary_5060_linuxarm64/CMakeFiles/3.25.2/CMakeCCompiler.cmake
./cef_binary_5060_linuxarm64/CMakeFiles/cmake.check_cache
./cef_binary_5060_linuxarm64/CMakeFiles/CMakeDirectoryInformation.cmake
./cef_binary_5060_linuxarm64/cmake
./cef_binary_5060_linuxarm64/cmake/cef_macros.cmake
./cef_binary_5060_linuxarm64/cmake/FindCEF.cmake
./cef_binary_5060_linuxarm64/cmake/cef_variables.cmake
./cef_binary_5060_linuxarm64/libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cmake_clean.cmake
./cef_binary_5060_linuxarm64/libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/DependInfo.cmake
./cef_binary_5060_linuxarm64/libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cmake_clean_target.cmake
./cef_binary_5060_linuxarm64/libcef_dll_wrapper/CMakeFiles/CMakeDirectoryInformation.cmake
./cef_binary_5060_linuxarm64/libcef_dll_wrapper/cmake_install.cmake
./cef_binary_5060_linuxarm64/build/CMakeFiles/Makefile.cmake
./cef_binary_5060_linuxarm64/build/CMakeFiles/3.25.1/CMakeSystem.cmake
./cef_binary_5060_linuxarm64/build/CMakeFiles/3.25.1/CMakeCXXCompiler.cmake
./cef_binary_5060_linuxarm64/build/CMakeFiles/3.25.1/CMakeCCompiler.cmake
./cef_binary_5060_linuxarm64/build/CMakeFiles/cmake.check_cache
./cef_binary_5060_linuxarm64/build/CMakeFiles/CMakeDirectoryInformation.cmake
./cef_binary_5060_linuxarm64/build/libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cmake_clean.cmake
./cef_binary_5060_linuxarm64/build/libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/DependInfo.cmake
./cef_binary_5060_linuxarm64/build/libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cmake_clean_target.cmake
./cef_binary_5060_linuxarm64/build/libcef_dll_wrapper/CMakeFiles/CMakeDirectoryInformation.cmake
./cef_binary_5060_linuxarm64/build/libcef_dll_wrapper/cmake_install.cmake
./cef_binary_5060_linuxarm64/build/cmake_install.cmake
./cef_binary_5060_linuxarm64/cmake_install.cmake
jetson@nano:~/.sources/obs-build-dependencies$
`
@lblabr I don't know, just try to do as the error tells you? :)
i'm not that expert.... (sry) played with the vaules for path but nothing solved the problem
the named files
CEFConfig.cmake
cef-config.cmake
are not there...
with:
jetson@nano:~/.sources/gstcefsrc/build$ CEF_ROOT=/home/jetson/.sources/obs-build-dependencies/cef_binary_5060_linuxarm64/ cmake -G "Unix Makefiles" -DCMAKE_MODULE_PATH=/home/jetson/.sources/obs-build-dependencies/cef_binary_5060_linuxarm64/cmake -DCMAKE_BUILD_TYPE=Release ..
CMake Error at /home/jetson/.sources/obs-build-dependencies/cef_binary_5060_linuxarm64/cmake/FindCEF.cmake:33 (message):
No CMake bootstrap found for CEF binary distribution at:
/home/jetson/.sources/gstcefsrc/third_party/cef/cef_binary_103.0.9+gd0bbcbb+chromium-103.0.5060.114_linuxarm64.
Call Stack (most recent call first):
CMakeLists.txt:49 (find_package)
-- Configuring incomplete, errors occurred!
why it looks again to third-party.
i do not ahve the knowledge to solve by my own
@lblabr can you expand on what worked and what didn't? I can't tell by the images tbh
obs-browser plugin is used to "stream" a webpage more or less the same what i try to achive with gstreamer and your plugin.
obs-browser:
as you can see the library is not referenced by a link... (how ever this was achieved) build static?
libgstcef.so
libcef.so is referenced by an library (shared??) does not work
but as i sayed, i'm not a dev just have basic knwoledge about how to build... trying a lot sometimes it works some not
might this help?
https://bitbucket.org/chromiumembedded/java-cef/issues/377/runsh-should-know-its-directory
according to this description:
https://stackoverflow.com/questions/34428037/how-to-interpret-the-output-of-the-ldd-program
for obs-browser the libcef is already in the memory, that's why there is no path in ldd output
how do achive that for cefsrc plugin?
tried:
jetson@nano:~/.sources/gstcefsrc/build$ export LD_PRELOAD="/home/jetson/.sources/gstcefsrc/build/Release/libcef.so"
jetson@nano:~/.sources/gstcefsrc/build$ env | grep LD
LD_PRELOAD=/home/jetson/.sources/gstcefsrc/build/Release/libcef.so
LD_LIBRARY_PATH=/opt/ffmpeg-42/bin:/opt/ffmpeg-42/lib:
OLDPWD=/home/jetson
jetson@nano:~/.sources/gstcefsrc/build$ GST_PLUGIN_PATH=Release:$GST_PLUGIN_PATH gst-launch-1.0 cefsrc url="https://soundcloud.com/platform/sama" ! video/x-raw, width=1920, height=1080, framerate=60/1 ! cefdemux name=d d.video ! queue max-size-bytes=0 max-size-buffers=0 max-size-time=3000000000 ! videoconvert ! xvimagesink audiotestsrc do-timestamp=true is-live=true volume=0.00 ! audiomixer name=mix ! queue max-size-bytes=0 max-size-buffers=0 max-size-time=3000000000 ! audioconvert ! pulsesink d.audio ! mix.
WARNING: erroneous pipeline: no element "cefsrc"
jetson@nano:~/.sources/gstcefsrc/build$ ls Release/
chrome_100_percent.pak chrome-sandbox icudtl.dat libEGL.so libgstcef.so libvulkan.so.1 resources.pak v8_context_snapshot.bin
chrome_200_percent.pak gstcefsubprocess libcef.so libGLESv2.so libvk_swiftshader.so locales snapshot_blob.bin vk_swiftshader_icd.json
i started from ...... /gstcefsrc/build$
needed to change GST_PLUGIN_PATH=Release => GST_PLUGIN_PATH=./Release
with:
`
jetson@nano:~/.sources/gstcefsrc/build$ export LD_PRELOAD="/home/jetson/.sources/gstcefsrc/build/Release/libcef.so"
`
test:
GST_PLUGIN_PATH=./Release:$GST_PLUGIN_PATH gst-launch-1.0 \
cefsrc url="https://soundcloud.com/platform/sama" ! \
video/x-raw, width=1920, height=1080, framerate=60/1 ! cefdemux name=d d.video ! \
queue max-size-bytes=0 max-size-buffers=0 max-size-time=3000000000 ! videoconvert ! \
xvimagesink audiotestsrc do-timestamp=true is-live=true volume=0.00 ! audiomixer name=mix ! \
queue max-size-bytes=0 max-size-buffers=0 max-size-time=3000000000 ! audioconvert ! pulsesink \
d.audio ! mix.
works!!
is it possible to do an overlay to an video with that plugin like they do in:
https://www.youtube.com/watch?v=QNZJYOuVGiE
https://www.youtube.com/watch?v=no7rvUk8GqM (5:45)
?
yes it is, for overlays you would usually mix things together with a compositor element.
i'm new with gstreamer, could you pls. share an example?
@lblabr I advise reading GStreamer's documentation.