Introduction
In my last two blog entries I have discussed how you can stream video from embedded Linux devices such as the Beaglebone using FFMPEG/AVCONV, the V4L2 Capture program and the Logitech C920 USB Camera (with hardware MPEG4/H264). In these setups I am using the regular VLC player to receive and display the video streams (RTP, UDP unicast and UDP multicast). These posts are available here:
- Streaming Video using RTP on the Beaglebone Black
- UDP Unicast and Multicast Streaming Video using the Beaglebone Black
I would advise that you read those posts first as I am building on them in this post.
The problem with these solutions is that they are using VLC to display the video and you are effectively without any type of control of the application. For example, If you wished to build a robot navigation system that streams video to the control panel then it would not be possible to modify the VLC user interface very easily.
So this post covers the area of building your own application to view the video streams. You could try and do this from first principles, but that is much too big a task; instead, you are better building on what is currently available.
Step 1: VLC using LibVLC
LibVLC is an incredibly comprehensive and accessible code library for all of the features that are present in the cross-platform VLC multimedia player. It would be great if we can take advantage of this library as it includes all of code necessary to decode video streams, deal with network sockets etc. And we can! The description of the functionality available in LibVLC is available here: http://www.videolan.org/developers/vlc/doc/doxygen/html/group__libvlc.html. You can even download the source code for VLC itself from: http://www.videolan.org/vlc/download-sources.html
Step 1: Download the version of LibVLC for your platform. To make life easy I would recommend using the pre-built versions. My platform for this post is 64-bit Windows 7 and I am using the tarball for Windows x64 (the latest version at the time of writing is version 2.0.7): ftp://ftp.videolan.org/pub/videolan/vlc/2.0.7/win64/ I downloaded and extracted the Windows x64 tarball to a directory C:\Qt\vlc-2.0.7 in my case. You can go back a few levels on that URL to check if there are more recent versions and to find the version for your platform.
Step 2: Use a LibVLC Wrapper
The great thing about open source is that someone has probably tried to do what you are looking to do before and has written some code. The downside is often that solutions are not well packaged and often need customisation to work with recent libraries.
There are several examples on how to use LibVLC within C++ and there are also several wrappers that are available for C++ to help make this process easier. I have tried several, but had particular success with these two:
The reason I selected both of these is that I was able to download the source code for both and was able to recompile them from source under Windows. I’m not sure how useful the first link is under Linux as it is set up for Visual Studio, but the second link uses Qt which means it should be fine under all platforms.
For this reason and because I really, really like Qt as an extension to C++, giving multi-platform user-interfaces, threads, sockets, etc. And, it is freely available. For more information on Qt – see this link.
Step 2: Download the vlc-qt library – I downloaded the “Official VLC-Qt Windows SDK and Source Packages”, which involved clicking the big green box. I extracted this to a folder in my c:\Qt directory called libvlc-qt. So, the directory looks like:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
c:\Qt\libvlc-qt>dir Volume in drive C has no label. Volume Serial Number is 1095-37A8 Directory of c:\Qt\libvlc-qt 17/07/2013 16:14 <DIR> . 17/07/2013 16:14 <DIR> .. 27/04/2013 15:08 <DIR> bin 27/04/2013 14:09 <DIR> include 27/04/2013 15:08 <DIR> lib 27/04/2013 15:43 <DIR> src 0 File(s) 0 bytes 6 Dir(s) 126,826,659,840 bytes free |
Step 3 – Make a few changes to the Demo Project
So, in this folder we now have all of the libraries that are needed for the Qt project. You can see in the lib folder the .dll.a files that are the import libraries that are needed. And, for example, libvlc-qt.dll.a is recognized as a library called vlc-qt by gcc (used by QtCreator in my case).
1 2 3 4 5 6 7 8 9 10 11 12 13 |
c:\Qt\libvlc-qt\lib>dir Volume in drive C has no label. Volume Serial Number is 1095-37A8 Directory of c:\Qt\libvlc-qt\lib 27/04/2013 15:08 <DIR> . 27/04/2013 15:08 <DIR> .. 27/04/2013 15:08 122,986 libvlc-qt-widgets.dll.a 27/04/2013 15:08 217,558 libvlc-qt.dll.a 27/04/2013 15:08 <DIR> pkgconfig 2 File(s) 340,544 bytes 3 Dir(s) 126,825,734,144 bytes free |
So, within the folder C:\Qt\libvlc-qt\src\examples\ there is a folder called demo-player, which I am going to use for the rest of this example. Opening this within QtCreator gives the following output as displayed in Figure 1.
Figure 1. The demo-player project open in QtCreator 2.7.2 (Qt 5.1.0 32-bit)
Modify the src.pro file slightly as follows:
- Add widgets to the Qt modules (line 4), so that we use the gui component form of Qt5.
- Edit the last two lines to direct LIBS and the INCLUDEPATH to fine the libaries and headers for libvlc-qt. My libvlc-qt folder is c:\Qt\libvlc-qt\
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
TARGET = demo-player TEMPLATE = app QT += core gui widgets SOURCES += main.cpp\ DemoPlayer.cpp HEADERS += DemoPlayer.h FORMS += DemoPlayer.ui # Edit below for custom library location LIBS += -LC:\Qt\libvlc-qt\lib -lvlc-qt -lvlc-qt-widgets INCLUDEPATH += C:\Qt\libvlc-qt\include |
Modify the headers of the .cpp and .h files to remove the sub-directory on the includes. So, my adapted source files look like this:
DemoPlayer.h
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
#include <QMainWindow> namespace Ui { class DemoPlayer; } class VlcInstance; class VlcMedia; class VlcMediaPlayer; class DemoPlayer : public QMainWindow { Q_OBJECT public: explicit DemoPlayer(QWidget *parent = 0); ~DemoPlayer(); private slots: void openLocal(); void openUrl(); private: Ui::DemoPlayer *ui; VlcInstance *_instance; VlcMedia *_media; VlcMediaPlayer *_player; }; #endif // DEMOPLAYER_H_ |
DemoPlayer.cpp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
#include <QFileDialog> #include <QInputDialog> #include <vlc-qt/Common.h> #include <vlc-qt/Instance.h> #include <vlc-qt/Media.h> #include <vlc-qt/MediaPlayer.h> #include "DemoPlayer.h" #include "ui_DemoPlayer.h" DemoPlayer::DemoPlayer(QWidget *parent) : QMainWindow(parent),ui(new Ui::DemoPlayer),_media(0) { ui->setupUi(this); _instance = new VlcInstance(VlcCommon::args(), this); _player = new VlcMediaPlayer(_instance); _player->setVideoWidget(ui->video); ui->video->setMediaPlayer(_player); ui->volume->setMediaPlayer(_player); ui->volume->setVolume(50); ui->seek->setMediaPlayer(_player); connect(ui->actionOpenLocal, SIGNAL(triggered()), this, SLOT(openLocal())); connect(ui->actionOpenUrl, SIGNAL(triggered()), this, SLOT(openUrl())); connect(ui->actionPause, SIGNAL(triggered()), _player, SLOT(pause())); connect(ui->actionStop, SIGNAL(triggered()), _player, SLOT(stop())); connect(ui->openLocal, SIGNAL(clicked()), this, SLOT(openLocal())); connect(ui->openUrl, SIGNAL(clicked()), this, SLOT(openUrl())); connect(ui->pause, SIGNAL(clicked()), _player, SLOT(pause())); connect(ui->stop, SIGNAL(clicked()), _player, SLOT(stop())); } DemoPlayer::~DemoPlayer() { delete _player; delete _media; delete _instance; delete ui; } void DemoPlayer::openLocal() { QString file = QFileDialog::getOpenFileName(this, tr("Open file"), QDir::homePath(), tr("Multimedia files(*)")); if (file.isEmpty()) return; _media = new VlcMedia(file, true, _instance); _player->open(_media); } void DemoPlayer::openUrl() { QString url = QInputDialog::getText(this, tr("Open Url"), tr("Enter the URL you want to play")); if (url.isEmpty()) return; _media = new VlcMedia(url, _instance); _player->open(_media); } |
main.cpp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
#include <QCoreApplication> #include <QTextCodec> #include <QApplication> #include "DemoPlayer.h" int main(int argc, char *argv[]) { QCoreApplication::setApplicationName("VLC-Qt Demo Player"); QCoreApplication::setAttribute(Qt::AA_X11InitThreads); //Comment out for Qt5 //QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8")); QApplication app(argc, argv); DemoPlayer mainWindow; mainWindow.show(); return app.exec(); } |
Step 4 – Set up your Qt Build Kit
QtCreator allows you to easily switch between different “kits”, which are different compilers and compiler configurations. This is particularly useful for cross-compilation where you can compile applications directly for the Beaglebone. I covered this in my video series on Qt and the Beaglebone.
For this compilation I am using the “Desktop Qt5.1.0 MinGW 32bit” kit, which you can select through the “Build & Run” set in the Options pane. You can see my configuration in Figure 2.
Figure 2. Selecting the QtCreator kit.
QtCreator has some very nice IDE features, such as editing the user interface (See Figure 3). If you click on the DemoPlayer.ui (under forms in the project) you will get the forms editor, which allows you to make minor modifications to the project in order to check that you have achieved a custom build. In my case I am going to change the frame title to “Beaglebone Video Streamer”. Save all changes after the minor edit (File – Save all).
Figure 3. Editing the GUI within QtCreator
Finally, I press the button on the bottom left-hand side (I think it is a hammer) and as you can see in Figure 4. I am achieving a successful compilation. Note, it will not run yet! See Step 5.
Figure 4. A Successful Compilation
Step 5 – Ensuring all Libraries are Present and Accessible
My build directory is: C:\Qt\libvlc-qt\src\examples\build-demo-player-Desktop_Qt_5_1_0_MinGW_32bit-Debug which is the default build directory for this project when working from my base directory. At this point you should have a successful build, but it is unlikely that your application will run unless you have made all of the run time dlls available (under Windows) for your application. The best way to do this is to make sure you add all of the required dlls to your path so that they can be found on execution. I have a hybrid setup for this project and there are good reasons for this that I don’t want to go into here.
So, what I have used is as follows:
– Add the path to my MinGW executables and dlls to my PATH environment variable. So to do this I went to Start -> Control Panel\System and Security\System -> “Advanced system settings” -> Environment Variables and then under “System variables” I added C:\Qt\5.1.0\mingw48_32\bin to the end of the variable value, as illustrated in Figure 5. You can add the other directories to your path here, but I am going to just place the dlls in the build folder.
Figure 5. Setting the Windows Environment Variable PATH
My build folder is c:\Qt\libvlc-qt\src\examples\build-demo-player-Desktop_Qt_5_1_0_MinGW_32bit-Debug\src\debug:
– Copy the libvlc-qt-widgets.dll and libvlc-qt.dll files from the directory C:\Qt\libvlc-qt\bin into the build folder.
– Copy the libraries and plugins directory from your vlc download into the build folder (axvlc.dll, libvlc.dll, libvlccore.dll and npvlc.dll). The plugins folder is very important as it contains further dlls that are used by your build. I copied these from my folder C:\Qt\vlc-2.0.7 which I discussed in Step 1.
My build folder now looks like this:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
c:\Qt\libvlc-qt\src\examples\build-demo-player-Desktop_Qt_5_1_0_MinGW_32bit-Debug\src\debug>dir Volume in drive C has no label. Volume Serial Number is 1095-37A8 Directory of c:\Qt\libvlc-qt\src\examples\build-demo-player-Desktop_Qt_5_1_0_Mi nGW_32bit-Debug\src\debug 18/07/2013 12:19 <DIR> . 18/07/2013 12:19 <DIR> .. 18/07/2013 15:05 499,200 axvlc.dll 18/07/2013 12:03 753,768 demo-player.exe 17/07/2013 16:19 311,497 DemoPlayer.o 27/04/2013 15:08 1,772,368 libvlc-qt-widgets.dll 27/04/2013 15:08 2,328,661 libvlc-qt.dll 18/07/2013 15:05 144,896 libvlc.dll 18/07/2013 15:05 2,376,192 libvlccore.dll 18/07/2013 12:03 134,167 main.o 17/07/2013 16:19 3,472 moc_DemoPlayer.cpp 17/07/2013 16:19 156,236 moc_DemoPlayer.o 18/07/2013 15:05 353,280 npvlc.dll 17/07/2013 16:20 <DIR> plugins 11 File(s) 8,833,737 bytes 3 Dir(s) 126,712,565,760 bytes free |
Step 6 – Build and Run!
Okay, after this you should now have an executing version of the demo-player project within QtCreator. Simply press the green play button on the bottom left. My output is captured in Figure 6.
Figure 6. Running the Application
In my case everything is working fine. The application GUI appears and I can press the Open URL button. You can see that the window now has the title “Beaglebone Video Streamer”.
The output from the Application Output Pane is:
1 2 3 |
Starting C:\Qt\libvlc-qt\src\examples\build-demo-player-Desktop_Qt_5_1_0_MinGW_32bit-Debug\src\debug\demo-player.exe... libvlc-qt "0.8.1" initialised Using libvlc version: "2.0.7 Twoflower" |
And it is possible for me to connect to my RTP video stream using the Open Local File button and to my UDP (Unicast or Multicast) streams using Open URL. So, in Figure 7 I connect to my unicast UDP stream (see previous posts) by entering the address: udp://@:1234 into the “Open URL” pop-up dialog box.
Figure 7. The Final Running Beaglebone Video Streamer
So, that is it. I have just added a high-resolution capture of my application running almost full screen and streaming live video at 30 frames per second in Figure 8.
Figure 8. The high-resolution output – running at 30 frames per second.
I will have a video soon available of my blog series on streaming video in place soon. When it is I will link everything together.
If you built a device to run object tracking, would you enable a videoplayer to run on the beaglebone or just use wireless streaming as in your example to view the tracking and even record the stream onto the home pc, when its online? (Which does beg another another question or connecting to the stream in daytime hrs but leaving the BBB to do its capture and opencv processing separately.)
Hi Derek
thank you very much for your tutorial!
I downloaded the “Official VLC-Qt Windows SDK and Source Packages” (http://sourceforge.net/projects/vlc-qt/files/), when I extracted, the folder isn’t contain the sub-folder /lib, /include, /bin, /src like you. Do I need to install the original file from the website? and how to install. thank you so much!
If The C920 was set to have a frame height of 1 pixel & maximum pixel width can it be set to run faster than 30fps.
I’m looking for a line-scan camera that can run at 200 fps (lines) or faster.
I’m building a digital FPV system: HD camera in the multicopter, professional long-range WiFi link, with display on a laptop. I would like to replace the laptop by a Beaglebone black. On the laptop I have to use W7 as the Linux versions I tried have too much latency. Any idea what latency to expect from the Beagle with this solution?
If you built a device to run objcet tracking, would you enable a videoplayer to run on the beaglebone or just use wireless streaming as in your example to view the tracking and even record the stream onto the home pc, when its online? (Which does beg another another question or connecting to the stream in daytime hrs but leaving the BBB to do its capture and opencv processing separately.)
Thank you very much for these tutorials.
Immensely useful and saves days of work at least.
Owe you one.
Do contact if u ever in town (SG).
Cheers
Thanks Richard,
Derek.
excellent work
Its nice 🙂 However, you dont have access to all the control you would need. For example I need to display the frame rate and I cant. Otherwise, I need to recompile and I have compilation issues 🙁
Hello,
I just copied this example, everything works as expected except the volume slider which is not displayed properly and is not working. Does anybody have an idea why?
Derek,
Thanks for all the AMAZING tutorial. I have everything working as it should but the video hangs up if I move the camera around too much or if make too much of a scene change. Using local network and any streaming format (RTP,UDP etc) Did you experience this. It will eventually correct itself but not for about 10 seconds or so. I’ve been playing with settings for days. It seems to happen on any resolution as well so I don’t know what to think. When it is working it is beautiful though. Any advice would be awesome!
Thanks
Thanks for the information.
I am using Olimex-A13-Olinuxino-Micro board with debian OS (No GUI)…
Now, I have a question that, If I go through above steps,
Can I succeed with that.???
Good evening sir!
i have a project: video streaming for Friendlyarm Tiny6410
i have to turn my KIT into Server to stream video to Laptop.
i use live555 on Ubuntu and it is written by Qt, my live555 libraries is installed in: /usr/lib/live
But i dont know how to add live555 into my Qt project, please help me ! Thankyou very much! dear
When i build the project i got these errors:
C:\Qt\libvlc-qt\src\examples\demo-player\src\DemoPlayer.cpp:-1: error: undefined reference to
_imp___ZN8VlcMediaC1ERK7QStringbP11VlcInstance’
_imp___ZN14VlcMediaPlayer4openEP8VlcMedia’C:\Qt\libvlc-qt\src\examples\demo-player\src\DemoPlayer.cpp:-1: error: undefined reference to
C:\Qt\libvlc-qt\src\examples\demo-player\src\DemoPlayer.cpp:-1: error: undefined reference to
_imp___ZN8VlcMediaC1ERK7QStringP11VlcInstance’
_imp___ZN14VlcMediaPlayer4openEP8VlcMedia’C:\Qt\libvlc-qt\src\examples\demo-player\src\DemoPlayer.cpp:-1: error: undefined reference to
C:\Qt\libvlc-qt\src\examples\demo-player\src\DemoPlayer.cpp:-1: error: undefined reference to
_imp___ZN9VlcCommon4argsEv’
_imp___ZN11VlcInstanceC1ERK11QStringListP7QObject’C:\Qt\libvlc-qt\src\examples\demo-player\src\DemoPlayer.cpp:-1: error: undefined reference to
C:\Qt\libvlc-qt\src\examples\demo-player\src\DemoPlayer.cpp:-1: error: undefined reference to
_imp___ZN14VlcMediaPlayerC1EP11VlcInstance’
_imp___ZN14VlcMediaPlayer14setVideoWidgetEP16VlcVideoDelegate’C:\Qt\libvlc-qt\src\examples\demo-player\src\DemoPlayer.cpp:-1: error: undefined reference to
C:\Qt\libvlc-qt\src\examples\demo-player\src\DemoPlayer.cpp:-1: error: undefined reference to
_imp___ZN14VlcWidgetVideo14setMediaPlayerEP14VlcMediaPlayer’
_imp___ZN21VlcWidgetVolumeSlider14setMediaPlayerEP14VlcMediaPlayer’C:\Qt\libvlc-qt\src\examples\demo-player\src\DemoPlayer.cpp:-1: error: undefined reference to
C:\Qt\libvlc-qt\src\examples\demo-player\src\DemoPlayer.cpp:-1: error: undefined reference to
_imp___ZN21VlcWidgetVolumeSlider9setVolumeEi’
_imp___ZN13VlcWidgetSeek14setMediaPlayerEP14VlcMediaPlayer’C:\Qt\libvlc-qt\src\examples\demo-player\src\DemoPlayer.cpp:-1: error: undefined reference to
:-1: error: release/DemoPlayer.o: bad reloc address 0×20 in section `.text$_ZN7QStringD1Ev[__ZN7QStringD1Ev]’
collect2.exe:-1: error: error: ld returned 1 exit status
Hello ran through the tutorial and am receiving the same error as Johnny March 10, 2014 at 2:54 pm,
Has a solution been found for this issue. I am using qt 5.1.1 on windows
Ahh missed the part where you recompiled vlc-qt from source. I have the demo up and going now. Thanks for creating this awesome tutorial!
Please tell em how to compile vlc-qt from source. I downloaded source version VLC-Qt 0.9.0 and use cmake 3.1.0 rc1 gui to complie but not work.
I installed qt-opensource-windows-x86-android-5.3.2.exe, it use Mingw to compile.
debug/DemoPlayer.o: In function
ZN10DemoPlayerC2EP7QWidget':
_imp___ZN9VlcCommon4argsEv’D:\NGFMS\My_Stuff\libvlc-qt_0.9.0_win64_msvc2012\examples\build-demo-player-Desktop_Qt_5_2_1_MinGW_32bit-Debug\src/../../demo-player/src/DemoPlayer.cpp:37: undefined reference to
D:\NGFMS\My_Stuff\libvlc-qt_0.9.0_win64_msvc2012\examples\build-demo-player-Desktop_Qt_5_2_1_MinGW_32bit-Debug\src/../../demo-player/src/DemoPlayer.cpp:37: undefined reference to
_imp___ZN11VlcInstanceC1ERK11QStringListP7QObject'
_imp___ZN14VlcMediaPlayerC1EP11VlcInstance’D:\NGFMS\My_Stuff\libvlc-qt_0.9.0_win64_msvc2012\examples\build-demo-player-Desktop_Qt_5_2_1_MinGW_32bit-Debug\src/../../demo-player/src/DemoPlayer.cpp:38: undefined reference to
D:\NGFMS\My_Stuff\libvlc-qt_0.9.0_win64_msvc2012\examples\build-demo-player-Desktop_Qt_5_2_1_MinGW_32bit-Debug\src/../../demo-player/src/DemoPlayer.cpp:39: undefined reference to
_imp___ZN14VlcMediaPlayer14setVideoWidgetEP16VlcVideoDelegate'
_imp___ZN14VlcWidgetVideo14setMediaPlayerEP14VlcMediaPlayer’D:\NGFMS\My_Stuff\libvlc-qt_0.9.0_win64_msvc2012\examples\build-demo-player-Desktop_Qt_5_2_1_MinGW_32bit-Debug\src/../../demo-player/src/DemoPlayer.cpp:41: undefined reference to
D:\NGFMS\My_Stuff\libvlc-qt_0.9.0_win64_msvc2012\examples\build-demo-player-Desktop_Qt_5_2_1_MinGW_32bit-Debug\src/../../demo-player/src/DemoPlayer.cpp:42: undefined reference to
_imp___ZN21VlcWidgetVolumeSlider14setMediaPlayerEP14VlcMediaPlayer'
_imp___ZN21VlcWidgetVolumeSlider9setVolumeEi’D:\NGFMS\My_Stuff\libvlc-qt_0.9.0_win64_msvc2012\examples\build-demo-player-Desktop_Qt_5_2_1_MinGW_32bit-Debug\src/../../demo-player/src/DemoPlayer.cpp:43: undefined reference to
D:\NGFMS\My_Stuff\libvlc-qt_0.9.0_win64_msvc2012\examples\build-demo-player-Desktop_Qt_5_2_1_MinGW_32bit-Debug\src/../../demo-player/src/DemoPlayer.cpp:44: undefined reference to
_imp___ZN13VlcWidgetSeek14setMediaPlayerEP14VlcMediaPlayer'
ZN10DemoPlayer9openLocalEv’:debug/DemoPlayer.o: In function
D:\NGFMS\My_Stuff\libvlc-qt_0.9.0_win64_msvc2012\examples\build-demo-player-Desktop_Qt_5_2_1_MinGW_32bit-Debug\src/../../demo-player/src/DemoPlayer.cpp:74: undefined reference to
_imp___ZN8VlcMediaC1ERK7QStringbP11VlcInstance'
_imp___ZN14VlcMediaPlayer4openEP8VlcMedia’D:\NGFMS\My_Stuff\libvlc-qt_0.9.0_win64_msvc2012\examples\build-demo-player-Desktop_Qt_5_2_1_MinGW_32bit-Debug\src/../../demo-player/src/DemoPlayer.cpp:76: undefined reference to
debug/DemoPlayer.o: In function
ZN10DemoPlayer7openUrlEv':
_imp___ZN8VlcMediaC1ERK7QStringP11VlcInstance’D:\NGFMS\My_Stuff\libvlc-qt_0.9.0_win64_msvc2012\examples\build-demo-player-Desktop_Qt_5_2_1_MinGW_32bit-Debug\src/../../demo-player/src/DemoPlayer.cpp:87: undefined reference to
D:\NGFMS\My_Stuff\libvlc-qt_0.9.0_win64_msvc2012\examples\build-demo-player-Desktop_Qt_5_2_1_MinGW_32bit-Debug\src/../../demo-player/src/DemoPlayer.cpp:89: undefined reference to
_imp___ZN14VlcMediaPlayer4openEP8VlcMedia'
ZN13Ui_DemoPlayer7setupUiEP11QMainWindow’:debug/DemoPlayer.o: In function
D:\NGFMS\My_Stuff\libvlc-qt_0.9.0_win64_msvc2012\examples\build-demo-player-Desktop_Qt_5_2_1_MinGW_32bit-Debug\src/./ui_DemoPlayer.h:81: undefined reference to
_imp___ZN14VlcWidgetVideoC1EP7QWidget'
_imp___ZN21VlcWidgetVolumeSliderC1EP7QWidget’D:\NGFMS\My_Stuff\libvlc-qt_0.9.0_win64_msvc2012\examples\build-demo-player-Desktop_Qt_5_2_1_MinGW_32bit-Debug\src/./ui_DemoPlayer.h:97: undefined reference to
D:\NGFMS\My_Stuff\libvlc-qt_0.9.0_win64_msvc2012\examples\build-demo-player-Desktop_Qt_5_2_1_MinGW_32bit-Debug\src/./ui_DemoPlayer.h:107: undefined reference to `_imp___ZN13VlcWidgetSeekC1EP7QWidget’
collect2.exe: error: ld returned 1 exit status
How to solve this error..I am using Qt 5.2.1
I have the same problem. and i have being searching for a answer for almost 2 days. please someone answer this. my project is stalled half way because i cant proceed to next parts.
Did you find any solution?
Can you please send me this project ?
Hi, is it possible to add auido in to this video streaming?
Hi, i have the same error as Johnny March 10, 2014 at 2:54 pm and can’t found the issue. Please help ^^. Thanks
Someone necessarily lend a hand to make severely articles I’d state.
This is the very first time I frequented your website page and thus far?
I amazed with the research you made to create this actual post extraordinary.
Fantastic process!
I am getting the same errors as mentioned by Raja and Johnny!
Please help!
Hi, with reference to the demo project, I have tried to create a vlc instance on my QT program. However, my program crashes at this line _instance = new VlcInstance(VlcCommon::args(), this);
Please advice. Thanks.
Hi! Great guide! But when i run the demo-player.exe the output is :
“Starting C:\Qt\libvlc-qt\src\examples\build-demo-player-Desktop_Qt_5_5_1_MinGW_32bit-Debug\src\debug\demo-player.exe…
QWidget: Must construct a QApplication before a QWidget
Invalid parameter passed to C runtime function.
Invalid parameter passed to C runtime function.
C:\Qt\libvlc-qt\src\examples\build-demo-player-Desktop_Qt_5_5_1_MinGW_32bit-Debug\src\debug\demo-player.exe exited with code 3”
How can i fix it? Thanks
Hi! Great guide! But when i run the demo-player.exe the output is :
“Starting C:\Qt\libvlc-qt\src\examples\build-demo-player-Desktop_Qt_5_5_1_MinGW_32bit-Debug\src\debug\demo-player.exe…
QWidget: Must construct a QApplication before a QWidget
Invalid parameter passed to C runtime function.
Invalid parameter passed to C runtime function.
C:\Qt\libvlc-qt\src\examples\build-demo-player-Desktop_Qt_5_5_1_MinGW_32bit-Debug\src\debug\demo-player.exe exited with code 3”.
How can i fix it?
Hi i got the same errors as johnny and raja. Please help
Hi Derek,
This web page and the associated video is great help for understanding the basics of image and video capturing, processing and displaying.
Though I have two doubts regarding this.
1) The examples shown here is capturing images or videos through BBB, but sending it to a desktop, through network communication, and displaying it in the display of desktop.Is it possible to capture images or videos through BBB, and display it on an LCD display, interfaced to BBB, through its HDMI port, by doing a little modifications in the associated scripts. For Eg: in the script file streamVideoRTP, can the line “./capture -F -o -c0|avconv -re -i – -vcodec copy -f rtp rtp://192.168.1.4:1234” be modified in someway to achieve this?
2) Will the software boneCV.cpp which includes opencv libraries works well with the latest BBB with Debian Jessie images?
Thanks & Regards,
Sajeevan.K
Hi All,
Can someone please upload the project demo-player “C:\Qt\libvlc-qt\src\examples\ there is a folder called demo-player”
I spent a lot of time searching but I couldn’t find. It will be a great help thank you.
Dear Derek Molloy,
thanks for the article.
I would like to ask you didn’t you encounter latency (there is a latency of around 1000ms) during live streaming.
<do you also have this latency? any suggestions how to kill this latency?