emericg / MiniVideo

A multimedia framework developed from scratch in C/C++, bundled with test programs and a neat media analyzer.
GNU Lesser General Public License v3.0
84 stars 13 forks source link

mini_analyser - qt #2

Closed bertbeck closed 6 years ago

bertbeck commented 6 years ago

Does QT need to be installed to build mini_analyser? I installed QT community version and tried to build mini_analyser but I get the error: Could not find app bundle "bin/mini_analyser.app"

emericg commented 6 years ago

Hi bertbeck, Yes you need to have Qt installed on your system. You can use "Qt Creator" embedded with the packages available on Qt website and just load the MiniVideo.pro from this repository, it should take care of everything else.

Can you tell me a litlle bit more about your platform and the steps you did before the error you mentionned?

bertbeck commented 6 years ago

I'm using a Mac (MacOS Sierra). I did a git clone, was able to build the minivido using:

cd minivideo/build/ $ cmake .. $ make

this worked fine.

I then installed QT community but could not do a qmake.

From your instructions - I used QT Creator to open MiniVideo.pro and then did a build. This created bin/mini_analyser.app.

I did a cd .. and then sudo make install - but nothing installed

It took me a while to realize that I could click on /mini_analyser.app in the bin directory and run it

It seems to work now. You should include these steps in your instructions.

thanks for the fast response!

How good is your h.264 decoder as compared to ffmpeg or other open source decoders?

Great project!

I'm working on an rtsp client/server in C/C++ and controls for osx/ios and android - and react native/flutter

Bert

On Sun, Jan 14, 2018 at 3:39 AM, Emeric notifications@github.com wrote:

Hi bertbeck, Yes you need to have Qt installed on your system. You can use "Qt Creator" embedded with the packages available on Qt website and just load the MiniVideo.pro from this repository, it should take care of everything else.

Can you tell me a litlle bit more about your platform and the steps you did before the error you mentionned?

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/emericg/MiniVideo/issues/2#issuecomment-357502646, or mute the thread https://github.com/notifications/unsubscribe-auth/AF37QjPxEQrw6uACiSaWpRVe10M4QdwUks5tKdlxgaJpZM4RdgWd .

emericg commented 6 years ago

Yes building the full solution with qmake produce one .app bundle per application. You must run the macdeployqt utility on these .app before they are fully self contained and ready to be shared though. I'll make a wiki page about that instead of a simple entry in the README. You must put the Qt directory in your path before you can use qmake of macdeployqt directly in your terminal. export PATH="/Users/emericgrange/Dev/Frameworks/Qt510/5.10.0/clang_64/bin:$PATH"

The H.264 decoder is absolutely terrible compared to anything that's out there. First it only decodes I frames and its still got at least one bug that prevent many videos from being decoded. It's also slow. But still, it's still working pretty well for an internship project written 8 years ago! You can enable I frame preview directly in mini_analyser, by changing a line in "mini_analyser/src/tabcontainer.cpp": #define THUMBNAILS_ENABLED 1

The goal has never be to make it fully featured, it's kinda pointless. I mostly do container analysis now, maybe in the futur I'll do H.264 video analysis too, the decoder already keeps track of all of the intermediate decoding steps, it just needs an UI.

bertbeck commented 6 years ago

Thanks Emeric!

I am very impressed on the results of your internship!

What is the best open source h.264 decoder to use?

From what you have learned so far - is it possible to resize the frame size an h.264 stream by a factor of 2, 4, 8 or 16 without have to significantly decode and recode it? Or at least with low cpu overhead? I am thinking there might some efficient way of looking at the macro blocks and aggregating them to create a smaller frame. Do you do something like for creating thumbnails?

Bert

On Mon, Jan 15, 2018 at 3:53 AM, Emeric notifications@github.com wrote:

Yes building the full solution with qmake produce one .app bundle per application. You must run the macdeployqt utility on these .app before they are fully self contained and ready to be shared though. I'll make a wiki page about that instead of a simple entry in the README. You must put the Qt directory in your path before you can use qmake of macdeployqt directly in your terminal. export PATH="/Users/emericgrange/Dev/Frameworks/Qt510/5.10.0/clang_ 64/bin:$PATH"

