Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
0 parents
commit 081ef72
Showing
521 changed files
with
549,078 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
Deploy/ | ||
release/ | ||
vendor/ | ||
*.pyc |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 |
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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=¤cy_code=EUR&shipping=&tax=¬ify_url=&cmd=_donations&bn=JavaScriptButton_donate&env=www) | ||
|
||
If this plugin is useful for you, consider to donate to the author. | ||
|
||
|
||
[© All4gis 2018] | ||
|
||
|
||
|
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
.project | ||
.pydevproject | ||
Compile.bat | ||
py3-env.bat | ||
Hidden.bat | ||
*.pyc | ||
.settings/ | ||
__pycache__/ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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) |
Oops, something went wrong.