I was succesfully able to compile and deploy vlc and libvlc onto an embedded board using Yocto Linux. For the compilation I used lua5.1 instead of lua5.3. That is how I got rid of the error "corrupt module liblua.so".
The thing that runs on my PC does not run on the platform and I'm curious what might be missing or what might be the cause of this. The output is as follows:
libvlc: Creating an input for 'rtsp://192.168.1.92:7236'
libvlc: using timeshift granularity of 50 MiB, in path '/tmp'
libvlc: `rtsp://192.168.1.92:7236' gives access `rtsp' demux `' path `192.168.1.92:7236'
libvlc: specified demux `any'
libvlc: creating demux: access='rtsp' demux='any' location='192.168.1.92:7236' file='(nul'
libvlc: looking for access_demux module matching "rtsp": 13 candidates
libvlc: version 2017.04.10
libvlc: RTP subsession 'video/MP2T'
libvlc: setup start: 0.000000 stop:0.000000
libvlc: creating demux: access='' demux='ts' location='' file='(null)'
libvlc: We have a timeout of 30 seconds
libvlc: spawned timeout thread
libvlc: play start: 0.000000 stop:0.000000
libvlc: using access_demux module "live555"
libvlc: looking for meta reader module matching "any": 2 candidates
libvlc: Trying Lua scripts in /home/root/.local/share/vlc/lua/meta/reader
libvlc: Trying Lua scripts in /usr/lib/vlc/lua/meta/reader
libvlc: Trying Lua playlist script /usr/lib/vlc/lua/meta/reader/filename.luac
libvlc: Error loading script /usr/lib/vlc/lua/meta/reader/filename.luac: /usr/lib/vlc/lua/mk
libvlc: Trying Lua scripts in /usr/share/vlc/lua/meta/reader
libvlc: no meta reader modules matched
libvlc: `rtsp://192.168.1.92:7236' successfully opened
libvlc: looking for demux module matching "ts": 59 candidates
libvlc: no demux modules matched
I see no output from my application, I wonder what is causing this: is it an error in Lua script, is it "no demux modules matched"?
In the platform, I have an option to configure vlc with following options:
PACKAGECONFIG[mad] = "--enable-mad,--disable-mad,libmad"
PACKAGECONFIG[a52] = "--enable-a52,--disable-a52,liba52"
PACKAGECONFIG[jack] = "--enable-jack,--disable-jack,jack"
PACKAGECONFIG[live555] = "--enable-live555 LIVE555_PREFIX=${STAGING_DIR_HOST}${prefix},--disable-live555,live555"
PACKAGECONFIG[libass] = "--enable-libass,--disable-libass,libass"
PACKAGECONFIG[postproc] = "--enable-postproc,--disable-postproc,libpostproc"
PACKAGECONFIG[libva] = "--enable-libva,--disable-libva,libva"
PACKAGECONFIG[opencv] = "--enable-opencv,--disable-opencv,opencv"
PACKAGECONFIG[speex] = "--enable-speex,--disable-speex,speex"
PACKAGECONFIG[gstreamer] = "--enable-gst-decode,--disable-gst-decode,gstreamer1.0 gstreamer1.0-plugins-base gst-plugins-bad"
PACKAGECONFIG[vpx] = "--enable-vpx,--disable-vpx, libvpx"
PACKAGECONFIG[qt5] = "--enable-qt,--disable-qt, qtbase-native qtx11extras qtsvg"
PACKAGECONFIG[freerdp] = "--enable-freerdp,--disable-freerdp, freerdp"
PACKAGECONFIG[dvbpsi] = "--enable-dvbpsi,--disable-dvbpsi, libdvbpsi"
PACKAGECONFIG[samba] = "--enable-smbclient,--disable-smbclient, samba"
PACKAGECONFIG[upnp] = "--enable-upnp,--disable-upnp,libupnp"
PACKAGECONFIG[dvdnav] = "--enable-dvdnav,--disable-dvdnav,libdvdnav libdvdcss"
PACKAGECONFIG[sftp] = "--enable-sftp,--disable-sftp,libssh2"
PACKAGECONFIG[vorbis] = "--enable-vorbis,--disable-vorbis,libvorbis libogg"
PACKAGECONFIG[ogg] = "--enable-ogg,--disable-ogg,libvorbis libogg"
PACKAGECONFIG[dc1394] = "--enable-dc1394,--disable-dc1394,libdc1394"
PACKAGECONFIG[dv1394] = "--enable-dv1394,--disable-dv1394,libraw1394 libavc1394"
PACKAGECONFIG[svg] = "--enable-svg,--disable-svg,librsvg"
PACKAGECONFIG[svgdec] = "--enable-svgdec,--disable-svgdec,librsvg cairo"
PACKAGECONFIG[notify] = "--enable-notify,--disable-notify, libnotify gtk+3"
PACKAGECONFIG[fontconfig] = "--enable-fontconfig,--disable-fontconfig, fontconfig"
PACKAGECONFIG[freetype] = "--enable-freetype,--disable-freetype, freetype"
PACKAGECONFIG[dvdread] = "--enable-dvdread,--disable-dvdread, libdvdread libdvdcss"
PACKAGECONFIG[vnc] = "--enable-vnc,--disable-vnc, libvncserver"
PACKAGECONFIG[x11] = "--with-x --enable-xcb,--without-x --disable-xcb, xcb-util-keysyms libxpm libxinerama"
PACKAGECONFIG[png] = "--enable-png,--disable-png,libpng"
PACKAGECONFIG[vdpau] = "--enable-vdpau,--disable-vdpau,libvdpau"
Right now, I have the following configuration:
--enable-run-as-root \
--enable-xvideo \
--disable-screen --disable-caca \
--enable-vlm \
--enable-freetype \
--enable-tremor \
--enable-v4l2 --disable-aa --disable-faad \
--enable-dbus \
--without-contrib \
--without-kde-solid \
--enable-realrtsp \
--disable-libtar \
--enable-avcodec \
ac_cv_path_MOC=${STAGING_BINDIR_NATIVE}${QT_DIR_NAME}/moc \
ac_cv_path_RCC=${STAGING_BINDIR_NATIVE}${QT_DIR_NAME}/rcc \
ac_cv_path_UIC=${STAGING_BINDIR_NATIVE}${QT_DIR_NAME}/uic \
Any help regarding the fix of this issue is much appreciated.
EDIT: I am using platform TI DRA7xx, Yocto is on rocko branch. I intentionally disabled x11 plugin because I dont have x11, but still want to be able to stream to a Qt application using eglfs plugin.
EDIT 2: I enabled the a52 jack postproc gstreamer dvbpsi vorbis live555 ogg svg svgdec png vpx plugins from Yocto source and now I get the following output:
libvlc: looking for demux module matching "ts": 61 candidates
libvlc: Force Seek Per Percent: PCR's not found,
libvlc: PATCallBack called
libvlc: new PAT ts_id=0 version=1 current_next=1
libvlc: * number=1 pid=256
libvlc: PMTCallBack called
libvlc: new PMT program number=1 version=1 pid_pcr=4096
libvlc: * es pid=4113 type=27 dr->i_tag=0x28
libvlc: * es pid=4113 type=27 dr->i_tag=0x2a
libvlc: * es pid=4113 type=27 fcc=h264
libvlc: selecting program id=1
libvlc: looking for decoder module matching "any": 38 candidates
libvlc: Using decodebin? no
libvlc: set state failure
libvlc: no decoder modules matched
libvlc: Codec `h264' (H264 - MPEG-4 AVC (part 10)) is not supported.
libvlc: Codec not supported
libvlc: VLC could not decode the format "h264" (H264 - MPEG-4 AVC (part 10))
libvlc: killing decoder fourcc `h264', 0 PES in FIFO
libvlc: MPEG-4 descriptor not found for pid 0x1100 type 0xf
libvlc: * es pid=4352 type=15 fcc=mp4a
libvlc: looking for decoder module matching "any": 38 candidates
libvlc: no decoder modules matched
libvlc: Codec `mp4a' (MPEG AAC Audio) is not supported.
libvlc: Codec not supported
libvlc: VLC could not decode the format "mp4a" (MPEG AAC Audio)
libvlc: killing decoder fourcc `mp4a', 0 PES in FIFO
libvlc: using demux module "ts"
libvlc: DEMUX_SET_GROUP -1 (nil)
libvlc: pid[4096] unknown
libvlc: Buffering 0%
libvlc: Buffering 66%
libvlc: Stream buffering done (210 ms in 120 ms)
libvlc: Decoder wait done in 0 ms
../git/libdce_linux.c:70: dce_init ERROR: Failed OmapDrm_FD > 0 error val -
This makes me think that it is GPU related (OMAP).
EDIT 3 I managed to get the stream working for a bit by enabling x264 from ffmpeg. I also upgraded VLC version to 3.0.6 since it complained about libavutils being version bigger than 55. Now, I see stream for a minute, then freezes and gives segmentation fault.
libvlc: Standard set to Auto
libvlc: using demux module "ts"
libvlc: DEMUX_SET_GROUP -1 (nil)
libvlc: first packet for pid=0 cc=0x1
libvlc: PATCallBack called
libvlc: new PAT ts_id=0 version=1 current_next=1
libvlc: * number=1 pid=256
libvlc: temporary receiving program 1
libvlc: first packet for pid=256 cc=0x1
libvlc: PMTCallBack called for program 1
libvlc: new PMT program number=1 version=1 pid_pcr=4096
libvlc: * pid=4113 type=0x1b AVC video stream as defined in ITU-T Rec. H.264
libvlc: - ES descriptor tag 0x28
libvlc: - ES descriptor tag 0x2a
libvlc: - found AVC_video_descriptor profile=0x67 level=0x80
libvlc: => pid 4113 has now es fcc=h264
libvlc: selecting program id=1
libvlc: looking for packetizer module matching "any": 25 candidates
libvlc: using packetizer module "h264"
libvlc: looking for video decoder module matching "any": 15 candidates
libvlc: using ffmpeg Lavc57.89.100
libvlc: CPU flags: 0x0000003f
libvlc: allowing 3 thread(s) for decoding
libvlc: codec (h264) started
libvlc: using frame thread mode with 3 threads
libvlc: using video decoder module "avcodec"
libvlc: Default program is 1
libvlc: * pid=17 listening for SDT
libvlc: enabling pid 4113 from program 1
libvlc: enabling pcr pid 4096 from program 1
libvlc: pid[4096] unknown
libvlc: Buffering 0%
libvlc: found NAL_SPS (sps_id=0)
libvlc: found NAL_PPS (pps_id=0 sps_id=0)
libvlc: restarting module due to input format change
libvlc: removing module "avcodec"
libvlc: looking for video decoder module matching "any": 15 candidates
libvlc: using ffmpeg Lavc57.89.100
libvlc: CPU flags: 0x0000003f
libvlc: allowing 3 thread(s) for decoding
libvlc: codec (h264) started
libvlc: using frame thread mode with 3 threads
libvlc: using video decoder module "avcodec"
libvlc: available software decoder output format 0 (yuv420p)
libvlc: looking for text renderer module matching "any": 3 candidates
libvlc: Building font databases.
libvlc: Took -9182 microseconds
libvlc: using text renderer module "freetype"
libvlc: looking for video converter module matching "any": 16 candidates
libvlc: 32x32 (32x32) chroma: YUVA -> 16x16 (16x16) chroma: RGBA with scaling using Bi)
libvlc: using video converter module "swscale"
libvlc: looking for video converter module matching "any": 16 candidates
libvlc: YUVP to YUVA converter
libvlc: using video converter module "yuvp"
libvlc: Deinterlacing available
libvlc: deinterlace -1, mode auto, is_needed 0
libvlc: looking for vout window module matching "none": 0 candidates
libvlc: no vout window modules
libvlc: Opening vout display wrapper
libvlc: looking for vout display module matching "vmem": 6 candidates
libvlc: VoutDisplayEvent 'resize' 1920x1090
libvlc: using vout display module "vmem"
libvlc: A filter to adapt decoder I420 to display I420 is needed
libvlc: looking for video converter module matching "any": 16 candidates
libvlc: 1920x1080 (1920x1090) chroma: I420 -> 1920x1090 (1920x1090) chroma: I420 with )
libvlc: using video converter module "swscale"
libvlc: Filter 'Swscale' (0xb1637560) appended to chain
libvlc: original format sz 1920x1090, of (0,0), vsz 1920x1080, 4cc I420, sar 1:1, msk 0
libvlc: VoutDisplayEvent 'resize' 1920x1080
libvlc: removing module "freetype"
libvlc: looking for text renderer module matching "any": 3 candidates
libvlc: Building font databases.
libvlc: Took -9307 microseconds
libvlc: using text renderer module "freetype"
libvlc: control type=22
libvlc: Buffering 75%
libvlc: Received first picture
libvlc: Stream buffering done (233 ms in 209 ms)
libvlc: Decoder wait done in 0 ms
libvlc: picture might be displayed late (missing 0 ms)
libvlc: picture is too late to be displayed (missing 155 ms)
libvlc: picture is too late to be displayed (missing 138 ms)
libvlc: picture is too late to be displayed (missing 121 ms)
libvlc: picture is too late to be displayed (missing 105 ms)
libvlc: picture is too late to be displayed (missing 88 ms)
libvlc: picture is too late to be displayed (missing 72 ms)
libvlc: picture is too late to be displayed (missing 55 ms)
libvlc: picture is too late to be displayed (missing 38 ms)
libvlc: picture is too late to be displayed (missing 22 ms)
libvlc: picture might be displayed late (missing 5 ms)
Any ideas to avoid this problem? Is it because of software decoding? I have the following configuration:
PACKAGECONFIG_append = " a52 jack postproc gstreamer dvbpsi vorbis live555 ogg svg svgdec "
PACKAGECONFIG_append = " mad gnutls mkv"
RDEPENDS_vlc_append = " libmad libproxy ffmpeg "
EXTRA_OECONF_remove = "--disable-faad"
EXTRA_OECONF_append = " --enable-vlm --enable-x264 --enable-debug --enable-faad "
DEPENDS_append = " x264 libav ffmpeg coreutils-native "
EXTRA_OECONF_append = " --enable-avcodec "
User contributions licensed under CC BY-SA 3.0