The H.264 decoder is absolutely terrible compared to anything that's out there. First it only decodes I frames and its still got at least one bug that prevent many videos from being decoded. It's also slow. But still, it's still working pretty well for an internship project written 8 years ago! You can enable I frame preview directly in mini_analyser, by changing a line in "mini_analyser/src/tabcontainer.cpp":

define THUMBNAILS_ENABLED 1

The goal has never be to make it fully featured, it's kinda pointless. I mostly do container analysis now, maybe in the futur I'll do H.264 video analysis too, the decoder already keeps track of all of the intermediate decoding steps, it just needs an UI.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/emericg/MiniVideo/issues/2#issuecomment-357648823, or mute the thread https://github.com/notifications/unsubscribe-auth/AF37QlMBZ8e9dLTPEFwDPbwsJtyr_Auhks5tKy40gaJpZM4RdgWd .

emericg commented 6 years ago

Most of what you see now has been done after the internship though, only the H.264 decoder has stay mostly the same.

Your safest bet would be the ffmpeg decoder, its widely available, has good feature set and optimized for every platform you can think of. Plus I don't know that many decoder available at all.

Unfortunalty you cannot decode an half or quarter H.264 frame, only a full frame. If you touch anything inside the frame you'll have to reencode. You are probably thinking of wavelet based codec, which have this feature built in, but aren't really competitive compression wise unfortunatly. With H.264 you can only skip the deblocking filter, and that has an impact on quality. Ffmpeg has other tricks but they all come with lesser quality or just holes in the decoded picture! H.264 does have an 'SVC' extension (https://en.wikipedia.org/wiki/Scalable_Video_Coding) but I honestly wouldn't recommand to anyone. Poor support from most (if not all) players and huge complexity. But that's been done for streaming/conferencing purposes so you might be interested in having a look.

I don't do anything to my thumbnails no, not even a linear filter to scale them before png/jpeg compression ^^

bertbeck commented 6 years ago

Interesting. I surely thought there would be a way to do this. I'll keep investigating. I'm working with ffmpeg now - seems big and quality seems to change with different/recent releases. I don't like that.

What do you do for work?

Have you looked at AV1? It's slow on encoding - but looks promising https://www.xda-developers.com/av1-future-video-codecs-google-hevc/

Bert

On Mon, Jan 15, 2018 at 11:24 AM, Emeric notifications@github.com wrote:

Most of what you see now has been done after the internship though, only the H.264 decoder has stay mostly the same.

Your safest bet would be the ffmpeg decoder, its widely available, has good feature set and optimized for every platform you can think of. Plus I don't know that many decoder available at all.

Unfortunalty you cannot decode an half or quarter H.264 frame, only a full frame. If you touch anything inside the frame you'll have to reencode. You are probably thinking of wavelet based codec, which have this feature built in, but aren't really competitive compression wise unfortunatly. With H.264 you can only skip the deblocking filter, and that has an impact on quality. Ffmpeg has other tricks but they all come with lesser quality or just holes in the decoded picture! H.264 does have an 'SVC' extension (https://en.wikipedia.org/ wiki/Scalable_Video_Coding) but I honestly wouldn't recommand to anyone. Poor support from most (if not all) players and huge complexity. But that's been done for streaming/conferencing purposes so you might be interested in having a look.

I don't do anything to my thumbnails no, not even a linear filter to scale them before png/jpeg compression ^^

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/emericg/MiniVideo/issues/2#issuecomment-357757238, or mute the thread https://github.com/notifications/unsubscribe-auth/AF37Qhbp_-9cem6feYF7ls2amvlpJY_-ks5tK5flgaJpZM4RdgWd .

emericg commented 6 years ago

I'm working on multimedia backends at GoPro. Sure I'm following AV1 but we'll start having a real look at it... once it will be properly specified and released ^^

I'll close this ticket now that you managed to build the software. And congratulations for being the first person to open a ticket and give feedback on mini_analyser, much appreciated ;-)