Skip to content

Commit

Permalink
Starting
Browse files Browse the repository at this point in the history
  • Loading branch information
All4Gis committed May 7, 2018
0 parents commit 081ef72
Show file tree
Hide file tree
Showing 521 changed files with 549,078 additions and 0 deletions.
4 changes: 4 additions & 0 deletions .gitignore
@@ -0,0 +1,4 @@
Deploy/
release/
vendor/
*.pyc
20 changes: 20 additions & 0 deletions .travis.yml
@@ -0,0 +1,20 @@
language: python

# sudo false implies containerized builds
sudo: false

python:
- "3.5"
- "3.6"

branches:
only:
- master

# Install dependencies
install:
- pip install -r code/requirements.txt
- pip install coveralls

script:
- python tests/test.py
674 changes: 674 additions & 0 deletions LICENSE

Large diffs are not rendered by default.

134 changes: 134 additions & 0 deletions README.md
@@ -0,0 +1,134 @@
# QGIS Full Motion Video (FMV) #

[![Build Status](https://travis-ci.org/All4Gis/QGISFMV.svg?branch=master)](https://travis-ci.org/All4Gis/QGISFMV)

![a](images/banner.png)

Plugin for QGIS > 2.99 which allows to analyze, visualize and process videos inside the QGIS environment. QGIS FMV accepts multiple video formats such as mp4, ts, avi, etc. It is also able to extract video frames, to capture the current frame, to plot bitrate and to observe the video metadata with aerial images and more. It also offers the possibility to create reports with video metadata.

Standards supported:

- "UAS Datalink Local Set", [ST0601.11](http://www.gwg.nga.mil/misb/docs/standards/ST0601.11.pdf)


## Motivation

This development arises after observing that there was no free solution for the metadata extraction and video analysis in real time. All solutions are APIs or private tools such as
[Esri](http://www.esri.com/products/arcgis-capabilities/imagery/full-motion-video),
for this reason, I decided to develop this open source project and, this way, offer this open source alternative to the QGIS community.


## Dependencies

* [FFMPEG](http://ffmpeg.org/download.html) : After downloading it, you should store it in an accessible folder and modify `fmvConfig.py` with the corresponding path.

* [OpenCV](https://opencv.org/) : `python3 -m pip install opencv-python`

* [MatPlotLib](https://matplotlib.org/) : `python3 -m pip install matplotlib`

* [Klvdata](https://github.com/paretech/klvdata) : customized version of this library.

The plugin install automatically this requisites,but you can install it using:

`python3 -m pip install -r requirements.txt`


## For show video

To see the video you need:

- Linux: `sudo apt-get install gst123` (install GStreamer dependencies)
- Window: install LAV Filters (install <a href="https://github.com/Nevcairiel/LAVFilters/releases" target="_blank">DirectShow Media Decoders</a>)


## Usage

The use of this application is simple. It only needs a video with metadata, like for example one of these [videos](http://samples.ffmpeg.org/MPEG2/mpegts-klv/) or [these (ESRI copyright)](https://drive.google.com/open?id=1-B2uaW7_cfYZohZYFozrgBhIaztI1MSP)
Then, open the plugin where the "video manager" will be shown, open the video and with a double-click, the "player" will be opened.
At this moment, you will see that new shapes have been added and you will see the platform position, metadata, etc.


## Recommended readings

For more information about the Unmanned Air System (UAS) metadata from STANAG 4609

![a](images/demux.png)

* <a href="http://www.gwg.nga.mil/misb/faq.html" target="_blank">FAQ</a>
* <a href="http://www.gwg.nga.mil/misb/docs/nato_docs/STANAG_4609_Ed3.pdf" target="_blank">STANAG_4609_Ed3</a>
* <a href="http://www.gwg.nga.mil/misb/docs/standards/ST0601.11.pdf" target="_blank">ST0601.11</a>
* <a href="http://www.gwg.nga.mil/misb/docs/standards/ST0902.1.pdf" target="_blank">ST0902.1</a>

## Installation

The installation can be done from the executable if it is in windows or from the zip


## Screenshots

![a](images/Screenshot0.png)


## Features

- Convert videos to other format
- Extract metadata from video file
- Show Platform,trajectory and beams position in a QGIS
- Possibility of extracting parts of the video
- Change of color, contrast, etc. of the video
- Capture of the current frame
- Extraction of all frames of the video
- Extrac lon/lat cursor coordinates
- Apply sobel filters, edge detection ...


## TODO

* Open videos via UDP / TCP
* Possibility of drawing on the video and create shapes

....


## Contributing

Contributions are welcome!

Want to work on the project? Any kind of contribution is welcome!

Follow these steps:

Fork the project.
Create a new branch.
Make your changes and write tests ( if is possible).
Commit your changes to the new branch.
Send a pull request.

And thanks for your code.


## License

GNU Public License (GPL) Version 3

**Free Software, Hell Yeah!**


## Contributors List

* <a href="https://all4gis.github.io//" target="_blank">Fran Raga</a>


## Donations

Want to buy me a beer (or gadget)? Please use Paypal button on the project page, [![Donate](https://img.shields.io/badge/Donate-PayPal-green.svg)](https://www.paypal.me/all4gis) , or contact me directly.

[![paypal](https://www.paypalobjects.com/en_US/i/btn/btn_donateCC_LG.gif)](https://www.paypal.com/cgi-bin/webscr?button=donate&business=5329N9XX4WQHY&item_name=QGIS+FMV+Plugin&quantity=&amount=&currency_code=EUR&shipping=&tax=&notify_url=&cmd=_donations&bn=JavaScriptButton_donate&env=www)

If this plugin is useful for you, consider to donate to the author.


[© All4gis 2018]



Binary file added banner.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
8 changes: 8 additions & 0 deletions code/.gitignore
@@ -0,0 +1,8 @@
.project
.pydevproject
Compile.bat
py3-env.bat
Hidden.bat
*.pyc
.settings/
__pycache__/
108 changes: 108 additions & 0 deletions code/QgsFmv.py
@@ -0,0 +1,108 @@
# -*- coding: utf-8 -*-
"""
/***************************************************************************
QGIS Full Motion Video (FMV)
A QGIS plugin
Analyze and manage georeferenced video data in your maps
-------------------
begin : 2018-03-13
copyright : (C) 2018 All4Gis.
email : franka1986@gmail.com
***************************************************************************/
/***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
# any later version. *
* *
***************************************************************************/
"""
import os.path

from PyQt5.QtCore import QSettings, QCoreApplication, QTranslator, qVersion
from PyQt5.QtGui import QIcon
from PyQt5.QtWidgets import QAction
from QGIS_FMV.player.QgsFmvAbout import FmvAbout
from QGIS_FMV.player.QgsManager import FmvManager
from QGIS_FMV.utils.QgsFmvLog import log
from QGIS_FMV.utils.QgsFmvUtils import install_pip_requirements, install_requirements_copy
from QGIS_FMV.utils.QgsUtils import QgsUtils as qgsu
from qgis.PyQt.QtCore import Qt
from qgis.core import QgsApplication
from qgis.gui import QgsMessageBar


try:
from pydevd import *
except ImportError:
None


class Fmv:
""" Main Class """

def __init__(self, iface):
""" Contructor """
self.iface = iface
log.initLogging()

self.plugin_dir = os.path.dirname(__file__)
locale = QSettings().value("locale//userLocale")[0:2]
localePath = os.path.join(
self.plugin_dir, 'i18n', 'qgisfmv_{}.qm'.format(locale))
if os.path.exists(localePath):
self.translator = QTranslator()
self.translator.load(localePath)

if qVersion() > '5.9.0':
QCoreApplication.installTranslator(self.translator)

self._FMVManager = None

def initGui(self):
''' FMV Action '''
self.actionFMV = QAction(QIcon(":/imgFMV/images/icon.png"), u"FMV", self.iface.mainWindow(),
statusTip=QCoreApplication.translate(
"Fmv", "Show Video Manager"),
triggered=self.run)
self.iface.addToolBarIcon(self.actionFMV)
self.iface.addPluginToMenu(QCoreApplication.translate(
"Fmv", "Full Motion Video (FMV)"), self.actionFMV)

''' About Action '''
self.actionAbout = QAction(QIcon(":/imgFMV/images/Information.png"), u"About", self.iface.mainWindow(),
statusTip=QCoreApplication.translate(
"Fmv", "Show About FMV"),
triggered=self.About)

self.iface.addPluginToMenu(QCoreApplication.translate(
"Fmv", "Full Motion Video (FMV)"), self.actionAbout)

def unload(self):
''' Unload Plugin '''
self.iface.removePluginMenu(QCoreApplication.translate(
"Fmv", "Full Motion Video (FMV)"), self.actionFMV)
self.iface.removePluginMenu(QCoreApplication.translate(
"Fmv", "Full Motion Video (FMV)"), self.actionAbout)
self.iface.removeToolBarIcon(self.actionFMV)
log.removeLogging()

def About(self):
''' Show About Dialog '''
self.About = FmvAbout()
self.About.setWindowFlags(Qt.Window | Qt.WindowCloseButtonHint)
self.About.exec_()

def run(self):
''' Run method '''
if self._FMVManager is None:
self.CreateDockWidget()

def CreateDockWidget(self):
''' Show Manager Video Dock '''
self._FMVManager = FmvManager(self.iface)
self.iface.addDockWidget(Qt.BottomDockWidgetArea, self._FMVManager)
42 changes: 42 additions & 0 deletions code/__init__.py
@@ -0,0 +1,42 @@
# -*- coding: utf-8 -*-
import sys


# from PyQt5.QtCore import QCoreApplication
# from QGIS_FMV.utils.QgsUtils import QgsUtils as qgsu
try:
sys.path.append(
"D:\eclipse\plugins\org.python.pydev_6.2.0.201711281614\pysrc")
except ImportError:
None

try:
sys.path.append(
"D:\eclipse\plugins\org.python.pydev_5.9.2.201708151115\pysrc")
except ImportError:
None

# try:
#
# try:
# import pip
# except ImportError:
# raise
# try:
# import cv2
# except Exception as e:
# pip.main(["install", "opencv-python==3.4.0.12"])
#
# try:
# import matplotlib.pyplot as matplot
# except Exception as e:
# pip.main(["install", "matplotlib==2.0.0"])
#
# except Exception as e:
# qgsu.showUserAndQgsFmvLogMessage(QCoreApplication.translate(
# "Fmv", "Error: Missing Requeriments packages."))


def classFactory(iface):
from .QgsFmv import Fmv
return Fmv(iface)

0 comments on commit 081ef72

Please sign in to comment.