deffcode
Advanced tools
+142
-141
| Metadata-Version: 2.1 | ||
| Name: deffcode | ||
| Version: 0.2.4 | ||
| Version: 0.2.5 | ||
| Summary: A cross-platform High-performance & Flexible Real-time Video Frames Decoder in Python. | ||
@@ -35,3 +35,3 @@ Home-page: https://abhitronix.github.io/deffcode | ||
| <!-- | ||
| =============================================== | ||
| DeFFcode library source-code is deployed under the Apache 2.0 License: | ||
@@ -45,3 +45,3 @@ | ||
| http://www.apache.org/licenses/LICENSE-2.0 | ||
| http://www.apache.org/licenses/LICENSE-2.0 | ||
@@ -57,5 +57,5 @@ Unless required by applicable law or agreed to in writing, software | ||
| <div align="center"> | ||
|  | ||
|  | ||
@@ -66,14 +66,13 @@ </div> | ||
| [![Build Status][github-cli]][github-flow] [![Codecov branch][codecov]][code] [![Azure DevOps builds (branch)][azure-badge]][azure-pipeline] | ||
| [![Build Status][github-cli]][github-flow] [![Codecov branch][codecov]][code] [![Azure DevOps builds (branch)][azure-badge]][azure-pipeline] | ||
| [![Glitter chat][gitter-bagde]][gitter] [![Build Status][appveyor]][app] [![PyPi version][pypi-badge]][pypi] | ||
| [![Glitter chat][gitter-bagde]][gitter] [![Build Status][appveyor]][app] [![PyPi version][pypi-badge]][pypi] | ||
| [![Code Style][black-badge]][black] | ||
| --- | ||
| ---- | ||
| [Releases][release] | [Recipes][recipes] | [Documentation][docs] | [Installation][installation-notes] | [License](https://github.com/abhiTronix/deffcode#copyright) | ||
| ---- | ||
| --- | ||
@@ -113,3 +112,3 @@ </div> | ||
| - Out-of-the-box support for all prominent Computer Vision libraries. | ||
| - Cross-platform, runs on Python 3.7+, and easy to install. | ||
| - Cross-platform, runs on Python 3.7+, and easy to install. | ||
@@ -150,3 +149,3 @@ <!-- | ||
| <div align="center"> | ||
| <a href="https://abhitronix.github.io/deffcode/latest/recipes/basic/transcode-live-frames-simplegraphs/#transcoding-trimmed-and-reversed-video"><img src="https://abhitronix.github.io/deffcode/latest/assets/gifs/bigbuckbunny_reversed.gif" alt="Big Buck Bunny Reversed" title="Click to view source code" width="70%" /> </a> | ||
| <a href="https://abhitronix.github.io/deffcode/latest/recipes/basic/transcode-live-frames-simplegraphs/#transcoding-trimmed-and-reversed-video"><img src="https://user-images.githubusercontent.com/34266896/211499038-46cc246d-843b-4c89-8e9a-5536395da9e7.gif" title="Click to view source code" width="70%" /> </a> | ||
| <br> | ||
@@ -163,3 +162,4 @@ <sub><i>Big Buck Bunny Reversed using Live Simple Filtergraph</i></sub> | ||
| - [Capturing and Previewing BGR frames from a video file][capturing-and-previewing-bgr-frames-from-a-video-file] _(OpenCV Support)_ | ||
| - [Playing with any other FFmpeg pixel formats][capturing-and-previewing-bgr-frames-from-a-video-file] | ||
| - [Playing with any other FFmpeg pixel formats][playing-with-any-other-ffmpeg-pixel-formats] | ||
| - [Capturing and Previewing frames from a Looping Video][capturing-and-previewing-frames-from-a-looping-video] | ||
| - [Enumerating all Camera Devices with Indexes][enumerating-all-camera-devices-with-indexes] | ||
@@ -182,3 +182,3 @@ - [Capturing and Previewing frames from a Camera using Indexes][capturing-and-previewing-frames-from-a-camera-using-indexes] | ||
| - [Transcoding Rotated video (with `rotate` filter)][transcoding-rotated-video-with-rotate-filter] | ||
| - [Transcoding Rotated video (with `transpose` filter)][transcoding-rotated-video-with-transpose-filter] | ||
| - [Transcoding Rotated video (with `transpose` filter)][transcoding-rotated-video-with-transpose-filter] | ||
| - [Transcoding Horizontally flipped and Scaled video][transcoding-horizontally-flipped-and-scaled-video] | ||
@@ -199,3 +199,2 @@ - [Extracting Key-frames as PNG image][extracting-key-frames-as-png-image] | ||
| ### B. [**Advanced Recipes 🥐**][advanced-recipes]: _Recipes to take your skills to the next level._ | ||
@@ -205,3 +204,3 @@ | ||
| <p align="center"> | ||
| <a href="https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-live-virtual-sources/#generate-and-decode-frames-from-mandelbrot-test-pattern-with-vectorscope-waveforms"><img src="https://abhitronix.github.io/deffcode/latest/assets/gifs/mandelbrot_vectorscope_waveforms.gif" alt="mandelbrot test pattern" title="Click to view source code" width="70%" /></a> | ||
| <a href="https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-live-virtual-sources/#generate-and-decode-frames-from-mandelbrot-test-pattern-with-vectorscope-waveforms"><img src="https://user-images.githubusercontent.com/34266896/211498819-13fe0487-e843-4315-b4f3-c881de6c8c4a.gif" alt="mandelbrot test pattern" title="Click to view source code" width="70%" /></a> | ||
| <br> | ||
@@ -223,3 +222,4 @@ <sub><i>Live Mandelbrot pattern with a Vectorscope & two Waveforms</i></sub> | ||
| - [Capturing and Previewing frames from your Desktop][capturing-and-previewing-frames-from-your-desktop] _(Screen Recording)_ | ||
| - [GPU-accelerated Hardware-based Video Decoding][gpu-accelerated-hardware-based-video-decoding] | ||
| - [CUVID-accelerated Hardware-based Video Decoding and Previewing][cuvid-accelerated-hardware-based-video-decoding-and-previewing] | ||
| - [CUDA-accelerated Hardware-based Video Decoding and Previewing][cuda-accelerated-hardware-based-video-decoding-and-previewing] | ||
@@ -234,6 +234,8 @@ </details> | ||
| - [Transcoding video art with YUV Bitplane Visualization][transcoding-video-art-with-yuv-bitplane-visualization] | ||
| - [Transcoding video art with Jetcolor effect][transcoding-video-art-with-jetcolor-effect] | ||
| - [Transcoding video art with Jetcolor effect][transcoding-video-art-with-jetcolor-effect] | ||
| - [Transcoding video art with Ghosting effect][transcoding-video-art-with-ghosting-effect] | ||
| - [Transcoding video art with Pixelation effect][transcoding-video-art-with-pixelation-effect] | ||
| - [GPU-accelerated Hardware-based Video Transcoding with WriteGear API][gpu-accelerated-hardware-based-video-transcoding-with-writegear-api] | ||
| - [CUDA-accelerated Video Transcoding with OpenCV's VideoWriter API][cuda-accelerated-video-transcoding-with-opencvs-videowriter-api] | ||
| - [CUDA-NVENC-accelerated Video Transcoding with WriteGear API][cuda-nvenc-accelerated-video-transcoding-with-writegear-api] | ||
| - [CUDA-NVENC-accelerated End-to-end Lossless Video Transcoding with WriteGear API][cuda-nvenc-accelerated-end-to-end-lossless-video-transcoding-with-writegear-api] | ||
@@ -258,3 +260,3 @@ </details> | ||
| ### A. FFdecoder API | ||
| ### A. FFdecoder API | ||
@@ -274,3 +276,3 @@ The primary function of [**FFdecoder API**][ffdecoder-api] is to **decode 24-bit RGB video frames** from the given source: | ||
| for frame in decoder.generateFrame(): | ||
| # lets print its shape | ||
@@ -283,3 +285,3 @@ print(frame.shape) # (1080, 1920, 3) | ||
| ### B. Sourcer API | ||
| ### B. Sourcer API | ||
@@ -302,27 +304,24 @@ The primary function of [**Sourcer API**][sourcer-api] is to **gather metadata information from all multimedia streams available** in the given source: | ||
| ```json | ||
| { | ||
| "ffmpeg_binary_path": "C:\\Users\\foo\\AppData\\Local\\Temp\\ffmpeg-static-win64-gpl/bin/ffmpeg.exe", | ||
| "source": "https://abhitronix.github.io/html/Big_Buck_Bunny_1080_10s_1MB.mp4", | ||
| "source_extension": ".mp4", | ||
| "source_video_resolution": [ | ||
| 1920, | ||
| 1080 | ||
| ], | ||
| "source_video_framerate": 60.0, | ||
| "source_video_pixfmt": "yuv420p", | ||
| "source_video_decoder": "h264", | ||
| "source_duration_sec": 10.0, | ||
| "approx_video_nframes": 600, | ||
| "source_video_bitrate": "832k", | ||
| "source_audio_bitrate": "", | ||
| "source_audio_samplerate": "", | ||
| "source_has_video": true, | ||
| "source_has_audio": false, | ||
| "source_has_image_sequence": false | ||
| } | ||
| ``` | ||
| ```json | ||
| { | ||
| "ffmpeg_binary_path": "C:\\Users\\foo\\AppData\\Local\\Temp\\ffmpeg-static-win64-gpl/bin/ffmpeg.exe", | ||
| "source": "https://abhitronix.github.io/html/Big_Buck_Bunny_1080_10s_1MB.mp4", | ||
| "source_extension": ".mp4", | ||
| "source_video_resolution": [1920, 1080], | ||
| "source_video_framerate": 60.0, | ||
| "source_video_pixfmt": "yuv420p", | ||
| "source_video_decoder": "h264", | ||
| "source_duration_sec": 10.0, | ||
| "approx_video_nframes": 600, | ||
| "source_video_bitrate": "832k", | ||
| "source_audio_bitrate": "", | ||
| "source_audio_samplerate": "", | ||
| "source_has_video": true, | ||
| "source_has_audio": false, | ||
| "source_has_image_sequence": false | ||
| } | ||
| ``` | ||
| </details> | ||
| | ||
@@ -332,6 +331,5 @@ | ||
| # Contributions | ||
| > We're happy to meet new contributors💗 | ||
| > We're happy to meet new contributors💗 | ||
@@ -357,3 +355,2 @@ We welcome your contributions to help us improve and extend this project. If you want to get involved with VidGear development, checkout the **[Contribution Guidelines ▶️][contribute]** | ||
| | ||
@@ -363,4 +360,2 @@ | ||
| # Citation | ||
@@ -370,14 +365,14 @@ | ||
| [](https://doi.org/10.5281/zenodo.6984364) | ||
| [](https://doi.org/10.5281/zenodo.7155399) | ||
| ```BibTeX | ||
| @software{deffcode, | ||
| author = {Abhishek Thakur}, | ||
| title = {abhiTronix/deffcode: v0.2.3}, | ||
| month = aug, | ||
| author = {Abhishek Singh Thakur}, | ||
| title = {abhiTronix/deffcode: v0.2.4}, | ||
| month = oct, | ||
| year = 2022, | ||
| publisher = {Zenodo}, | ||
| version = {v0.2.3}, | ||
| doi = {10.5281/zenodo.6984364}, | ||
| url = {https://doi.org/10.5281/zenodo.6984364} | ||
| version = {v0.2.4}, | ||
| doi = {10.5281/zenodo.7155399}, | ||
| url = {https://doi.org/10.5281/zenodo.7155399} | ||
| } | ||
@@ -396,63 +391,65 @@ ``` | ||
| <!-- | ||
| CI Badges | ||
| --> | ||
| [appveyor]:https://img.shields.io/appveyor/ci/abhitronix/deffcode.svg?style=for-the-badge&logo=appveyor | ||
| [codecov]:https://img.shields.io/codecov/c/gh/abhiTronix/deffcode?logo=codecov&style=for-the-badge&token=zrES4mwVKe | ||
| [github-cli]:https://img.shields.io/github/workflow/status/abhiTronix/deffcode/GitHub%20Action%20workflow%20for%20Linux?style=for-the-badge&logo=data:image/svg%2bxml;base64,PHN2ZyB3aWR0aD0iNDgiIGhlaWdodD0iNDgiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMTAgMWE5IDkgMCAwMTkgOSA5IDkgMCAwMS05IDkgOSA5IDAgMDEtOS05IDkgOSAwIDAxOS05ek0yMyAxOWE2IDYgMCAxMTAgMTIgNiA2IDAgMDEwLTEyek0yMyAzNWE2IDYgMCAxMTAgMTIgNiA2IDAgMDEwLTEyeiIgc3Ryb2tlPSJ2YXIoLS1jb2xvci1tYXJrZXRpbmctaWNvbi1wcmltYXJ5LCAjMjA4OEZGKSIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz48cGF0aCBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00MSAzNWE2IDYgMCAxMTAgMTIgNiA2IDAgMDEwLTEyeiIgc3Ryb2tlPSJ2YXIoLS1jb2xvci1tYXJrZXRpbmctaWNvbi1zZWNvbmRhcnksICM3OUI4RkYpIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPjxwYXRoIGQ9Ik0yNS4wMzcgMjMuNjA3bC0zLjA3IDMuMDY1LTEuNDktMS40ODUiIHN0cm9rZT0idmFyKC0tY29sb3ItbWFya2V0aW5nLWljb24tcHJpbWFyeSwgIzIwODhGRikiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+PHBhdGggY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNNDEgMTlhNiA2IDAgMTEwIDEyIDYgNiAwIDAxMC0xMnoiIHN0cm9rZT0idmFyKC0tY29sb3ItbWFya2V0aW5nLWljb24tcHJpbWFyeSwgIzIwODhGRikiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+PHBhdGggZD0iTTQzLjAzNiAyMy42MDdsLTMuMDY5IDMuMDY1LTEuNDktMS40ODVNNyA2LjgxMmExIDEgMCAwMTEuNTMzLS44NDZsNS4xMTMgMy4yMmExIDEgMCAwMS0uMDA2IDEuNjk3bC01LjExMyAzLjE3QTEgMSAwIDAxNyAxMy4yMDNWNi44MTN6TTkgMTl2MTVjMCAzLjg2NiAzLjE3NyA3IDcgN2gxIiBzdHJva2U9InZhcigtLWNvbG9yLW1hcmtldGluZy1pY29uLXByaW1hcnksICMyMDg4RkYpIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPjxwYXRoIGQ9Ik0xNi45NDkgMjZhMSAxIDAgMTAwLTJ2MnpNOCAxOS4wMzVBNi45NjUgNi45NjUgMCAwMDE0Ljk2NSAyNnYtMkE0Ljk2NSA0Ljk2NSAwIDAxMTAgMTkuMDM1SDh6TTE0Ljk2NSAyNmgxLjk4NHYtMmgtMS45ODR2MnoiIGZpbGw9InZhcigtLWNvbG9yLW1hcmtldGluZy1pY29uLXByaW1hcnksICMyMDg4RkYpIi8+PHBhdGggZD0iTTI5LjA1NSAyNWg1Ljk0NCIgc3Ryb2tlPSJ2YXIoLS1jb2xvci1tYXJrZXRpbmctaWNvbi1wcmltYXJ5LCAjMjA4OEZGKSIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTIxIDQwYTEgMSAwIDExLS4wMDEgMi4wMDFBMSAxIDAgMDEyMSA0MHpNMjUgNDBhMSAxIDAgMTEtLjAwMSAyLjAwMUExIDEgMCAwMTI1IDQweiIgZmlsbD0idmFyKC0tY29sb3ItbWFya2V0aW5nLWljb24tc2Vjb25kYXJ5LCAjNzlCOEZGKSIvPjxwYXRoIGQ9Ik0zNC4wMDUgNDEuMDA3bC0xLjAxMy4wMzMiIHN0cm9rZT0idmFyKC0tY29sb3ItbWFya2V0aW5nLWljb24tc2Vjb25kYXJ5LCAjNzlCOEZGKSIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiLz48L3N2Zz4= | ||
| [prs-badge]:https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=for-the-badge&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAABC0lEQVRYhdWVPQoCMRCFX6HY2ghaiZUXsLW0EDyBrbWtN/EUHsHTWFnYyCL4gxibVZZlZzKTnWz0QZpk5r0vIdkF/kBPAMOKeddE+CQPKoc5Yt5cTjBMdQSwDQToWgBJAn3jmhqgltapAV6E6b5U17MGGAUaUj07TficMfIBZDV6vxowBm1BP9WbSQE4o5h9IjPJmy73TEPDDxVmoZdQrQ5jRhly9Q8tgMUXkIIWn0oG4GYQfAXQzz1PGoCiQndM7b4RgJay/h7zBLT3hASgoKjamQJMreKf0gfuAGyYtXEIAKcL/Dss15iq6ohXghozLYiAMxPuACwtIT4yeQUxAaLrZwAoqGRKGk7qDSYTfYQ8LuYnAAAAAElFTkSuQmCC | ||
| [azure-badge]:https://img.shields.io/azure-devops/build/abhiuna12/942b3b13-d745-49e9-8d7d-b3918ff43ac2/3/master?logo=azure-pipelines&style=for-the-badge | ||
| [pypi-badge]:https://img.shields.io/pypi/v/deffcode.svg?style=for-the-badge&logo=pypi | ||
| [gitter-bagde]:https://img.shields.io/badge/Chat-Gitter-blueviolet.svg?style=for-the-badge&logo=gitter | ||
| [Coffee-badge]:https://abhitronix.github.io/img/deffcode/orange_img.png | ||
| [kofi-badge]:https://www.ko-fi.com/img/githubbutton_sm.svg | ||
| [black-badge]:https://img.shields.io/badge/code%20style-black-000000.svg?style=for-the-badge&logo=github | ||
| [appveyor]: https://img.shields.io/appveyor/ci/abhitronix/deffcode.svg?style=for-the-badge&logo=appveyor | ||
| [codecov]: https://img.shields.io/codecov/c/gh/abhiTronix/deffcode?logo=codecov&style=for-the-badge&token=zrES4mwVKe | ||
| [github-cli]: https://img.shields.io/github/actions/workflow/status/abhiTronix/deffcode/.github/workflows/CIlinux.yml?style=for-the-badge&logo=data:image/svg%2bxml;base64,PHN2ZyB3aWR0aD0iNDgiIGhlaWdodD0iNDgiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMTAgMWE5IDkgMCAwMTkgOSA5IDkgMCAwMS05IDkgOSA5IDAgMDEtOS05IDkgOSAwIDAxOS05ek0yMyAxOWE2IDYgMCAxMTAgMTIgNiA2IDAgMDEwLTEyek0yMyAzNWE2IDYgMCAxMTAgMTIgNiA2IDAgMDEwLTEyeiIgc3Ryb2tlPSJ2YXIoLS1jb2xvci1tYXJrZXRpbmctaWNvbi1wcmltYXJ5LCAjMjA4OEZGKSIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz48cGF0aCBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00MSAzNWE2IDYgMCAxMTAgMTIgNiA2IDAgMDEwLTEyeiIgc3Ryb2tlPSJ2YXIoLS1jb2xvci1tYXJrZXRpbmctaWNvbi1zZWNvbmRhcnksICM3OUI4RkYpIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPjxwYXRoIGQ9Ik0yNS4wMzcgMjMuNjA3bC0zLjA3IDMuMDY1LTEuNDktMS40ODUiIHN0cm9rZT0idmFyKC0tY29sb3ItbWFya2V0aW5nLWljb24tcHJpbWFyeSwgIzIwODhGRikiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+PHBhdGggY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNNDEgMTlhNiA2IDAgMTEwIDEyIDYgNiAwIDAxMC0xMnoiIHN0cm9rZT0idmFyKC0tY29sb3ItbWFya2V0aW5nLWljb24tcHJpbWFyeSwgIzIwODhGRikiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+PHBhdGggZD0iTTQzLjAzNiAyMy42MDdsLTMuMDY5IDMuMDY1LTEuNDktMS40ODVNNyA2LjgxMmExIDEgMCAwMTEuNTMzLS44NDZsNS4xMTMgMy4yMmExIDEgMCAwMS0uMDA2IDEuNjk3bC01LjExMyAzLjE3QTEgMSAwIDAxNyAxMy4yMDNWNi44MTN6TTkgMTl2MTVjMCAzLjg2NiAzLjE3NyA3IDcgN2gxIiBzdHJva2U9InZhcigtLWNvbG9yLW1hcmtldGluZy1pY29uLXByaW1hcnksICMyMDg4RkYpIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPjxwYXRoIGQ9Ik0xNi45NDkgMjZhMSAxIDAgMTAwLTJ2MnpNOCAxOS4wMzVBNi45NjUgNi45NjUgMCAwMDE0Ljk2NSAyNnYtMkE0Ljk2NSA0Ljk2NSAwIDAxMTAgMTkuMDM1SDh6TTE0Ljk2NSAyNmgxLjk4NHYtMmgtMS45ODR2MnoiIGZpbGw9InZhcigtLWNvbG9yLW1hcmtldGluZy1pY29uLXByaW1hcnksICMyMDg4RkYpIi8+PHBhdGggZD0iTTI5LjA1NSAyNWg1Ljk0NCIgc3Ryb2tlPSJ2YXIoLS1jb2xvci1tYXJrZXRpbmctaWNvbi1wcmltYXJ5LCAjMjA4OEZGKSIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTIxIDQwYTEgMSAwIDExLS4wMDEgMi4wMDFBMSAxIDAgMDEyMSA0MHpNMjUgNDBhMSAxIDAgMTEtLjAwMSAyLjAwMUExIDEgMCAwMTI1IDQweiIgZmlsbD0idmFyKC0tY29sb3ItbWFya2V0aW5nLWljb24tc2Vjb25kYXJ5LCAjNzlCOEZGKSIvPjxwYXRoIGQ9Ik0zNC4wMDUgNDEuMDA3bC0xLjAxMy4wMzMiIHN0cm9rZT0idmFyKC0tY29sb3ItbWFya2V0aW5nLWljb24tc2Vjb25kYXJ5LCAjNzlCOEZGKSIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiLz48L3N2Zz4= | ||
| [prs-badge]: https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=for-the-badge&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAABC0lEQVRYhdWVPQoCMRCFX6HY2ghaiZUXsLW0EDyBrbWtN/EUHsHTWFnYyCL4gxibVZZlZzKTnWz0QZpk5r0vIdkF/kBPAMOKeddE+CQPKoc5Yt5cTjBMdQSwDQToWgBJAn3jmhqgltapAV6E6b5U17MGGAUaUj07TficMfIBZDV6vxowBm1BP9WbSQE4o5h9IjPJmy73TEPDDxVmoZdQrQ5jRhly9Q8tgMUXkIIWn0oG4GYQfAXQzz1PGoCiQndM7b4RgJay/h7zBLT3hASgoKjamQJMreKf0gfuAGyYtXEIAKcL/Dss15iq6ohXghozLYiAMxPuACwtIT4yeQUxAaLrZwAoqGRKGk7qDSYTfYQ8LuYnAAAAAElFTkSuQmCC | ||
| [azure-badge]: https://img.shields.io/azure-devops/build/abhiuna12/942b3b13-d745-49e9-8d7d-b3918ff43ac2/3/master?logo=azure-pipelines&style=for-the-badge | ||
| [pypi-badge]: https://img.shields.io/pypi/v/deffcode.svg?style=for-the-badge&logo=pypi | ||
| [gitter-bagde]: https://img.shields.io/badge/Chat-Gitter-blueviolet.svg?style=for-the-badge&logo=gitter | ||
| [coffee-badge]: https://abhitronix.github.io/img/deffcode/orange_img.png | ||
| [kofi-badge]: https://www.ko-fi.com/img/githubbutton_sm.svg | ||
| [black-badge]: https://img.shields.io/badge/code%20style-black-000000.svg?style=for-the-badge&logo=github | ||
| <!-- | ||
| Internal URLs | ||
| --> | ||
| [docs]:https://abhitronix.github.io/deffcode/latest/ | ||
| [release]:https://github.com/abhiTronix/deffcode/releases/latest | ||
| [recipes]:https://abhitronix.github.io/deffcode/latest/recipes/basic/ | ||
| [license]:https://github.com/abhiTronix/deffcode/blob/master/LICENSE | ||
| [help]:https://abhitronix.github.io/deffcode/latest/help/get_help | ||
| [installation-notes]:https://abhitronix.github.io/deffcode/latest/installation/#installation-notes | ||
| [ffdecoder-api]:https://abhitronix.github.io/deffcode/latest/reference/ffdecoder/#ffdecoder-api | ||
| [sourcer-api]:https://abhitronix.github.io/deffcode/latest/reference/sourcer/#sourcer-api | ||
| [contribute]:https://abhitronix.github.io/deffcode/latest/contribution/ | ||
| [docs]: https://abhitronix.github.io/deffcode/latest/ | ||
| [release]: https://github.com/abhiTronix/deffcode/releases/latest | ||
| [recipes]: https://abhitronix.github.io/deffcode/latest/recipes/basic/ | ||
| [license]: https://github.com/abhiTronix/deffcode/blob/master/LICENSE | ||
| [help]: https://abhitronix.github.io/deffcode/latest/help/get_help | ||
| [installation-notes]: https://abhitronix.github.io/deffcode/latest/installation/#installation-notes | ||
| [ffdecoder-api]: https://abhitronix.github.io/deffcode/latest/reference/ffdecoder/#ffdecoder-api | ||
| [sourcer-api]: https://abhitronix.github.io/deffcode/latest/reference/sourcer/#sourcer-api | ||
| [contribute]: https://abhitronix.github.io/deffcode/latest/contribution/ | ||
| <!-- | ||
| Basic Recipes | ||
| --> | ||
| [basic-recipes]:https://abhitronix.github.io/deffcode/latest/recipes/basic/ | ||
| [decoding-video-files]:https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-video-files/#decoding-video-files | ||
| [decoding-camera-devices-using-indexes]:https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-camera-devices/#decoding-camera-devices-using-indexes | ||
| [decoding-network-streams]:https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-network-streams/#decoding-network-streams | ||
| [decoding-image-sequences]:https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-image-sequences/#decoding-image-sequences | ||
| [transcode-live-frames]:https://abhitronix.github.io/deffcode/latest/recipes/basic/transcode-live-frames/ | ||
| [transcoding-live-simple-filtergraphs]:https://abhitronix.github.io/deffcode/latest/recipes/basic/transcode-live-frames-simplegraphs/#transcoding-live-simple-filtergraphs | ||
| [saving-key-frames-as-image]:https://abhitronix.github.io/deffcode/latest/recipes/basic/save-keyframe-image/#saving-key-frames-as-image | ||
| [extracting-video-metadata]:https://abhitronix.github.io/deffcode/latest/recipes/basic/extract-video-metadata/#extracting-video-metadata | ||
| [accessing-rgb-frames-from-a-video-file]:https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-video-files/#accessing-rgb-frames-from-a-video-file | ||
| [capturing-and-previewing-bgr-frames-from-a-video-file]:https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-video-files/#capturing-and-previewing-bgr-frames-from-a-video-file | ||
| [capturing-and-previewing-bgr-frames-from-a-video-file]:https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-video-files/#capturing-and-previewing-bgr-frames-from-a-video-file | ||
| [enumerating-all-camera-devices-with-indexes]:https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-camera-devices/#enumerating-all-camera-devices-with-indexes | ||
| [capturing-and-previewing-frames-from-a-camera-using-indexes]:https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-camera-devices/#capturing-and-previewing-frames-from-a-camera-using-indexes | ||
| [capturing-and-previewing-frames-from-a-https-stream]:https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-network-streams/#capturing-and-previewing-frames-from-a-https-stream | ||
| [capturing-and-previewing-frames-from-a-rtsprtp-stream]:https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-network-streams/#capturing-and-previewing-frames-from-a-rtsprtp-stream | ||
| [capturing-and-previewing-frames-from-sequence-of-images]:https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-image-sequences/#capturing-and-previewing-frames-from-sequence-of-images | ||
| [capturing-and-previewing-frames-from-single-looping-image]:https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-image-sequences/#capturing-and-previewing-frames-from-single-looping-image | ||
| [transcoding-video-using-opencv-videowriter-api]:https://abhitronix.github.io/deffcode/latest/recipes/basic/transcode-live-frames/#transcoding-video-using-opencv-videowriter-api | ||
| [transcoding-lossless-video-using-writegear-api]:https://abhitronix.github.io/deffcode/latest/recipes/basic/transcode-live-frames/#transcoding-lossless-video-using-writegear-api | ||
| [transcoding-trimmed-and-reversed-video]:https://abhitronix.github.io/deffcode/latest/recipes/basic/transcode-live-frames-simplegraphs/#transcoding-trimmed-and-reversed-video | ||
| [transcoding-cropped-video]:https://abhitronix.github.io/deffcode/latest/recipes/basic/transcode-live-frames-simplegraphs/#transcoding-cropped-video | ||
| [transcoding-rotated-video-with-rotate-filter]:https://abhitronix.github.io/deffcode/latest/recipes/basic/transcode-live-frames-simplegraphs/#transcoding-rotated-video-with-rotate-filter | ||
| [transcoding-rotated-video-with-transpose-filter]:https://abhitronix.github.io/deffcode/latest/recipes/basic/transcode-live-frames-simplegraphs/#transcoding-rotated-video-with-transpose-filter | ||
| [transcoding-horizontally-flipped-and-scaled-video]:https://abhitronix.github.io/deffcode/latest/recipes/basic/transcode-live-frames-simplegraphs/#transcoding-horizontally-flipped-and-scaled-video | ||
| [extracting-key-frames-as-png-image]:https://abhitronix.github.io/deffcode/latest/recipes/basic/save-keyframe-image/#extracting-key-frames-as-png-image | ||
| [generating-thumbnail-with-a-fancy-filter]:https://abhitronix.github.io/deffcode/latest/recipes/basic/save-keyframe-image/#generating-thumbnail-with-a-fancy-filter | ||
| [extracting-video-metadata-using-sourcer-api]:https://abhitronix.github.io/deffcode/latest/recipes/basic/extract-video-metadata/#extracting-video-metadata-using-sourcer-api | ||
| [extracting-video-metadata-using-ffdecoder-api]:https://abhitronix.github.io/deffcode/latest/recipes/basic/extract-video-metadata/#extracting-video-metadata-using-ffdecoder-api | ||
| [basic-recipes]: https://abhitronix.github.io/deffcode/latest/recipes/basic/ | ||
| [decoding-video-files]: https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-video-files/#decoding-video-files | ||
| [decoding-camera-devices-using-indexes]: https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-camera-devices/#decoding-camera-devices-using-indexes | ||
| [decoding-network-streams]: https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-network-streams/#decoding-network-streams | ||
| [decoding-image-sequences]: https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-image-sequences/#decoding-image-sequences | ||
| [transcode-live-frames]: https://abhitronix.github.io/deffcode/latest/recipes/basic/transcode-live-frames/ | ||
| [transcoding-live-simple-filtergraphs]: https://abhitronix.github.io/deffcode/latest/recipes/basic/transcode-live-frames-simplegraphs/#transcoding-live-simple-filtergraphs | ||
| [saving-key-frames-as-image]: https://abhitronix.github.io/deffcode/latest/recipes/basic/save-keyframe-image/#saving-key-frames-as-image | ||
| [extracting-video-metadata]: https://abhitronix.github.io/deffcode/latest/recipes/basic/extract-video-metadata/#extracting-video-metadata | ||
| [accessing-rgb-frames-from-a-video-file]: https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-video-files/#accessing-rgb-frames-from-a-video-file | ||
| [capturing-and-previewing-bgr-frames-from-a-video-file]: https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-video-files/#capturing-and-previewing-bgr-frames-from-a-video-file | ||
| [playing-with-any-other-ffmpeg-pixel-formats]: https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-video-files/#playing-with-any-other-ffmpeg-pixel-formats | ||
| [capturing-and-previewing-frames-from-a-looping-video]: https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-video-files/#capturing-and-previewing-frames-from-a-looping-video | ||
| [enumerating-all-camera-devices-with-indexes]: https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-camera-devices/#enumerating-all-camera-devices-with-indexes | ||
| [capturing-and-previewing-frames-from-a-camera-using-indexes]: https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-camera-devices/#capturing-and-previewing-frames-from-a-camera-using-indexes | ||
| [capturing-and-previewing-frames-from-a-https-stream]: https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-network-streams/#capturing-and-previewing-frames-from-a-https-stream | ||
| [capturing-and-previewing-frames-from-a-rtsprtp-stream]: https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-network-streams/#capturing-and-previewing-frames-from-a-rtsprtp-stream | ||
| [capturing-and-previewing-frames-from-sequence-of-images]: https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-image-sequences/#capturing-and-previewing-frames-from-sequence-of-images | ||
| [capturing-and-previewing-frames-from-single-looping-image]: https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-image-sequences/#capturing-and-previewing-frames-from-single-looping-image | ||
| [transcoding-video-using-opencv-videowriter-api]: https://abhitronix.github.io/deffcode/latest/recipes/basic/transcode-live-frames/#transcoding-video-using-opencv-videowriter-api | ||
| [transcoding-lossless-video-using-writegear-api]: https://abhitronix.github.io/deffcode/latest/recipes/basic/transcode-live-frames/#transcoding-lossless-video-using-writegear-api | ||
| [transcoding-trimmed-and-reversed-video]: https://abhitronix.github.io/deffcode/latest/recipes/basic/transcode-live-frames-simplegraphs/#transcoding-trimmed-and-reversed-video | ||
| [transcoding-cropped-video]: https://abhitronix.github.io/deffcode/latest/recipes/basic/transcode-live-frames-simplegraphs/#transcoding-cropped-video | ||
| [transcoding-rotated-video-with-rotate-filter]: https://abhitronix.github.io/deffcode/latest/recipes/basic/transcode-live-frames-simplegraphs/#transcoding-rotated-video-with-rotate-filter | ||
| [transcoding-rotated-video-with-transpose-filter]: https://abhitronix.github.io/deffcode/latest/recipes/basic/transcode-live-frames-simplegraphs/#transcoding-rotated-video-with-transpose-filter | ||
| [transcoding-horizontally-flipped-and-scaled-video]: https://abhitronix.github.io/deffcode/latest/recipes/basic/transcode-live-frames-simplegraphs/#transcoding-horizontally-flipped-and-scaled-video | ||
| [extracting-key-frames-as-png-image]: https://abhitronix.github.io/deffcode/latest/recipes/basic/save-keyframe-image/#extracting-key-frames-as-png-image | ||
| [generating-thumbnail-with-a-fancy-filter]: https://abhitronix.github.io/deffcode/latest/recipes/basic/save-keyframe-image/#generating-thumbnail-with-a-fancy-filter | ||
| [extracting-video-metadata-using-sourcer-api]: https://abhitronix.github.io/deffcode/latest/recipes/basic/extract-video-metadata/#extracting-video-metadata-using-sourcer-api | ||
| [extracting-video-metadata-using-ffdecoder-api]: https://abhitronix.github.io/deffcode/latest/recipes/basic/extract-video-metadata/#extracting-video-metadata-using-ffdecoder-api | ||
@@ -462,37 +459,40 @@ <!-- | ||
| --> | ||
| [advanced-recipes]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/ | ||
| [decoding-live-virtual-sources]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-live-virtual-sources/#decoding-live-virtual-sources | ||
| [decoding-live-feed-devices]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-live-feed-devices/#decoding-live-feed-devices | ||
| [hardware-accelerated-video-decoding]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-hw-acceleration/#hardware-accelerated-video-decoding | ||
| [transcoding-live-complex-filtergraphs]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-live-frames-complexgraphs/#transcoding-live-complex-filtergraphs | ||
| [transcoding-video-art-with-filtergraphs]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-art-filtergraphs/#transcoding-video-art-with-filtergraphs | ||
| [hardware-accelerated-video-transcoding]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-hw-acceleration/#hardware-accelerated-video-transcoding | ||
| [updating-video-metadata]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/update-metadata/#updating-video-metadata | ||
| [advanced-recipes]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/ | ||
| [decoding-live-virtual-sources]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-live-virtual-sources/#decoding-live-virtual-sources | ||
| [decoding-live-feed-devices]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-live-feed-devices/#decoding-live-feed-devices | ||
| [hardware-accelerated-video-decoding]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-hw-acceleration/#hardware-accelerated-video-decoding | ||
| [transcoding-live-complex-filtergraphs]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-live-frames-complexgraphs/#transcoding-live-complex-filtergraphs | ||
| [transcoding-video-art-with-filtergraphs]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-art-filtergraphs/#transcoding-video-art-with-filtergraphs | ||
| [hardware-accelerated-video-transcoding]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-hw-acceleration/#hardware-accelerated-video-transcoding | ||
| [updating-video-metadata]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/update-metadata/#updating-video-metadata | ||
| [generate-and-decode-frames-from-sierpinski-pattern]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-live-virtual-sources/#generate-and-decode-frames-from-sierpinski-pattern | ||
| [generate-and-decode-frames-from-test-source-pattern]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-live-virtual-sources/#generate-and-decode-frames-from-test-source-pattern | ||
| [generate-and-decode-frames-from-gradients-with-custom-text-effect]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-live-virtual-sources/#generate-and-decode-frames-from-gradients-with-custom-text-effect | ||
| [generate-and-decode-frames-from-mandelbrot-test-pattern-with-vectorscope-waveforms]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-live-virtual-sources/#generate-and-decode-frames-from-mandelbrot-test-pattern-with-vectorscope-waveforms | ||
| [generate-and-decode-frames-from-game-of-life-visualization]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-live-virtual-sources/#generate-and-decode-frames-from-game-of-life-visualization | ||
| [cuvid-accelerated-hardware-based-video-decoding-and-previewing]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-hw-acceleration/#cuvid-accelerated-hardware-based-video-decoding-and-previewing | ||
| [cuda-accelerated-hardware-based-video-decoding-and-previewing]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-hw-acceleration/#cuda-accelerated-hardware-based-video-decoding-and-previewing | ||
| [transcoding-video-with-live-custom-watermark-image-overlay]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-live-frames-complexgraphs/#transcoding-video-with-live-custom-watermark-image-overlay | ||
| [transcoding-video-from-sequence-of-images-with-additional-filtering]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-live-frames-complexgraphs/#transcoding-video-from-sequence-of-images-with-additional-filtering | ||
| [transcoding-video-art-with-jetcolor-effect]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-art-filtergraphs/#transcoding-video-art-with-jetcolor-effect | ||
| [transcoding-video-art-with-yuv-bitplane-visualization]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-art-filtergraphs/#transcoding-video-art-with-yuv-bitplane-visualization | ||
| [transcoding-video-art-with-ghosting-effect]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-art-filtergraphs/#transcoding-video-art-with-ghosting-effect | ||
| [transcoding-video-art-with-pixelation-effect]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-art-filtergraphs/#transcoding-video-art-with-pixelation-effect | ||
| [capturing-and-previewing-frames-from-a-webcam-using-custom-demuxer]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-live-feed-devices/#capturing-and-previewing-frames-from-a-webcam-using-custom-demuxer | ||
| [capturing-and-previewing-frames-from-your-desktop]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-live-feed-devices/#capturing-and-previewing-frames-from-your-desktop | ||
| [cuda-accelerated-video-transcoding-with-opencvs-videowriter-api]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-hw-acceleration/#cuda-accelerated-video-transcoding-with-opencvs-videowriter-api | ||
| [cuda-nvenc-accelerated-video-transcoding-with-writegear-api]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-hw-acceleration/#cuda-nvenc-accelerated-video-transcoding-with-writegear-api | ||
| [cuda-nvenc-accelerated-end-to-end-lossless-video-transcoding-with-writegear-api]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-hw-acceleration/#cuda-nvenc-accelerated-end-to-end-lossless-video-transcoding-with-writegear-api | ||
| [added-new-attributes-to-metadata-in-ffdecoder-api]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/update-metadata/#added-new-attributes-to-metadata-in-ffdecoder-api | ||
| [overriding-source-video-metadata-in-ffdecoder-api]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/update-metadata/#overriding-source-video-metadata-in-ffdecoder-api | ||
| [generate-and-decode-frames-from-sierpinski-pattern]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-live-virtual-sources/#generate-and-decode-frames-from-sierpinski-pattern | ||
| [generate-and-decode-frames-from-test-source-pattern]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-live-virtual-sources/#generate-and-decode-frames-from-test-source-pattern | ||
| [generate-and-decode-frames-from-gradients-with-custom-text-effect]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-live-virtual-sources/#generate-and-decode-frames-from-gradients-with-custom-text-effect | ||
| [generate-and-decode-frames-from-mandelbrot-test-pattern-with-vectorscope-waveforms]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-live-virtual-sources/#generate-and-decode-frames-from-mandelbrot-test-pattern-with-vectorscope-waveforms | ||
| [generate-and-decode-frames-from-game-of-life-visualization]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-live-virtual-sources/#generate-and-decode-frames-from-game-of-life-visualization | ||
| [gpu-accelerated-hardware-based-video-decoding]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-hw-acceleration/#gpu-accelerated-hardware-based-video-decoding | ||
| [transcoding-video-with-live-custom-watermark-image-overlay]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-live-frames-complexgraphs/#transcoding-video-with-live-custom-watermark-image-overlay | ||
| [transcoding-video-from-sequence-of-images-with-additional-filtering]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-live-frames-complexgraphs/#transcoding-video-from-sequence-of-images-with-additional-filtering | ||
| [transcoding-video-art-with-jetcolor-effect]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-art-filtergraphs/#transcoding-video-art-with-jetcolor-effect | ||
| [transcoding-video-art-with-yuv-bitplane-visualization]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-art-filtergraphs/#transcoding-video-art-with-yuv-bitplane-visualization | ||
| [transcoding-video-art-with-ghosting-effect]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-art-filtergraphs/#transcoding-video-art-with-ghosting-effect | ||
| [transcoding-video-art-with-pixelation-effect]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-art-filtergraphs/#transcoding-video-art-with-pixelation-effect | ||
| [capturing-and-previewing-frames-from-a-webcam-using-custom-demuxer]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-live-feed-devices/#capturing-and-previewing-frames-from-a-webcam-using-custom-demuxer | ||
| [capturing-and-previewing-frames-from-your-desktop]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-live-feed-devices/#capturing-and-previewing-frames-from-your-desktop | ||
| [gpu-accelerated-hardware-based-video-transcoding-with-writegear-api]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-hw-acceleration/#gpu-accelerated-hardware-based-video-transcoding-with-writegear-api | ||
| [added-new-attributes-to-metadata-in-ffdecoder-api]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/update-metadata/#added-new-attributes-to-metadata-in-ffdecoder-api | ||
| [overriding-source-video-metadata-in-ffdecoder-api]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/update-metadata/#overriding-source-video-metadata-in-ffdecoder-api | ||
| <!-- | ||
| CI Apps URLs | ||
| --> | ||
| [github-flow]:https://github.com/abhiTronix/deffcode/actions/workflows/CIlinux.yml | ||
| [azure-pipeline]:https://dev.azure.com/abhiuna12/public/_build?definitionId=3 | ||
| [app]:https://ci.appveyor.com/project/abhiTronix/deffcode | ||
| [code]:https://codecov.io/gh/abhiTronix/deffcode | ||
| [github-flow]: https://github.com/abhiTronix/deffcode/actions/workflows/CIlinux.yml | ||
| [azure-pipeline]: https://dev.azure.com/abhiuna12/public/_build?definitionId=3 | ||
| [app]: https://ci.appveyor.com/project/abhiTronix/deffcode | ||
| [code]: https://codecov.io/gh/abhiTronix/deffcode | ||
| [black]: https://github.com/psf/black | ||
@@ -503,7 +503,8 @@ | ||
| --> | ||
| [opencv-py]:https://docs.opencv.org/4.x/d6/d00/tutorial_py_root.html | ||
| [ffmpeg]:https://www.ffmpeg.org/ | ||
| [pypi]:https://pypi.org/project/deffcode/ | ||
| [gitter]:https://gitter.im/deffcode-python/community?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge | ||
| [coffee]:https://www.buymeacoffee.com/2twOXFvlA | ||
| [opencv-py]: https://docs.opencv.org/4.x/d6/d00/tutorial_py_root.html | ||
| [ffmpeg]: https://www.ffmpeg.org/ | ||
| [pypi]: https://pypi.org/project/deffcode/ | ||
| [gitter]: https://gitter.im/deffcode-python/community?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge | ||
| [coffee]: https://www.buymeacoffee.com/2twOXFvlA | ||
| [kofi]: https://ko-fi.com/W7W8WTYO |
@@ -202,2 +202,11 @@ """ | ||
| # handle YUV pixel formats(such as `yuv420p`, `yuv444p`, `nv12`, `nv21` etc.) | ||
| # patch for compatibility with OpenCV APIs. | ||
| self.__cv_patch = self.__extra_params.pop("-enforce_cv_patch", False) | ||
| if not (isinstance(self.__cv_patch, bool)): | ||
| self.__cv_patch = False | ||
| self.__verbose_logs and logger.critical( | ||
| "Enforcing OpenCV compatibility patch for YUV/NV frames." | ||
| ) | ||
| # handle pass-through audio mode works in conjunction with WriteGear [TODO] | ||
@@ -432,3 +441,5 @@ self.__passthrough_mode = self.__extra_params.pop("-passthrough_audio", False) | ||
| ][0] | ||
| raw_bit_per_component = rawframesbpp // self.__raw_frame_depth | ||
| raw_bit_per_component = ( | ||
| rawframesbpp // self.__raw_frame_depth if self.__raw_frame_depth else 0 | ||
| ) | ||
| if 4 <= raw_bit_per_component <= 8: | ||
@@ -603,3 +614,3 @@ self.__raw_frame_dtype = np.dtype("u1") | ||
| self.__verbose_logs and logger.info( | ||
| "Live/Network Stream detected! Number of frames in given source are not known." | ||
| "Number of frames in given source are unknown. Live/Network/Looping stream detected!" | ||
| ) | ||
@@ -632,7 +643,11 @@ | ||
| # formulated raw frame size | ||
| # formulated raw frame size and apply YUV pixel formats patch(if applicable) | ||
| raw_frame_size = ( | ||
| self.__raw_frame_depth | ||
| * self.__raw_frame_resolution[0] | ||
| * self.__raw_frame_resolution[1] | ||
| (self.__raw_frame_resolution[0] * (self.__raw_frame_resolution[1] * 3 // 2)) | ||
| if self.__raw_frame_pixfmt.startswith(("yuv", "nv")) and self.__cv_patch | ||
| else ( | ||
| self.__raw_frame_depth | ||
| * self.__raw_frame_resolution[0] | ||
| * self.__raw_frame_resolution[1] | ||
| ) | ||
| ) | ||
@@ -675,2 +690,8 @@ # next dataframe as numpy ndarray | ||
| )[:, :, 0] | ||
| elif self.__raw_frame_pixfmt.startswith(("yuv", "nv")) and self.__cv_patch: | ||
| # reconstruct exclusive YUV formats frames for OpenCV APIs | ||
| frame = frame.reshape( | ||
| self.__raw_frame_resolution[1] * 3 // 2, | ||
| self.__raw_frame_resolution[0], | ||
| ) | ||
| else: | ||
@@ -677,0 +698,0 @@ # reconstruct default frames |
@@ -30,4 +30,3 @@ """ | ||
| from pathlib import Path | ||
| from requests.adapters import HTTPAdapter | ||
| from requests.packages.urllib3.util.retry import Retry | ||
| from requests.adapters import HTTPAdapter, Retry | ||
@@ -52,3 +51,3 @@ # import utils packages | ||
| def __init__(self, *args, **kwargs): | ||
| def __init__(self, *args, **kwargs): | ||
| self.timeout = DEFAULT_TIMEOUT | ||
@@ -220,3 +219,7 @@ if "timeout" in kwargs: | ||
| response.raise_for_status() | ||
| total_length = response.headers.get("content-length") | ||
| total_length = ( | ||
| response.headers.get("content-length") | ||
| if "content-length" in response.headers | ||
| else len(response.content) | ||
| ) | ||
| assert not ( | ||
@@ -223,0 +226,0 @@ total_length is None |
@@ -365,2 +365,8 @@ """ | ||
| if self.__approx_video_nframes | ||
| and not any( | ||
| "loop" in x for x in self.__ffmpeg_prefixes | ||
| ) # check if any loops in prefix | ||
| and not any( | ||
| "loop" in x for x in dict2Args(self.__sourcer_params) | ||
| ) # check if any loops in filters | ||
| else None | ||
@@ -367,0 +373,0 @@ ), |
@@ -1,1 +0,1 @@ | ||
| __version__ = "0.2.4" | ||
| __version__ = "0.2.5" |
+142
-141
| Metadata-Version: 2.1 | ||
| Name: deffcode | ||
| Version: 0.2.4 | ||
| Version: 0.2.5 | ||
| Summary: A cross-platform High-performance & Flexible Real-time Video Frames Decoder in Python. | ||
@@ -35,3 +35,3 @@ Home-page: https://abhitronix.github.io/deffcode | ||
| <!-- | ||
| =============================================== | ||
| DeFFcode library source-code is deployed under the Apache 2.0 License: | ||
@@ -45,3 +45,3 @@ | ||
| http://www.apache.org/licenses/LICENSE-2.0 | ||
| http://www.apache.org/licenses/LICENSE-2.0 | ||
@@ -57,5 +57,5 @@ Unless required by applicable law or agreed to in writing, software | ||
| <div align="center"> | ||
|  | ||
|  | ||
@@ -66,14 +66,13 @@ </div> | ||
| [![Build Status][github-cli]][github-flow] [![Codecov branch][codecov]][code] [![Azure DevOps builds (branch)][azure-badge]][azure-pipeline] | ||
| [![Build Status][github-cli]][github-flow] [![Codecov branch][codecov]][code] [![Azure DevOps builds (branch)][azure-badge]][azure-pipeline] | ||
| [![Glitter chat][gitter-bagde]][gitter] [![Build Status][appveyor]][app] [![PyPi version][pypi-badge]][pypi] | ||
| [![Glitter chat][gitter-bagde]][gitter] [![Build Status][appveyor]][app] [![PyPi version][pypi-badge]][pypi] | ||
| [![Code Style][black-badge]][black] | ||
| --- | ||
| ---- | ||
| [Releases][release] | [Recipes][recipes] | [Documentation][docs] | [Installation][installation-notes] | [License](https://github.com/abhiTronix/deffcode#copyright) | ||
| ---- | ||
| --- | ||
@@ -113,3 +112,3 @@ </div> | ||
| - Out-of-the-box support for all prominent Computer Vision libraries. | ||
| - Cross-platform, runs on Python 3.7+, and easy to install. | ||
| - Cross-platform, runs on Python 3.7+, and easy to install. | ||
@@ -150,3 +149,3 @@ <!-- | ||
| <div align="center"> | ||
| <a href="https://abhitronix.github.io/deffcode/latest/recipes/basic/transcode-live-frames-simplegraphs/#transcoding-trimmed-and-reversed-video"><img src="https://abhitronix.github.io/deffcode/latest/assets/gifs/bigbuckbunny_reversed.gif" alt="Big Buck Bunny Reversed" title="Click to view source code" width="70%" /> </a> | ||
| <a href="https://abhitronix.github.io/deffcode/latest/recipes/basic/transcode-live-frames-simplegraphs/#transcoding-trimmed-and-reversed-video"><img src="https://user-images.githubusercontent.com/34266896/211499038-46cc246d-843b-4c89-8e9a-5536395da9e7.gif" title="Click to view source code" width="70%" /> </a> | ||
| <br> | ||
@@ -163,3 +162,4 @@ <sub><i>Big Buck Bunny Reversed using Live Simple Filtergraph</i></sub> | ||
| - [Capturing and Previewing BGR frames from a video file][capturing-and-previewing-bgr-frames-from-a-video-file] _(OpenCV Support)_ | ||
| - [Playing with any other FFmpeg pixel formats][capturing-and-previewing-bgr-frames-from-a-video-file] | ||
| - [Playing with any other FFmpeg pixel formats][playing-with-any-other-ffmpeg-pixel-formats] | ||
| - [Capturing and Previewing frames from a Looping Video][capturing-and-previewing-frames-from-a-looping-video] | ||
| - [Enumerating all Camera Devices with Indexes][enumerating-all-camera-devices-with-indexes] | ||
@@ -182,3 +182,3 @@ - [Capturing and Previewing frames from a Camera using Indexes][capturing-and-previewing-frames-from-a-camera-using-indexes] | ||
| - [Transcoding Rotated video (with `rotate` filter)][transcoding-rotated-video-with-rotate-filter] | ||
| - [Transcoding Rotated video (with `transpose` filter)][transcoding-rotated-video-with-transpose-filter] | ||
| - [Transcoding Rotated video (with `transpose` filter)][transcoding-rotated-video-with-transpose-filter] | ||
| - [Transcoding Horizontally flipped and Scaled video][transcoding-horizontally-flipped-and-scaled-video] | ||
@@ -199,3 +199,2 @@ - [Extracting Key-frames as PNG image][extracting-key-frames-as-png-image] | ||
| ### B. [**Advanced Recipes 🥐**][advanced-recipes]: _Recipes to take your skills to the next level._ | ||
@@ -205,3 +204,3 @@ | ||
| <p align="center"> | ||
| <a href="https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-live-virtual-sources/#generate-and-decode-frames-from-mandelbrot-test-pattern-with-vectorscope-waveforms"><img src="https://abhitronix.github.io/deffcode/latest/assets/gifs/mandelbrot_vectorscope_waveforms.gif" alt="mandelbrot test pattern" title="Click to view source code" width="70%" /></a> | ||
| <a href="https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-live-virtual-sources/#generate-and-decode-frames-from-mandelbrot-test-pattern-with-vectorscope-waveforms"><img src="https://user-images.githubusercontent.com/34266896/211498819-13fe0487-e843-4315-b4f3-c881de6c8c4a.gif" alt="mandelbrot test pattern" title="Click to view source code" width="70%" /></a> | ||
| <br> | ||
@@ -223,3 +222,4 @@ <sub><i>Live Mandelbrot pattern with a Vectorscope & two Waveforms</i></sub> | ||
| - [Capturing and Previewing frames from your Desktop][capturing-and-previewing-frames-from-your-desktop] _(Screen Recording)_ | ||
| - [GPU-accelerated Hardware-based Video Decoding][gpu-accelerated-hardware-based-video-decoding] | ||
| - [CUVID-accelerated Hardware-based Video Decoding and Previewing][cuvid-accelerated-hardware-based-video-decoding-and-previewing] | ||
| - [CUDA-accelerated Hardware-based Video Decoding and Previewing][cuda-accelerated-hardware-based-video-decoding-and-previewing] | ||
@@ -234,6 +234,8 @@ </details> | ||
| - [Transcoding video art with YUV Bitplane Visualization][transcoding-video-art-with-yuv-bitplane-visualization] | ||
| - [Transcoding video art with Jetcolor effect][transcoding-video-art-with-jetcolor-effect] | ||
| - [Transcoding video art with Jetcolor effect][transcoding-video-art-with-jetcolor-effect] | ||
| - [Transcoding video art with Ghosting effect][transcoding-video-art-with-ghosting-effect] | ||
| - [Transcoding video art with Pixelation effect][transcoding-video-art-with-pixelation-effect] | ||
| - [GPU-accelerated Hardware-based Video Transcoding with WriteGear API][gpu-accelerated-hardware-based-video-transcoding-with-writegear-api] | ||
| - [CUDA-accelerated Video Transcoding with OpenCV's VideoWriter API][cuda-accelerated-video-transcoding-with-opencvs-videowriter-api] | ||
| - [CUDA-NVENC-accelerated Video Transcoding with WriteGear API][cuda-nvenc-accelerated-video-transcoding-with-writegear-api] | ||
| - [CUDA-NVENC-accelerated End-to-end Lossless Video Transcoding with WriteGear API][cuda-nvenc-accelerated-end-to-end-lossless-video-transcoding-with-writegear-api] | ||
@@ -258,3 +260,3 @@ </details> | ||
| ### A. FFdecoder API | ||
| ### A. FFdecoder API | ||
@@ -274,3 +276,3 @@ The primary function of [**FFdecoder API**][ffdecoder-api] is to **decode 24-bit RGB video frames** from the given source: | ||
| for frame in decoder.generateFrame(): | ||
| # lets print its shape | ||
@@ -283,3 +285,3 @@ print(frame.shape) # (1080, 1920, 3) | ||
| ### B. Sourcer API | ||
| ### B. Sourcer API | ||
@@ -302,27 +304,24 @@ The primary function of [**Sourcer API**][sourcer-api] is to **gather metadata information from all multimedia streams available** in the given source: | ||
| ```json | ||
| { | ||
| "ffmpeg_binary_path": "C:\\Users\\foo\\AppData\\Local\\Temp\\ffmpeg-static-win64-gpl/bin/ffmpeg.exe", | ||
| "source": "https://abhitronix.github.io/html/Big_Buck_Bunny_1080_10s_1MB.mp4", | ||
| "source_extension": ".mp4", | ||
| "source_video_resolution": [ | ||
| 1920, | ||
| 1080 | ||
| ], | ||
| "source_video_framerate": 60.0, | ||
| "source_video_pixfmt": "yuv420p", | ||
| "source_video_decoder": "h264", | ||
| "source_duration_sec": 10.0, | ||
| "approx_video_nframes": 600, | ||
| "source_video_bitrate": "832k", | ||
| "source_audio_bitrate": "", | ||
| "source_audio_samplerate": "", | ||
| "source_has_video": true, | ||
| "source_has_audio": false, | ||
| "source_has_image_sequence": false | ||
| } | ||
| ``` | ||
| ```json | ||
| { | ||
| "ffmpeg_binary_path": "C:\\Users\\foo\\AppData\\Local\\Temp\\ffmpeg-static-win64-gpl/bin/ffmpeg.exe", | ||
| "source": "https://abhitronix.github.io/html/Big_Buck_Bunny_1080_10s_1MB.mp4", | ||
| "source_extension": ".mp4", | ||
| "source_video_resolution": [1920, 1080], | ||
| "source_video_framerate": 60.0, | ||
| "source_video_pixfmt": "yuv420p", | ||
| "source_video_decoder": "h264", | ||
| "source_duration_sec": 10.0, | ||
| "approx_video_nframes": 600, | ||
| "source_video_bitrate": "832k", | ||
| "source_audio_bitrate": "", | ||
| "source_audio_samplerate": "", | ||
| "source_has_video": true, | ||
| "source_has_audio": false, | ||
| "source_has_image_sequence": false | ||
| } | ||
| ``` | ||
| </details> | ||
| | ||
@@ -332,6 +331,5 @@ | ||
| # Contributions | ||
| > We're happy to meet new contributors💗 | ||
| > We're happy to meet new contributors💗 | ||
@@ -357,3 +355,2 @@ We welcome your contributions to help us improve and extend this project. If you want to get involved with VidGear development, checkout the **[Contribution Guidelines ▶️][contribute]** | ||
| | ||
@@ -363,4 +360,2 @@ | ||
| # Citation | ||
@@ -370,14 +365,14 @@ | ||
| [](https://doi.org/10.5281/zenodo.6984364) | ||
| [](https://doi.org/10.5281/zenodo.7155399) | ||
| ```BibTeX | ||
| @software{deffcode, | ||
| author = {Abhishek Thakur}, | ||
| title = {abhiTronix/deffcode: v0.2.3}, | ||
| month = aug, | ||
| author = {Abhishek Singh Thakur}, | ||
| title = {abhiTronix/deffcode: v0.2.4}, | ||
| month = oct, | ||
| year = 2022, | ||
| publisher = {Zenodo}, | ||
| version = {v0.2.3}, | ||
| doi = {10.5281/zenodo.6984364}, | ||
| url = {https://doi.org/10.5281/zenodo.6984364} | ||
| version = {v0.2.4}, | ||
| doi = {10.5281/zenodo.7155399}, | ||
| url = {https://doi.org/10.5281/zenodo.7155399} | ||
| } | ||
@@ -396,63 +391,65 @@ ``` | ||
| <!-- | ||
| CI Badges | ||
| --> | ||
| [appveyor]:https://img.shields.io/appveyor/ci/abhitronix/deffcode.svg?style=for-the-badge&logo=appveyor | ||
| [codecov]:https://img.shields.io/codecov/c/gh/abhiTronix/deffcode?logo=codecov&style=for-the-badge&token=zrES4mwVKe | ||
| [github-cli]:https://img.shields.io/github/workflow/status/abhiTronix/deffcode/GitHub%20Action%20workflow%20for%20Linux?style=for-the-badge&logo=data:image/svg%2bxml;base64,PHN2ZyB3aWR0aD0iNDgiIGhlaWdodD0iNDgiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMTAgMWE5IDkgMCAwMTkgOSA5IDkgMCAwMS05IDkgOSA5IDAgMDEtOS05IDkgOSAwIDAxOS05ek0yMyAxOWE2IDYgMCAxMTAgMTIgNiA2IDAgMDEwLTEyek0yMyAzNWE2IDYgMCAxMTAgMTIgNiA2IDAgMDEwLTEyeiIgc3Ryb2tlPSJ2YXIoLS1jb2xvci1tYXJrZXRpbmctaWNvbi1wcmltYXJ5LCAjMjA4OEZGKSIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz48cGF0aCBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00MSAzNWE2IDYgMCAxMTAgMTIgNiA2IDAgMDEwLTEyeiIgc3Ryb2tlPSJ2YXIoLS1jb2xvci1tYXJrZXRpbmctaWNvbi1zZWNvbmRhcnksICM3OUI4RkYpIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPjxwYXRoIGQ9Ik0yNS4wMzcgMjMuNjA3bC0zLjA3IDMuMDY1LTEuNDktMS40ODUiIHN0cm9rZT0idmFyKC0tY29sb3ItbWFya2V0aW5nLWljb24tcHJpbWFyeSwgIzIwODhGRikiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+PHBhdGggY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNNDEgMTlhNiA2IDAgMTEwIDEyIDYgNiAwIDAxMC0xMnoiIHN0cm9rZT0idmFyKC0tY29sb3ItbWFya2V0aW5nLWljb24tcHJpbWFyeSwgIzIwODhGRikiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+PHBhdGggZD0iTTQzLjAzNiAyMy42MDdsLTMuMDY5IDMuMDY1LTEuNDktMS40ODVNNyA2LjgxMmExIDEgMCAwMTEuNTMzLS44NDZsNS4xMTMgMy4yMmExIDEgMCAwMS0uMDA2IDEuNjk3bC01LjExMyAzLjE3QTEgMSAwIDAxNyAxMy4yMDNWNi44MTN6TTkgMTl2MTVjMCAzLjg2NiAzLjE3NyA3IDcgN2gxIiBzdHJva2U9InZhcigtLWNvbG9yLW1hcmtldGluZy1pY29uLXByaW1hcnksICMyMDg4RkYpIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPjxwYXRoIGQ9Ik0xNi45NDkgMjZhMSAxIDAgMTAwLTJ2MnpNOCAxOS4wMzVBNi45NjUgNi45NjUgMCAwMDE0Ljk2NSAyNnYtMkE0Ljk2NSA0Ljk2NSAwIDAxMTAgMTkuMDM1SDh6TTE0Ljk2NSAyNmgxLjk4NHYtMmgtMS45ODR2MnoiIGZpbGw9InZhcigtLWNvbG9yLW1hcmtldGluZy1pY29uLXByaW1hcnksICMyMDg4RkYpIi8+PHBhdGggZD0iTTI5LjA1NSAyNWg1Ljk0NCIgc3Ryb2tlPSJ2YXIoLS1jb2xvci1tYXJrZXRpbmctaWNvbi1wcmltYXJ5LCAjMjA4OEZGKSIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTIxIDQwYTEgMSAwIDExLS4wMDEgMi4wMDFBMSAxIDAgMDEyMSA0MHpNMjUgNDBhMSAxIDAgMTEtLjAwMSAyLjAwMUExIDEgMCAwMTI1IDQweiIgZmlsbD0idmFyKC0tY29sb3ItbWFya2V0aW5nLWljb24tc2Vjb25kYXJ5LCAjNzlCOEZGKSIvPjxwYXRoIGQ9Ik0zNC4wMDUgNDEuMDA3bC0xLjAxMy4wMzMiIHN0cm9rZT0idmFyKC0tY29sb3ItbWFya2V0aW5nLWljb24tc2Vjb25kYXJ5LCAjNzlCOEZGKSIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiLz48L3N2Zz4= | ||
| [prs-badge]:https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=for-the-badge&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAABC0lEQVRYhdWVPQoCMRCFX6HY2ghaiZUXsLW0EDyBrbWtN/EUHsHTWFnYyCL4gxibVZZlZzKTnWz0QZpk5r0vIdkF/kBPAMOKeddE+CQPKoc5Yt5cTjBMdQSwDQToWgBJAn3jmhqgltapAV6E6b5U17MGGAUaUj07TficMfIBZDV6vxowBm1BP9WbSQE4o5h9IjPJmy73TEPDDxVmoZdQrQ5jRhly9Q8tgMUXkIIWn0oG4GYQfAXQzz1PGoCiQndM7b4RgJay/h7zBLT3hASgoKjamQJMreKf0gfuAGyYtXEIAKcL/Dss15iq6ohXghozLYiAMxPuACwtIT4yeQUxAaLrZwAoqGRKGk7qDSYTfYQ8LuYnAAAAAElFTkSuQmCC | ||
| [azure-badge]:https://img.shields.io/azure-devops/build/abhiuna12/942b3b13-d745-49e9-8d7d-b3918ff43ac2/3/master?logo=azure-pipelines&style=for-the-badge | ||
| [pypi-badge]:https://img.shields.io/pypi/v/deffcode.svg?style=for-the-badge&logo=pypi | ||
| [gitter-bagde]:https://img.shields.io/badge/Chat-Gitter-blueviolet.svg?style=for-the-badge&logo=gitter | ||
| [Coffee-badge]:https://abhitronix.github.io/img/deffcode/orange_img.png | ||
| [kofi-badge]:https://www.ko-fi.com/img/githubbutton_sm.svg | ||
| [black-badge]:https://img.shields.io/badge/code%20style-black-000000.svg?style=for-the-badge&logo=github | ||
| [appveyor]: https://img.shields.io/appveyor/ci/abhitronix/deffcode.svg?style=for-the-badge&logo=appveyor | ||
| [codecov]: https://img.shields.io/codecov/c/gh/abhiTronix/deffcode?logo=codecov&style=for-the-badge&token=zrES4mwVKe | ||
| [github-cli]: https://img.shields.io/github/actions/workflow/status/abhiTronix/deffcode/.github/workflows/CIlinux.yml?style=for-the-badge&logo=data:image/svg%2bxml;base64,PHN2ZyB3aWR0aD0iNDgiIGhlaWdodD0iNDgiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMTAgMWE5IDkgMCAwMTkgOSA5IDkgMCAwMS05IDkgOSA5IDAgMDEtOS05IDkgOSAwIDAxOS05ek0yMyAxOWE2IDYgMCAxMTAgMTIgNiA2IDAgMDEwLTEyek0yMyAzNWE2IDYgMCAxMTAgMTIgNiA2IDAgMDEwLTEyeiIgc3Ryb2tlPSJ2YXIoLS1jb2xvci1tYXJrZXRpbmctaWNvbi1wcmltYXJ5LCAjMjA4OEZGKSIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz48cGF0aCBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00MSAzNWE2IDYgMCAxMTAgMTIgNiA2IDAgMDEwLTEyeiIgc3Ryb2tlPSJ2YXIoLS1jb2xvci1tYXJrZXRpbmctaWNvbi1zZWNvbmRhcnksICM3OUI4RkYpIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPjxwYXRoIGQ9Ik0yNS4wMzcgMjMuNjA3bC0zLjA3IDMuMDY1LTEuNDktMS40ODUiIHN0cm9rZT0idmFyKC0tY29sb3ItbWFya2V0aW5nLWljb24tcHJpbWFyeSwgIzIwODhGRikiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+PHBhdGggY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNNDEgMTlhNiA2IDAgMTEwIDEyIDYgNiAwIDAxMC0xMnoiIHN0cm9rZT0idmFyKC0tY29sb3ItbWFya2V0aW5nLWljb24tcHJpbWFyeSwgIzIwODhGRikiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+PHBhdGggZD0iTTQzLjAzNiAyMy42MDdsLTMuMDY5IDMuMDY1LTEuNDktMS40ODVNNyA2LjgxMmExIDEgMCAwMTEuNTMzLS44NDZsNS4xMTMgMy4yMmExIDEgMCAwMS0uMDA2IDEuNjk3bC01LjExMyAzLjE3QTEgMSAwIDAxNyAxMy4yMDNWNi44MTN6TTkgMTl2MTVjMCAzLjg2NiAzLjE3NyA3IDcgN2gxIiBzdHJva2U9InZhcigtLWNvbG9yLW1hcmtldGluZy1pY29uLXByaW1hcnksICMyMDg4RkYpIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPjxwYXRoIGQ9Ik0xNi45NDkgMjZhMSAxIDAgMTAwLTJ2MnpNOCAxOS4wMzVBNi45NjUgNi45NjUgMCAwMDE0Ljk2NSAyNnYtMkE0Ljk2NSA0Ljk2NSAwIDAxMTAgMTkuMDM1SDh6TTE0Ljk2NSAyNmgxLjk4NHYtMmgtMS45ODR2MnoiIGZpbGw9InZhcigtLWNvbG9yLW1hcmtldGluZy1pY29uLXByaW1hcnksICMyMDg4RkYpIi8+PHBhdGggZD0iTTI5LjA1NSAyNWg1Ljk0NCIgc3Ryb2tlPSJ2YXIoLS1jb2xvci1tYXJrZXRpbmctaWNvbi1wcmltYXJ5LCAjMjA4OEZGKSIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTIxIDQwYTEgMSAwIDExLS4wMDEgMi4wMDFBMSAxIDAgMDEyMSA0MHpNMjUgNDBhMSAxIDAgMTEtLjAwMSAyLjAwMUExIDEgMCAwMTI1IDQweiIgZmlsbD0idmFyKC0tY29sb3ItbWFya2V0aW5nLWljb24tc2Vjb25kYXJ5LCAjNzlCOEZGKSIvPjxwYXRoIGQ9Ik0zNC4wMDUgNDEuMDA3bC0xLjAxMy4wMzMiIHN0cm9rZT0idmFyKC0tY29sb3ItbWFya2V0aW5nLWljb24tc2Vjb25kYXJ5LCAjNzlCOEZGKSIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiLz48L3N2Zz4= | ||
| [prs-badge]: https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=for-the-badge&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAABC0lEQVRYhdWVPQoCMRCFX6HY2ghaiZUXsLW0EDyBrbWtN/EUHsHTWFnYyCL4gxibVZZlZzKTnWz0QZpk5r0vIdkF/kBPAMOKeddE+CQPKoc5Yt5cTjBMdQSwDQToWgBJAn3jmhqgltapAV6E6b5U17MGGAUaUj07TficMfIBZDV6vxowBm1BP9WbSQE4o5h9IjPJmy73TEPDDxVmoZdQrQ5jRhly9Q8tgMUXkIIWn0oG4GYQfAXQzz1PGoCiQndM7b4RgJay/h7zBLT3hASgoKjamQJMreKf0gfuAGyYtXEIAKcL/Dss15iq6ohXghozLYiAMxPuACwtIT4yeQUxAaLrZwAoqGRKGk7qDSYTfYQ8LuYnAAAAAElFTkSuQmCC | ||
| [azure-badge]: https://img.shields.io/azure-devops/build/abhiuna12/942b3b13-d745-49e9-8d7d-b3918ff43ac2/3/master?logo=azure-pipelines&style=for-the-badge | ||
| [pypi-badge]: https://img.shields.io/pypi/v/deffcode.svg?style=for-the-badge&logo=pypi | ||
| [gitter-bagde]: https://img.shields.io/badge/Chat-Gitter-blueviolet.svg?style=for-the-badge&logo=gitter | ||
| [coffee-badge]: https://abhitronix.github.io/img/deffcode/orange_img.png | ||
| [kofi-badge]: https://www.ko-fi.com/img/githubbutton_sm.svg | ||
| [black-badge]: https://img.shields.io/badge/code%20style-black-000000.svg?style=for-the-badge&logo=github | ||
| <!-- | ||
| Internal URLs | ||
| --> | ||
| [docs]:https://abhitronix.github.io/deffcode/latest/ | ||
| [release]:https://github.com/abhiTronix/deffcode/releases/latest | ||
| [recipes]:https://abhitronix.github.io/deffcode/latest/recipes/basic/ | ||
| [license]:https://github.com/abhiTronix/deffcode/blob/master/LICENSE | ||
| [help]:https://abhitronix.github.io/deffcode/latest/help/get_help | ||
| [installation-notes]:https://abhitronix.github.io/deffcode/latest/installation/#installation-notes | ||
| [ffdecoder-api]:https://abhitronix.github.io/deffcode/latest/reference/ffdecoder/#ffdecoder-api | ||
| [sourcer-api]:https://abhitronix.github.io/deffcode/latest/reference/sourcer/#sourcer-api | ||
| [contribute]:https://abhitronix.github.io/deffcode/latest/contribution/ | ||
| [docs]: https://abhitronix.github.io/deffcode/latest/ | ||
| [release]: https://github.com/abhiTronix/deffcode/releases/latest | ||
| [recipes]: https://abhitronix.github.io/deffcode/latest/recipes/basic/ | ||
| [license]: https://github.com/abhiTronix/deffcode/blob/master/LICENSE | ||
| [help]: https://abhitronix.github.io/deffcode/latest/help/get_help | ||
| [installation-notes]: https://abhitronix.github.io/deffcode/latest/installation/#installation-notes | ||
| [ffdecoder-api]: https://abhitronix.github.io/deffcode/latest/reference/ffdecoder/#ffdecoder-api | ||
| [sourcer-api]: https://abhitronix.github.io/deffcode/latest/reference/sourcer/#sourcer-api | ||
| [contribute]: https://abhitronix.github.io/deffcode/latest/contribution/ | ||
| <!-- | ||
| Basic Recipes | ||
| --> | ||
| [basic-recipes]:https://abhitronix.github.io/deffcode/latest/recipes/basic/ | ||
| [decoding-video-files]:https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-video-files/#decoding-video-files | ||
| [decoding-camera-devices-using-indexes]:https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-camera-devices/#decoding-camera-devices-using-indexes | ||
| [decoding-network-streams]:https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-network-streams/#decoding-network-streams | ||
| [decoding-image-sequences]:https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-image-sequences/#decoding-image-sequences | ||
| [transcode-live-frames]:https://abhitronix.github.io/deffcode/latest/recipes/basic/transcode-live-frames/ | ||
| [transcoding-live-simple-filtergraphs]:https://abhitronix.github.io/deffcode/latest/recipes/basic/transcode-live-frames-simplegraphs/#transcoding-live-simple-filtergraphs | ||
| [saving-key-frames-as-image]:https://abhitronix.github.io/deffcode/latest/recipes/basic/save-keyframe-image/#saving-key-frames-as-image | ||
| [extracting-video-metadata]:https://abhitronix.github.io/deffcode/latest/recipes/basic/extract-video-metadata/#extracting-video-metadata | ||
| [accessing-rgb-frames-from-a-video-file]:https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-video-files/#accessing-rgb-frames-from-a-video-file | ||
| [capturing-and-previewing-bgr-frames-from-a-video-file]:https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-video-files/#capturing-and-previewing-bgr-frames-from-a-video-file | ||
| [capturing-and-previewing-bgr-frames-from-a-video-file]:https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-video-files/#capturing-and-previewing-bgr-frames-from-a-video-file | ||
| [enumerating-all-camera-devices-with-indexes]:https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-camera-devices/#enumerating-all-camera-devices-with-indexes | ||
| [capturing-and-previewing-frames-from-a-camera-using-indexes]:https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-camera-devices/#capturing-and-previewing-frames-from-a-camera-using-indexes | ||
| [capturing-and-previewing-frames-from-a-https-stream]:https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-network-streams/#capturing-and-previewing-frames-from-a-https-stream | ||
| [capturing-and-previewing-frames-from-a-rtsprtp-stream]:https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-network-streams/#capturing-and-previewing-frames-from-a-rtsprtp-stream | ||
| [capturing-and-previewing-frames-from-sequence-of-images]:https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-image-sequences/#capturing-and-previewing-frames-from-sequence-of-images | ||
| [capturing-and-previewing-frames-from-single-looping-image]:https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-image-sequences/#capturing-and-previewing-frames-from-single-looping-image | ||
| [transcoding-video-using-opencv-videowriter-api]:https://abhitronix.github.io/deffcode/latest/recipes/basic/transcode-live-frames/#transcoding-video-using-opencv-videowriter-api | ||
| [transcoding-lossless-video-using-writegear-api]:https://abhitronix.github.io/deffcode/latest/recipes/basic/transcode-live-frames/#transcoding-lossless-video-using-writegear-api | ||
| [transcoding-trimmed-and-reversed-video]:https://abhitronix.github.io/deffcode/latest/recipes/basic/transcode-live-frames-simplegraphs/#transcoding-trimmed-and-reversed-video | ||
| [transcoding-cropped-video]:https://abhitronix.github.io/deffcode/latest/recipes/basic/transcode-live-frames-simplegraphs/#transcoding-cropped-video | ||
| [transcoding-rotated-video-with-rotate-filter]:https://abhitronix.github.io/deffcode/latest/recipes/basic/transcode-live-frames-simplegraphs/#transcoding-rotated-video-with-rotate-filter | ||
| [transcoding-rotated-video-with-transpose-filter]:https://abhitronix.github.io/deffcode/latest/recipes/basic/transcode-live-frames-simplegraphs/#transcoding-rotated-video-with-transpose-filter | ||
| [transcoding-horizontally-flipped-and-scaled-video]:https://abhitronix.github.io/deffcode/latest/recipes/basic/transcode-live-frames-simplegraphs/#transcoding-horizontally-flipped-and-scaled-video | ||
| [extracting-key-frames-as-png-image]:https://abhitronix.github.io/deffcode/latest/recipes/basic/save-keyframe-image/#extracting-key-frames-as-png-image | ||
| [generating-thumbnail-with-a-fancy-filter]:https://abhitronix.github.io/deffcode/latest/recipes/basic/save-keyframe-image/#generating-thumbnail-with-a-fancy-filter | ||
| [extracting-video-metadata-using-sourcer-api]:https://abhitronix.github.io/deffcode/latest/recipes/basic/extract-video-metadata/#extracting-video-metadata-using-sourcer-api | ||
| [extracting-video-metadata-using-ffdecoder-api]:https://abhitronix.github.io/deffcode/latest/recipes/basic/extract-video-metadata/#extracting-video-metadata-using-ffdecoder-api | ||
| [basic-recipes]: https://abhitronix.github.io/deffcode/latest/recipes/basic/ | ||
| [decoding-video-files]: https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-video-files/#decoding-video-files | ||
| [decoding-camera-devices-using-indexes]: https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-camera-devices/#decoding-camera-devices-using-indexes | ||
| [decoding-network-streams]: https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-network-streams/#decoding-network-streams | ||
| [decoding-image-sequences]: https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-image-sequences/#decoding-image-sequences | ||
| [transcode-live-frames]: https://abhitronix.github.io/deffcode/latest/recipes/basic/transcode-live-frames/ | ||
| [transcoding-live-simple-filtergraphs]: https://abhitronix.github.io/deffcode/latest/recipes/basic/transcode-live-frames-simplegraphs/#transcoding-live-simple-filtergraphs | ||
| [saving-key-frames-as-image]: https://abhitronix.github.io/deffcode/latest/recipes/basic/save-keyframe-image/#saving-key-frames-as-image | ||
| [extracting-video-metadata]: https://abhitronix.github.io/deffcode/latest/recipes/basic/extract-video-metadata/#extracting-video-metadata | ||
| [accessing-rgb-frames-from-a-video-file]: https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-video-files/#accessing-rgb-frames-from-a-video-file | ||
| [capturing-and-previewing-bgr-frames-from-a-video-file]: https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-video-files/#capturing-and-previewing-bgr-frames-from-a-video-file | ||
| [playing-with-any-other-ffmpeg-pixel-formats]: https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-video-files/#playing-with-any-other-ffmpeg-pixel-formats | ||
| [capturing-and-previewing-frames-from-a-looping-video]: https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-video-files/#capturing-and-previewing-frames-from-a-looping-video | ||
| [enumerating-all-camera-devices-with-indexes]: https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-camera-devices/#enumerating-all-camera-devices-with-indexes | ||
| [capturing-and-previewing-frames-from-a-camera-using-indexes]: https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-camera-devices/#capturing-and-previewing-frames-from-a-camera-using-indexes | ||
| [capturing-and-previewing-frames-from-a-https-stream]: https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-network-streams/#capturing-and-previewing-frames-from-a-https-stream | ||
| [capturing-and-previewing-frames-from-a-rtsprtp-stream]: https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-network-streams/#capturing-and-previewing-frames-from-a-rtsprtp-stream | ||
| [capturing-and-previewing-frames-from-sequence-of-images]: https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-image-sequences/#capturing-and-previewing-frames-from-sequence-of-images | ||
| [capturing-and-previewing-frames-from-single-looping-image]: https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-image-sequences/#capturing-and-previewing-frames-from-single-looping-image | ||
| [transcoding-video-using-opencv-videowriter-api]: https://abhitronix.github.io/deffcode/latest/recipes/basic/transcode-live-frames/#transcoding-video-using-opencv-videowriter-api | ||
| [transcoding-lossless-video-using-writegear-api]: https://abhitronix.github.io/deffcode/latest/recipes/basic/transcode-live-frames/#transcoding-lossless-video-using-writegear-api | ||
| [transcoding-trimmed-and-reversed-video]: https://abhitronix.github.io/deffcode/latest/recipes/basic/transcode-live-frames-simplegraphs/#transcoding-trimmed-and-reversed-video | ||
| [transcoding-cropped-video]: https://abhitronix.github.io/deffcode/latest/recipes/basic/transcode-live-frames-simplegraphs/#transcoding-cropped-video | ||
| [transcoding-rotated-video-with-rotate-filter]: https://abhitronix.github.io/deffcode/latest/recipes/basic/transcode-live-frames-simplegraphs/#transcoding-rotated-video-with-rotate-filter | ||
| [transcoding-rotated-video-with-transpose-filter]: https://abhitronix.github.io/deffcode/latest/recipes/basic/transcode-live-frames-simplegraphs/#transcoding-rotated-video-with-transpose-filter | ||
| [transcoding-horizontally-flipped-and-scaled-video]: https://abhitronix.github.io/deffcode/latest/recipes/basic/transcode-live-frames-simplegraphs/#transcoding-horizontally-flipped-and-scaled-video | ||
| [extracting-key-frames-as-png-image]: https://abhitronix.github.io/deffcode/latest/recipes/basic/save-keyframe-image/#extracting-key-frames-as-png-image | ||
| [generating-thumbnail-with-a-fancy-filter]: https://abhitronix.github.io/deffcode/latest/recipes/basic/save-keyframe-image/#generating-thumbnail-with-a-fancy-filter | ||
| [extracting-video-metadata-using-sourcer-api]: https://abhitronix.github.io/deffcode/latest/recipes/basic/extract-video-metadata/#extracting-video-metadata-using-sourcer-api | ||
| [extracting-video-metadata-using-ffdecoder-api]: https://abhitronix.github.io/deffcode/latest/recipes/basic/extract-video-metadata/#extracting-video-metadata-using-ffdecoder-api | ||
@@ -462,37 +459,40 @@ <!-- | ||
| --> | ||
| [advanced-recipes]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/ | ||
| [decoding-live-virtual-sources]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-live-virtual-sources/#decoding-live-virtual-sources | ||
| [decoding-live-feed-devices]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-live-feed-devices/#decoding-live-feed-devices | ||
| [hardware-accelerated-video-decoding]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-hw-acceleration/#hardware-accelerated-video-decoding | ||
| [transcoding-live-complex-filtergraphs]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-live-frames-complexgraphs/#transcoding-live-complex-filtergraphs | ||
| [transcoding-video-art-with-filtergraphs]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-art-filtergraphs/#transcoding-video-art-with-filtergraphs | ||
| [hardware-accelerated-video-transcoding]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-hw-acceleration/#hardware-accelerated-video-transcoding | ||
| [updating-video-metadata]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/update-metadata/#updating-video-metadata | ||
| [advanced-recipes]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/ | ||
| [decoding-live-virtual-sources]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-live-virtual-sources/#decoding-live-virtual-sources | ||
| [decoding-live-feed-devices]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-live-feed-devices/#decoding-live-feed-devices | ||
| [hardware-accelerated-video-decoding]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-hw-acceleration/#hardware-accelerated-video-decoding | ||
| [transcoding-live-complex-filtergraphs]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-live-frames-complexgraphs/#transcoding-live-complex-filtergraphs | ||
| [transcoding-video-art-with-filtergraphs]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-art-filtergraphs/#transcoding-video-art-with-filtergraphs | ||
| [hardware-accelerated-video-transcoding]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-hw-acceleration/#hardware-accelerated-video-transcoding | ||
| [updating-video-metadata]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/update-metadata/#updating-video-metadata | ||
| [generate-and-decode-frames-from-sierpinski-pattern]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-live-virtual-sources/#generate-and-decode-frames-from-sierpinski-pattern | ||
| [generate-and-decode-frames-from-test-source-pattern]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-live-virtual-sources/#generate-and-decode-frames-from-test-source-pattern | ||
| [generate-and-decode-frames-from-gradients-with-custom-text-effect]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-live-virtual-sources/#generate-and-decode-frames-from-gradients-with-custom-text-effect | ||
| [generate-and-decode-frames-from-mandelbrot-test-pattern-with-vectorscope-waveforms]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-live-virtual-sources/#generate-and-decode-frames-from-mandelbrot-test-pattern-with-vectorscope-waveforms | ||
| [generate-and-decode-frames-from-game-of-life-visualization]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-live-virtual-sources/#generate-and-decode-frames-from-game-of-life-visualization | ||
| [cuvid-accelerated-hardware-based-video-decoding-and-previewing]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-hw-acceleration/#cuvid-accelerated-hardware-based-video-decoding-and-previewing | ||
| [cuda-accelerated-hardware-based-video-decoding-and-previewing]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-hw-acceleration/#cuda-accelerated-hardware-based-video-decoding-and-previewing | ||
| [transcoding-video-with-live-custom-watermark-image-overlay]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-live-frames-complexgraphs/#transcoding-video-with-live-custom-watermark-image-overlay | ||
| [transcoding-video-from-sequence-of-images-with-additional-filtering]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-live-frames-complexgraphs/#transcoding-video-from-sequence-of-images-with-additional-filtering | ||
| [transcoding-video-art-with-jetcolor-effect]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-art-filtergraphs/#transcoding-video-art-with-jetcolor-effect | ||
| [transcoding-video-art-with-yuv-bitplane-visualization]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-art-filtergraphs/#transcoding-video-art-with-yuv-bitplane-visualization | ||
| [transcoding-video-art-with-ghosting-effect]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-art-filtergraphs/#transcoding-video-art-with-ghosting-effect | ||
| [transcoding-video-art-with-pixelation-effect]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-art-filtergraphs/#transcoding-video-art-with-pixelation-effect | ||
| [capturing-and-previewing-frames-from-a-webcam-using-custom-demuxer]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-live-feed-devices/#capturing-and-previewing-frames-from-a-webcam-using-custom-demuxer | ||
| [capturing-and-previewing-frames-from-your-desktop]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-live-feed-devices/#capturing-and-previewing-frames-from-your-desktop | ||
| [cuda-accelerated-video-transcoding-with-opencvs-videowriter-api]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-hw-acceleration/#cuda-accelerated-video-transcoding-with-opencvs-videowriter-api | ||
| [cuda-nvenc-accelerated-video-transcoding-with-writegear-api]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-hw-acceleration/#cuda-nvenc-accelerated-video-transcoding-with-writegear-api | ||
| [cuda-nvenc-accelerated-end-to-end-lossless-video-transcoding-with-writegear-api]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-hw-acceleration/#cuda-nvenc-accelerated-end-to-end-lossless-video-transcoding-with-writegear-api | ||
| [added-new-attributes-to-metadata-in-ffdecoder-api]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/update-metadata/#added-new-attributes-to-metadata-in-ffdecoder-api | ||
| [overriding-source-video-metadata-in-ffdecoder-api]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/update-metadata/#overriding-source-video-metadata-in-ffdecoder-api | ||
| [generate-and-decode-frames-from-sierpinski-pattern]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-live-virtual-sources/#generate-and-decode-frames-from-sierpinski-pattern | ||
| [generate-and-decode-frames-from-test-source-pattern]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-live-virtual-sources/#generate-and-decode-frames-from-test-source-pattern | ||
| [generate-and-decode-frames-from-gradients-with-custom-text-effect]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-live-virtual-sources/#generate-and-decode-frames-from-gradients-with-custom-text-effect | ||
| [generate-and-decode-frames-from-mandelbrot-test-pattern-with-vectorscope-waveforms]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-live-virtual-sources/#generate-and-decode-frames-from-mandelbrot-test-pattern-with-vectorscope-waveforms | ||
| [generate-and-decode-frames-from-game-of-life-visualization]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-live-virtual-sources/#generate-and-decode-frames-from-game-of-life-visualization | ||
| [gpu-accelerated-hardware-based-video-decoding]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-hw-acceleration/#gpu-accelerated-hardware-based-video-decoding | ||
| [transcoding-video-with-live-custom-watermark-image-overlay]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-live-frames-complexgraphs/#transcoding-video-with-live-custom-watermark-image-overlay | ||
| [transcoding-video-from-sequence-of-images-with-additional-filtering]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-live-frames-complexgraphs/#transcoding-video-from-sequence-of-images-with-additional-filtering | ||
| [transcoding-video-art-with-jetcolor-effect]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-art-filtergraphs/#transcoding-video-art-with-jetcolor-effect | ||
| [transcoding-video-art-with-yuv-bitplane-visualization]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-art-filtergraphs/#transcoding-video-art-with-yuv-bitplane-visualization | ||
| [transcoding-video-art-with-ghosting-effect]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-art-filtergraphs/#transcoding-video-art-with-ghosting-effect | ||
| [transcoding-video-art-with-pixelation-effect]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-art-filtergraphs/#transcoding-video-art-with-pixelation-effect | ||
| [capturing-and-previewing-frames-from-a-webcam-using-custom-demuxer]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-live-feed-devices/#capturing-and-previewing-frames-from-a-webcam-using-custom-demuxer | ||
| [capturing-and-previewing-frames-from-your-desktop]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-live-feed-devices/#capturing-and-previewing-frames-from-your-desktop | ||
| [gpu-accelerated-hardware-based-video-transcoding-with-writegear-api]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-hw-acceleration/#gpu-accelerated-hardware-based-video-transcoding-with-writegear-api | ||
| [added-new-attributes-to-metadata-in-ffdecoder-api]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/update-metadata/#added-new-attributes-to-metadata-in-ffdecoder-api | ||
| [overriding-source-video-metadata-in-ffdecoder-api]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/update-metadata/#overriding-source-video-metadata-in-ffdecoder-api | ||
| <!-- | ||
| CI Apps URLs | ||
| --> | ||
| [github-flow]:https://github.com/abhiTronix/deffcode/actions/workflows/CIlinux.yml | ||
| [azure-pipeline]:https://dev.azure.com/abhiuna12/public/_build?definitionId=3 | ||
| [app]:https://ci.appveyor.com/project/abhiTronix/deffcode | ||
| [code]:https://codecov.io/gh/abhiTronix/deffcode | ||
| [github-flow]: https://github.com/abhiTronix/deffcode/actions/workflows/CIlinux.yml | ||
| [azure-pipeline]: https://dev.azure.com/abhiuna12/public/_build?definitionId=3 | ||
| [app]: https://ci.appveyor.com/project/abhiTronix/deffcode | ||
| [code]: https://codecov.io/gh/abhiTronix/deffcode | ||
| [black]: https://github.com/psf/black | ||
@@ -503,7 +503,8 @@ | ||
| --> | ||
| [opencv-py]:https://docs.opencv.org/4.x/d6/d00/tutorial_py_root.html | ||
| [ffmpeg]:https://www.ffmpeg.org/ | ||
| [pypi]:https://pypi.org/project/deffcode/ | ||
| [gitter]:https://gitter.im/deffcode-python/community?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge | ||
| [coffee]:https://www.buymeacoffee.com/2twOXFvlA | ||
| [opencv-py]: https://docs.opencv.org/4.x/d6/d00/tutorial_py_root.html | ||
| [ffmpeg]: https://www.ffmpeg.org/ | ||
| [pypi]: https://pypi.org/project/deffcode/ | ||
| [gitter]: https://gitter.im/deffcode-python/community?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge | ||
| [coffee]: https://www.buymeacoffee.com/2twOXFvlA | ||
| [kofi]: https://ko-fi.com/W7W8WTYO |
+143
-142
| <!-- | ||
| =============================================== | ||
| DeFFcode library source-code is deployed under the Apache 2.0 License: | ||
@@ -11,3 +11,3 @@ | ||
| http://www.apache.org/licenses/LICENSE-2.0 | ||
| http://www.apache.org/licenses/LICENSE-2.0 | ||
@@ -23,6 +23,6 @@ Unless required by applicable law or agreed to in writing, software | ||
| <div align="center"> | ||
|  | ||
|  | ||
|  | ||
|  | ||
| </div> | ||
@@ -32,14 +32,13 @@ | ||
| [![Build Status][github-cli]][github-flow] [![Codecov branch][codecov]][code] [![Azure DevOps builds (branch)][azure-badge]][azure-pipeline] | ||
| [![Build Status][github-cli]][github-flow] [![Codecov branch][codecov]][code] [![Azure DevOps builds (branch)][azure-badge]][azure-pipeline] | ||
| [![Glitter chat][gitter-bagde]][gitter] [![Build Status][appveyor]][app] [![PyPi version][pypi-badge]][pypi] | ||
| [![Glitter chat][gitter-bagde]][gitter] [![Build Status][appveyor]][app] [![PyPi version][pypi-badge]][pypi] | ||
| [![Code Style][black-badge]][black] | ||
| --- | ||
| ---- | ||
| [Releases][release] | [Recipes][recipes] | [Documentation][docs] | [Installation][installation-notes] | [License](#copyright) | ||
| ---- | ||
| --- | ||
@@ -79,3 +78,3 @@ </div> | ||
| - Out-of-the-box support for all prominent Computer Vision libraries. | ||
| - Cross-platform, runs on Python 3.7+, and easy to install. | ||
| - Cross-platform, runs on Python 3.7+, and easy to install. | ||
@@ -116,3 +115,3 @@ <!-- | ||
| <div align="center"> | ||
| <a href="https://abhitronix.github.io/deffcode/latest/recipes/basic/transcode-live-frames-simplegraphs/#transcoding-trimmed-and-reversed-video"><img src="docs/overrides/assets/gifs/bigbuckbunny_reversed.gif" alt="Big Buck Bunny Reversed" title="Click to view source code" width="70%" /> </a> | ||
| <a href="https://abhitronix.github.io/deffcode/latest/recipes/basic/transcode-live-frames-simplegraphs/#transcoding-trimmed-and-reversed-video"><img src="https://user-images.githubusercontent.com/34266896/211499038-46cc246d-843b-4c89-8e9a-5536395da9e7.gif" title="Click to view source code" width="70%" /> </a> | ||
| <br> | ||
@@ -129,3 +128,4 @@ <sub><i>Big Buck Bunny Reversed using Live Simple Filtergraph</i></sub> | ||
| - [Capturing and Previewing BGR frames from a video file][capturing-and-previewing-bgr-frames-from-a-video-file] _(OpenCV Support)_ | ||
| - [Playing with any other FFmpeg pixel formats][capturing-and-previewing-bgr-frames-from-a-video-file] | ||
| - [Playing with any other FFmpeg pixel formats][playing-with-any-other-ffmpeg-pixel-formats] | ||
| - [Capturing and Previewing frames from a Looping Video][capturing-and-previewing-frames-from-a-looping-video] | ||
| - [Enumerating all Camera Devices with Indexes][enumerating-all-camera-devices-with-indexes] | ||
@@ -148,3 +148,3 @@ - [Capturing and Previewing frames from a Camera using Indexes][capturing-and-previewing-frames-from-a-camera-using-indexes] | ||
| - [Transcoding Rotated video (with `rotate` filter)][transcoding-rotated-video-with-rotate-filter] | ||
| - [Transcoding Rotated video (with `transpose` filter)][transcoding-rotated-video-with-transpose-filter] | ||
| - [Transcoding Rotated video (with `transpose` filter)][transcoding-rotated-video-with-transpose-filter] | ||
| - [Transcoding Horizontally flipped and Scaled video][transcoding-horizontally-flipped-and-scaled-video] | ||
@@ -165,3 +165,2 @@ - [Extracting Key-frames as PNG image][extracting-key-frames-as-png-image] | ||
| ### B. [**Advanced Recipes 🥐**][advanced-recipes]: _Recipes to take your skills to the next level._ | ||
@@ -171,3 +170,3 @@ | ||
| <p align="center"> | ||
| <a href="https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-live-virtual-sources/#generate-and-decode-frames-from-mandelbrot-test-pattern-with-vectorscope-waveforms"><img src="docs/overrides/assets/gifs/mandelbrot_vectorscope_waveforms.gif" alt="mandelbrot test pattern" title="Click to view source code" width="70%" /></a> | ||
| <a href="https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-live-virtual-sources/#generate-and-decode-frames-from-mandelbrot-test-pattern-with-vectorscope-waveforms"><img src="https://user-images.githubusercontent.com/34266896/211498819-13fe0487-e843-4315-b4f3-c881de6c8c4a.gif" alt="mandelbrot test pattern" title="Click to view source code" width="70%" /></a> | ||
| <br> | ||
@@ -189,3 +188,4 @@ <sub><i>Live Mandelbrot pattern with a Vectorscope & two Waveforms</i></sub> | ||
| - [Capturing and Previewing frames from your Desktop][capturing-and-previewing-frames-from-your-desktop] _(Screen Recording)_ | ||
| - [GPU-accelerated Hardware-based Video Decoding][gpu-accelerated-hardware-based-video-decoding] | ||
| - [CUVID-accelerated Hardware-based Video Decoding and Previewing][cuvid-accelerated-hardware-based-video-decoding-and-previewing] | ||
| - [CUDA-accelerated Hardware-based Video Decoding and Previewing][cuda-accelerated-hardware-based-video-decoding-and-previewing] | ||
@@ -200,6 +200,8 @@ </details> | ||
| - [Transcoding video art with YUV Bitplane Visualization][transcoding-video-art-with-yuv-bitplane-visualization] | ||
| - [Transcoding video art with Jetcolor effect][transcoding-video-art-with-jetcolor-effect] | ||
| - [Transcoding video art with Jetcolor effect][transcoding-video-art-with-jetcolor-effect] | ||
| - [Transcoding video art with Ghosting effect][transcoding-video-art-with-ghosting-effect] | ||
| - [Transcoding video art with Pixelation effect][transcoding-video-art-with-pixelation-effect] | ||
| - [GPU-accelerated Hardware-based Video Transcoding with WriteGear API][gpu-accelerated-hardware-based-video-transcoding-with-writegear-api] | ||
| - [CUDA-accelerated Video Transcoding with OpenCV's VideoWriter API][cuda-accelerated-video-transcoding-with-opencvs-videowriter-api] | ||
| - [CUDA-NVENC-accelerated Video Transcoding with WriteGear API][cuda-nvenc-accelerated-video-transcoding-with-writegear-api] | ||
| - [CUDA-NVENC-accelerated End-to-end Lossless Video Transcoding with WriteGear API][cuda-nvenc-accelerated-end-to-end-lossless-video-transcoding-with-writegear-api] | ||
@@ -224,3 +226,3 @@ </details> | ||
| ### A. FFdecoder API | ||
| ### A. FFdecoder API | ||
@@ -240,3 +242,3 @@ The primary function of [**FFdecoder API**][ffdecoder-api] is to **decode 24-bit RGB video frames** from the given source: | ||
| for frame in decoder.generateFrame(): | ||
| # lets print its shape | ||
@@ -249,3 +251,3 @@ print(frame.shape) # (1080, 1920, 3) | ||
| ### B. Sourcer API | ||
| ### B. Sourcer API | ||
@@ -268,27 +270,24 @@ The primary function of [**Sourcer API**][sourcer-api] is to **gather metadata information from all multimedia streams available** in the given source: | ||
| ```json | ||
| { | ||
| "ffmpeg_binary_path": "C:\\Users\\foo\\AppData\\Local\\Temp\\ffmpeg-static-win64-gpl/bin/ffmpeg.exe", | ||
| "source": "https://abhitronix.github.io/html/Big_Buck_Bunny_1080_10s_1MB.mp4", | ||
| "source_extension": ".mp4", | ||
| "source_video_resolution": [ | ||
| 1920, | ||
| 1080 | ||
| ], | ||
| "source_video_framerate": 60.0, | ||
| "source_video_pixfmt": "yuv420p", | ||
| "source_video_decoder": "h264", | ||
| "source_duration_sec": 10.0, | ||
| "approx_video_nframes": 600, | ||
| "source_video_bitrate": "832k", | ||
| "source_audio_bitrate": "", | ||
| "source_audio_samplerate": "", | ||
| "source_has_video": true, | ||
| "source_has_audio": false, | ||
| "source_has_image_sequence": false | ||
| } | ||
| ``` | ||
| ```json | ||
| { | ||
| "ffmpeg_binary_path": "C:\\Users\\foo\\AppData\\Local\\Temp\\ffmpeg-static-win64-gpl/bin/ffmpeg.exe", | ||
| "source": "https://abhitronix.github.io/html/Big_Buck_Bunny_1080_10s_1MB.mp4", | ||
| "source_extension": ".mp4", | ||
| "source_video_resolution": [1920, 1080], | ||
| "source_video_framerate": 60.0, | ||
| "source_video_pixfmt": "yuv420p", | ||
| "source_video_decoder": "h264", | ||
| "source_duration_sec": 10.0, | ||
| "approx_video_nframes": 600, | ||
| "source_video_bitrate": "832k", | ||
| "source_audio_bitrate": "", | ||
| "source_audio_samplerate": "", | ||
| "source_has_video": true, | ||
| "source_has_audio": false, | ||
| "source_has_image_sequence": false | ||
| } | ||
| ``` | ||
| </details> | ||
| | ||
@@ -298,6 +297,5 @@ | ||
| # Contributions | ||
| > We're happy to meet new contributors💗 | ||
| > We're happy to meet new contributors💗 | ||
@@ -315,3 +313,3 @@ We welcome your contributions to help us improve and extend this project. If you want to get involved with VidGear development, checkout the **[Contribution Guidelines ▶️][contribute]** | ||
| <div align="center"> | ||
| <img src="docs/overrides/assets/images/help_us.png" alt="Donation" width="50%" /> | ||
| <img src="https://abhitronix.github.io/deffcode/latest/assets/images/help_us.png" alt="Donation" width="50%" /> | ||
| <p><i>DeFFcode is free and open source and will always remain so. ❤️</i></p> | ||
@@ -324,3 +322,2 @@ </div> | ||
| | ||
@@ -330,4 +327,2 @@ | ||
| # Citation | ||
@@ -337,14 +332,14 @@ | ||
| [](https://doi.org/10.5281/zenodo.6984364) | ||
| [](https://doi.org/10.5281/zenodo.7155399) | ||
| ```BibTeX | ||
| @software{deffcode, | ||
| author = {Abhishek Thakur}, | ||
| title = {abhiTronix/deffcode: v0.2.3}, | ||
| month = aug, | ||
| author = {Abhishek Singh Thakur}, | ||
| title = {abhiTronix/deffcode: v0.2.4}, | ||
| month = oct, | ||
| year = 2022, | ||
| publisher = {Zenodo}, | ||
| version = {v0.2.3}, | ||
| doi = {10.5281/zenodo.6984364}, | ||
| url = {https://doi.org/10.5281/zenodo.6984364} | ||
| version = {v0.2.4}, | ||
| doi = {10.5281/zenodo.7155399}, | ||
| url = {https://doi.org/10.5281/zenodo.7155399} | ||
| } | ||
@@ -363,63 +358,65 @@ ``` | ||
| <!-- | ||
| CI Badges | ||
| --> | ||
| [appveyor]:https://img.shields.io/appveyor/ci/abhitronix/deffcode.svg?style=for-the-badge&logo=appveyor | ||
| [codecov]:https://img.shields.io/codecov/c/gh/abhiTronix/deffcode?logo=codecov&style=for-the-badge&token=zrES4mwVKe | ||
| [github-cli]:https://img.shields.io/github/workflow/status/abhiTronix/deffcode/GitHub%20Action%20workflow%20for%20Linux?style=for-the-badge&logo=data:image/svg%2bxml;base64,PHN2ZyB3aWR0aD0iNDgiIGhlaWdodD0iNDgiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMTAgMWE5IDkgMCAwMTkgOSA5IDkgMCAwMS05IDkgOSA5IDAgMDEtOS05IDkgOSAwIDAxOS05ek0yMyAxOWE2IDYgMCAxMTAgMTIgNiA2IDAgMDEwLTEyek0yMyAzNWE2IDYgMCAxMTAgMTIgNiA2IDAgMDEwLTEyeiIgc3Ryb2tlPSJ2YXIoLS1jb2xvci1tYXJrZXRpbmctaWNvbi1wcmltYXJ5LCAjMjA4OEZGKSIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz48cGF0aCBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00MSAzNWE2IDYgMCAxMTAgMTIgNiA2IDAgMDEwLTEyeiIgc3Ryb2tlPSJ2YXIoLS1jb2xvci1tYXJrZXRpbmctaWNvbi1zZWNvbmRhcnksICM3OUI4RkYpIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPjxwYXRoIGQ9Ik0yNS4wMzcgMjMuNjA3bC0zLjA3IDMuMDY1LTEuNDktMS40ODUiIHN0cm9rZT0idmFyKC0tY29sb3ItbWFya2V0aW5nLWljb24tcHJpbWFyeSwgIzIwODhGRikiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+PHBhdGggY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNNDEgMTlhNiA2IDAgMTEwIDEyIDYgNiAwIDAxMC0xMnoiIHN0cm9rZT0idmFyKC0tY29sb3ItbWFya2V0aW5nLWljb24tcHJpbWFyeSwgIzIwODhGRikiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+PHBhdGggZD0iTTQzLjAzNiAyMy42MDdsLTMuMDY5IDMuMDY1LTEuNDktMS40ODVNNyA2LjgxMmExIDEgMCAwMTEuNTMzLS44NDZsNS4xMTMgMy4yMmExIDEgMCAwMS0uMDA2IDEuNjk3bC01LjExMyAzLjE3QTEgMSAwIDAxNyAxMy4yMDNWNi44MTN6TTkgMTl2MTVjMCAzLjg2NiAzLjE3NyA3IDcgN2gxIiBzdHJva2U9InZhcigtLWNvbG9yLW1hcmtldGluZy1pY29uLXByaW1hcnksICMyMDg4RkYpIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPjxwYXRoIGQ9Ik0xNi45NDkgMjZhMSAxIDAgMTAwLTJ2MnpNOCAxOS4wMzVBNi45NjUgNi45NjUgMCAwMDE0Ljk2NSAyNnYtMkE0Ljk2NSA0Ljk2NSAwIDAxMTAgMTkuMDM1SDh6TTE0Ljk2NSAyNmgxLjk4NHYtMmgtMS45ODR2MnoiIGZpbGw9InZhcigtLWNvbG9yLW1hcmtldGluZy1pY29uLXByaW1hcnksICMyMDg4RkYpIi8+PHBhdGggZD0iTTI5LjA1NSAyNWg1Ljk0NCIgc3Ryb2tlPSJ2YXIoLS1jb2xvci1tYXJrZXRpbmctaWNvbi1wcmltYXJ5LCAjMjA4OEZGKSIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTIxIDQwYTEgMSAwIDExLS4wMDEgMi4wMDFBMSAxIDAgMDEyMSA0MHpNMjUgNDBhMSAxIDAgMTEtLjAwMSAyLjAwMUExIDEgMCAwMTI1IDQweiIgZmlsbD0idmFyKC0tY29sb3ItbWFya2V0aW5nLWljb24tc2Vjb25kYXJ5LCAjNzlCOEZGKSIvPjxwYXRoIGQ9Ik0zNC4wMDUgNDEuMDA3bC0xLjAxMy4wMzMiIHN0cm9rZT0idmFyKC0tY29sb3ItbWFya2V0aW5nLWljb24tc2Vjb25kYXJ5LCAjNzlCOEZGKSIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiLz48L3N2Zz4= | ||
| [prs-badge]:https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=for-the-badge&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAABC0lEQVRYhdWVPQoCMRCFX6HY2ghaiZUXsLW0EDyBrbWtN/EUHsHTWFnYyCL4gxibVZZlZzKTnWz0QZpk5r0vIdkF/kBPAMOKeddE+CQPKoc5Yt5cTjBMdQSwDQToWgBJAn3jmhqgltapAV6E6b5U17MGGAUaUj07TficMfIBZDV6vxowBm1BP9WbSQE4o5h9IjPJmy73TEPDDxVmoZdQrQ5jRhly9Q8tgMUXkIIWn0oG4GYQfAXQzz1PGoCiQndM7b4RgJay/h7zBLT3hASgoKjamQJMreKf0gfuAGyYtXEIAKcL/Dss15iq6ohXghozLYiAMxPuACwtIT4yeQUxAaLrZwAoqGRKGk7qDSYTfYQ8LuYnAAAAAElFTkSuQmCC | ||
| [azure-badge]:https://img.shields.io/azure-devops/build/abhiuna12/942b3b13-d745-49e9-8d7d-b3918ff43ac2/3/master?logo=azure-pipelines&style=for-the-badge | ||
| [pypi-badge]:https://img.shields.io/pypi/v/deffcode.svg?style=for-the-badge&logo=pypi | ||
| [gitter-bagde]:https://img.shields.io/badge/Chat-Gitter-blueviolet.svg?style=for-the-badge&logo=gitter | ||
| [Coffee-badge]:https://abhitronix.github.io/img/deffcode/orange_img.png | ||
| [kofi-badge]:https://www.ko-fi.com/img/githubbutton_sm.svg | ||
| [black-badge]:https://img.shields.io/badge/code%20style-black-000000.svg?style=for-the-badge&logo=github | ||
| [appveyor]: https://img.shields.io/appveyor/ci/abhitronix/deffcode.svg?style=for-the-badge&logo=appveyor | ||
| [codecov]: https://img.shields.io/codecov/c/gh/abhiTronix/deffcode?logo=codecov&style=for-the-badge&token=zrES4mwVKe | ||
| [github-cli]: https://img.shields.io/github/actions/workflow/status/abhiTronix/deffcode/.github/workflows/CIlinux.yml?style=for-the-badge&logo=data:image/svg%2bxml;base64,PHN2ZyB3aWR0aD0iNDgiIGhlaWdodD0iNDgiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMTAgMWE5IDkgMCAwMTkgOSA5IDkgMCAwMS05IDkgOSA5IDAgMDEtOS05IDkgOSAwIDAxOS05ek0yMyAxOWE2IDYgMCAxMTAgMTIgNiA2IDAgMDEwLTEyek0yMyAzNWE2IDYgMCAxMTAgMTIgNiA2IDAgMDEwLTEyeiIgc3Ryb2tlPSJ2YXIoLS1jb2xvci1tYXJrZXRpbmctaWNvbi1wcmltYXJ5LCAjMjA4OEZGKSIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz48cGF0aCBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00MSAzNWE2IDYgMCAxMTAgMTIgNiA2IDAgMDEwLTEyeiIgc3Ryb2tlPSJ2YXIoLS1jb2xvci1tYXJrZXRpbmctaWNvbi1zZWNvbmRhcnksICM3OUI4RkYpIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPjxwYXRoIGQ9Ik0yNS4wMzcgMjMuNjA3bC0zLjA3IDMuMDY1LTEuNDktMS40ODUiIHN0cm9rZT0idmFyKC0tY29sb3ItbWFya2V0aW5nLWljb24tcHJpbWFyeSwgIzIwODhGRikiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+PHBhdGggY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNNDEgMTlhNiA2IDAgMTEwIDEyIDYgNiAwIDAxMC0xMnoiIHN0cm9rZT0idmFyKC0tY29sb3ItbWFya2V0aW5nLWljb24tcHJpbWFyeSwgIzIwODhGRikiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+PHBhdGggZD0iTTQzLjAzNiAyMy42MDdsLTMuMDY5IDMuMDY1LTEuNDktMS40ODVNNyA2LjgxMmExIDEgMCAwMTEuNTMzLS44NDZsNS4xMTMgMy4yMmExIDEgMCAwMS0uMDA2IDEuNjk3bC01LjExMyAzLjE3QTEgMSAwIDAxNyAxMy4yMDNWNi44MTN6TTkgMTl2MTVjMCAzLjg2NiAzLjE3NyA3IDcgN2gxIiBzdHJva2U9InZhcigtLWNvbG9yLW1hcmtldGluZy1pY29uLXByaW1hcnksICMyMDg4RkYpIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPjxwYXRoIGQ9Ik0xNi45NDkgMjZhMSAxIDAgMTAwLTJ2MnpNOCAxOS4wMzVBNi45NjUgNi45NjUgMCAwMDE0Ljk2NSAyNnYtMkE0Ljk2NSA0Ljk2NSAwIDAxMTAgMTkuMDM1SDh6TTE0Ljk2NSAyNmgxLjk4NHYtMmgtMS45ODR2MnoiIGZpbGw9InZhcigtLWNvbG9yLW1hcmtldGluZy1pY29uLXByaW1hcnksICMyMDg4RkYpIi8+PHBhdGggZD0iTTI5LjA1NSAyNWg1Ljk0NCIgc3Ryb2tlPSJ2YXIoLS1jb2xvci1tYXJrZXRpbmctaWNvbi1wcmltYXJ5LCAjMjA4OEZGKSIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTIxIDQwYTEgMSAwIDExLS4wMDEgMi4wMDFBMSAxIDAgMDEyMSA0MHpNMjUgNDBhMSAxIDAgMTEtLjAwMSAyLjAwMUExIDEgMCAwMTI1IDQweiIgZmlsbD0idmFyKC0tY29sb3ItbWFya2V0aW5nLWljb24tc2Vjb25kYXJ5LCAjNzlCOEZGKSIvPjxwYXRoIGQ9Ik0zNC4wMDUgNDEuMDA3bC0xLjAxMy4wMzMiIHN0cm9rZT0idmFyKC0tY29sb3ItbWFya2V0aW5nLWljb24tc2Vjb25kYXJ5LCAjNzlCOEZGKSIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiLz48L3N2Zz4= | ||
| [prs-badge]: https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=for-the-badge&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAABC0lEQVRYhdWVPQoCMRCFX6HY2ghaiZUXsLW0EDyBrbWtN/EUHsHTWFnYyCL4gxibVZZlZzKTnWz0QZpk5r0vIdkF/kBPAMOKeddE+CQPKoc5Yt5cTjBMdQSwDQToWgBJAn3jmhqgltapAV6E6b5U17MGGAUaUj07TficMfIBZDV6vxowBm1BP9WbSQE4o5h9IjPJmy73TEPDDxVmoZdQrQ5jRhly9Q8tgMUXkIIWn0oG4GYQfAXQzz1PGoCiQndM7b4RgJay/h7zBLT3hASgoKjamQJMreKf0gfuAGyYtXEIAKcL/Dss15iq6ohXghozLYiAMxPuACwtIT4yeQUxAaLrZwAoqGRKGk7qDSYTfYQ8LuYnAAAAAElFTkSuQmCC | ||
| [azure-badge]: https://img.shields.io/azure-devops/build/abhiuna12/942b3b13-d745-49e9-8d7d-b3918ff43ac2/3/master?logo=azure-pipelines&style=for-the-badge | ||
| [pypi-badge]: https://img.shields.io/pypi/v/deffcode.svg?style=for-the-badge&logo=pypi | ||
| [gitter-bagde]: https://img.shields.io/badge/Chat-Gitter-blueviolet.svg?style=for-the-badge&logo=gitter | ||
| [coffee-badge]: https://abhitronix.github.io/img/deffcode/orange_img.png | ||
| [kofi-badge]: https://www.ko-fi.com/img/githubbutton_sm.svg | ||
| [black-badge]: https://img.shields.io/badge/code%20style-black-000000.svg?style=for-the-badge&logo=github | ||
| <!-- | ||
| Internal URLs | ||
| --> | ||
| [docs]:https://abhitronix.github.io/deffcode/latest/ | ||
| [release]:https://github.com/abhiTronix/deffcode/releases/latest | ||
| [recipes]:https://abhitronix.github.io/deffcode/latest/recipes/basic/ | ||
| [license]:https://github.com/abhiTronix/deffcode/blob/master/LICENSE | ||
| [help]:https://abhitronix.github.io/deffcode/latest/help/get_help | ||
| [installation-notes]:https://abhitronix.github.io/deffcode/latest/installation/#installation-notes | ||
| [ffdecoder-api]:https://abhitronix.github.io/deffcode/latest/reference/ffdecoder/#ffdecoder-api | ||
| [sourcer-api]:https://abhitronix.github.io/deffcode/latest/reference/sourcer/#sourcer-api | ||
| [contribute]:https://abhitronix.github.io/deffcode/latest/contribution/ | ||
| [docs]: https://abhitronix.github.io/deffcode/latest/ | ||
| [release]: https://github.com/abhiTronix/deffcode/releases/latest | ||
| [recipes]: https://abhitronix.github.io/deffcode/latest/recipes/basic/ | ||
| [license]: https://github.com/abhiTronix/deffcode/blob/master/LICENSE | ||
| [help]: https://abhitronix.github.io/deffcode/latest/help/get_help | ||
| [installation-notes]: https://abhitronix.github.io/deffcode/latest/installation/#installation-notes | ||
| [ffdecoder-api]: https://abhitronix.github.io/deffcode/latest/reference/ffdecoder/#ffdecoder-api | ||
| [sourcer-api]: https://abhitronix.github.io/deffcode/latest/reference/sourcer/#sourcer-api | ||
| [contribute]: https://abhitronix.github.io/deffcode/latest/contribution/ | ||
| <!-- | ||
| Basic Recipes | ||
| --> | ||
| [basic-recipes]:https://abhitronix.github.io/deffcode/latest/recipes/basic/ | ||
| [decoding-video-files]:https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-video-files/#decoding-video-files | ||
| [decoding-camera-devices-using-indexes]:https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-camera-devices/#decoding-camera-devices-using-indexes | ||
| [decoding-network-streams]:https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-network-streams/#decoding-network-streams | ||
| [decoding-image-sequences]:https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-image-sequences/#decoding-image-sequences | ||
| [transcode-live-frames]:https://abhitronix.github.io/deffcode/latest/recipes/basic/transcode-live-frames/ | ||
| [transcoding-live-simple-filtergraphs]:https://abhitronix.github.io/deffcode/latest/recipes/basic/transcode-live-frames-simplegraphs/#transcoding-live-simple-filtergraphs | ||
| [saving-key-frames-as-image]:https://abhitronix.github.io/deffcode/latest/recipes/basic/save-keyframe-image/#saving-key-frames-as-image | ||
| [extracting-video-metadata]:https://abhitronix.github.io/deffcode/latest/recipes/basic/extract-video-metadata/#extracting-video-metadata | ||
| [accessing-rgb-frames-from-a-video-file]:https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-video-files/#accessing-rgb-frames-from-a-video-file | ||
| [capturing-and-previewing-bgr-frames-from-a-video-file]:https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-video-files/#capturing-and-previewing-bgr-frames-from-a-video-file | ||
| [capturing-and-previewing-bgr-frames-from-a-video-file]:https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-video-files/#capturing-and-previewing-bgr-frames-from-a-video-file | ||
| [enumerating-all-camera-devices-with-indexes]:https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-camera-devices/#enumerating-all-camera-devices-with-indexes | ||
| [capturing-and-previewing-frames-from-a-camera-using-indexes]:https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-camera-devices/#capturing-and-previewing-frames-from-a-camera-using-indexes | ||
| [capturing-and-previewing-frames-from-a-https-stream]:https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-network-streams/#capturing-and-previewing-frames-from-a-https-stream | ||
| [capturing-and-previewing-frames-from-a-rtsprtp-stream]:https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-network-streams/#capturing-and-previewing-frames-from-a-rtsprtp-stream | ||
| [capturing-and-previewing-frames-from-sequence-of-images]:https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-image-sequences/#capturing-and-previewing-frames-from-sequence-of-images | ||
| [capturing-and-previewing-frames-from-single-looping-image]:https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-image-sequences/#capturing-and-previewing-frames-from-single-looping-image | ||
| [transcoding-video-using-opencv-videowriter-api]:https://abhitronix.github.io/deffcode/latest/recipes/basic/transcode-live-frames/#transcoding-video-using-opencv-videowriter-api | ||
| [transcoding-lossless-video-using-writegear-api]:https://abhitronix.github.io/deffcode/latest/recipes/basic/transcode-live-frames/#transcoding-lossless-video-using-writegear-api | ||
| [transcoding-trimmed-and-reversed-video]:https://abhitronix.github.io/deffcode/latest/recipes/basic/transcode-live-frames-simplegraphs/#transcoding-trimmed-and-reversed-video | ||
| [transcoding-cropped-video]:https://abhitronix.github.io/deffcode/latest/recipes/basic/transcode-live-frames-simplegraphs/#transcoding-cropped-video | ||
| [transcoding-rotated-video-with-rotate-filter]:https://abhitronix.github.io/deffcode/latest/recipes/basic/transcode-live-frames-simplegraphs/#transcoding-rotated-video-with-rotate-filter | ||
| [transcoding-rotated-video-with-transpose-filter]:https://abhitronix.github.io/deffcode/latest/recipes/basic/transcode-live-frames-simplegraphs/#transcoding-rotated-video-with-transpose-filter | ||
| [transcoding-horizontally-flipped-and-scaled-video]:https://abhitronix.github.io/deffcode/latest/recipes/basic/transcode-live-frames-simplegraphs/#transcoding-horizontally-flipped-and-scaled-video | ||
| [extracting-key-frames-as-png-image]:https://abhitronix.github.io/deffcode/latest/recipes/basic/save-keyframe-image/#extracting-key-frames-as-png-image | ||
| [generating-thumbnail-with-a-fancy-filter]:https://abhitronix.github.io/deffcode/latest/recipes/basic/save-keyframe-image/#generating-thumbnail-with-a-fancy-filter | ||
| [extracting-video-metadata-using-sourcer-api]:https://abhitronix.github.io/deffcode/latest/recipes/basic/extract-video-metadata/#extracting-video-metadata-using-sourcer-api | ||
| [extracting-video-metadata-using-ffdecoder-api]:https://abhitronix.github.io/deffcode/latest/recipes/basic/extract-video-metadata/#extracting-video-metadata-using-ffdecoder-api | ||
| [basic-recipes]: https://abhitronix.github.io/deffcode/latest/recipes/basic/ | ||
| [decoding-video-files]: https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-video-files/#decoding-video-files | ||
| [decoding-camera-devices-using-indexes]: https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-camera-devices/#decoding-camera-devices-using-indexes | ||
| [decoding-network-streams]: https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-network-streams/#decoding-network-streams | ||
| [decoding-image-sequences]: https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-image-sequences/#decoding-image-sequences | ||
| [transcode-live-frames]: https://abhitronix.github.io/deffcode/latest/recipes/basic/transcode-live-frames/ | ||
| [transcoding-live-simple-filtergraphs]: https://abhitronix.github.io/deffcode/latest/recipes/basic/transcode-live-frames-simplegraphs/#transcoding-live-simple-filtergraphs | ||
| [saving-key-frames-as-image]: https://abhitronix.github.io/deffcode/latest/recipes/basic/save-keyframe-image/#saving-key-frames-as-image | ||
| [extracting-video-metadata]: https://abhitronix.github.io/deffcode/latest/recipes/basic/extract-video-metadata/#extracting-video-metadata | ||
| [accessing-rgb-frames-from-a-video-file]: https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-video-files/#accessing-rgb-frames-from-a-video-file | ||
| [capturing-and-previewing-bgr-frames-from-a-video-file]: https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-video-files/#capturing-and-previewing-bgr-frames-from-a-video-file | ||
| [playing-with-any-other-ffmpeg-pixel-formats]: https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-video-files/#playing-with-any-other-ffmpeg-pixel-formats | ||
| [capturing-and-previewing-frames-from-a-looping-video]: https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-video-files/#capturing-and-previewing-frames-from-a-looping-video | ||
| [enumerating-all-camera-devices-with-indexes]: https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-camera-devices/#enumerating-all-camera-devices-with-indexes | ||
| [capturing-and-previewing-frames-from-a-camera-using-indexes]: https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-camera-devices/#capturing-and-previewing-frames-from-a-camera-using-indexes | ||
| [capturing-and-previewing-frames-from-a-https-stream]: https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-network-streams/#capturing-and-previewing-frames-from-a-https-stream | ||
| [capturing-and-previewing-frames-from-a-rtsprtp-stream]: https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-network-streams/#capturing-and-previewing-frames-from-a-rtsprtp-stream | ||
| [capturing-and-previewing-frames-from-sequence-of-images]: https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-image-sequences/#capturing-and-previewing-frames-from-sequence-of-images | ||
| [capturing-and-previewing-frames-from-single-looping-image]: https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-image-sequences/#capturing-and-previewing-frames-from-single-looping-image | ||
| [transcoding-video-using-opencv-videowriter-api]: https://abhitronix.github.io/deffcode/latest/recipes/basic/transcode-live-frames/#transcoding-video-using-opencv-videowriter-api | ||
| [transcoding-lossless-video-using-writegear-api]: https://abhitronix.github.io/deffcode/latest/recipes/basic/transcode-live-frames/#transcoding-lossless-video-using-writegear-api | ||
| [transcoding-trimmed-and-reversed-video]: https://abhitronix.github.io/deffcode/latest/recipes/basic/transcode-live-frames-simplegraphs/#transcoding-trimmed-and-reversed-video | ||
| [transcoding-cropped-video]: https://abhitronix.github.io/deffcode/latest/recipes/basic/transcode-live-frames-simplegraphs/#transcoding-cropped-video | ||
| [transcoding-rotated-video-with-rotate-filter]: https://abhitronix.github.io/deffcode/latest/recipes/basic/transcode-live-frames-simplegraphs/#transcoding-rotated-video-with-rotate-filter | ||
| [transcoding-rotated-video-with-transpose-filter]: https://abhitronix.github.io/deffcode/latest/recipes/basic/transcode-live-frames-simplegraphs/#transcoding-rotated-video-with-transpose-filter | ||
| [transcoding-horizontally-flipped-and-scaled-video]: https://abhitronix.github.io/deffcode/latest/recipes/basic/transcode-live-frames-simplegraphs/#transcoding-horizontally-flipped-and-scaled-video | ||
| [extracting-key-frames-as-png-image]: https://abhitronix.github.io/deffcode/latest/recipes/basic/save-keyframe-image/#extracting-key-frames-as-png-image | ||
| [generating-thumbnail-with-a-fancy-filter]: https://abhitronix.github.io/deffcode/latest/recipes/basic/save-keyframe-image/#generating-thumbnail-with-a-fancy-filter | ||
| [extracting-video-metadata-using-sourcer-api]: https://abhitronix.github.io/deffcode/latest/recipes/basic/extract-video-metadata/#extracting-video-metadata-using-sourcer-api | ||
| [extracting-video-metadata-using-ffdecoder-api]: https://abhitronix.github.io/deffcode/latest/recipes/basic/extract-video-metadata/#extracting-video-metadata-using-ffdecoder-api | ||
@@ -429,37 +426,40 @@ <!-- | ||
| --> | ||
| [advanced-recipes]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/ | ||
| [decoding-live-virtual-sources]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-live-virtual-sources/#decoding-live-virtual-sources | ||
| [decoding-live-feed-devices]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-live-feed-devices/#decoding-live-feed-devices | ||
| [hardware-accelerated-video-decoding]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-hw-acceleration/#hardware-accelerated-video-decoding | ||
| [transcoding-live-complex-filtergraphs]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-live-frames-complexgraphs/#transcoding-live-complex-filtergraphs | ||
| [transcoding-video-art-with-filtergraphs]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-art-filtergraphs/#transcoding-video-art-with-filtergraphs | ||
| [hardware-accelerated-video-transcoding]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-hw-acceleration/#hardware-accelerated-video-transcoding | ||
| [updating-video-metadata]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/update-metadata/#updating-video-metadata | ||
| [advanced-recipes]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/ | ||
| [decoding-live-virtual-sources]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-live-virtual-sources/#decoding-live-virtual-sources | ||
| [decoding-live-feed-devices]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-live-feed-devices/#decoding-live-feed-devices | ||
| [hardware-accelerated-video-decoding]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-hw-acceleration/#hardware-accelerated-video-decoding | ||
| [transcoding-live-complex-filtergraphs]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-live-frames-complexgraphs/#transcoding-live-complex-filtergraphs | ||
| [transcoding-video-art-with-filtergraphs]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-art-filtergraphs/#transcoding-video-art-with-filtergraphs | ||
| [hardware-accelerated-video-transcoding]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-hw-acceleration/#hardware-accelerated-video-transcoding | ||
| [updating-video-metadata]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/update-metadata/#updating-video-metadata | ||
| [generate-and-decode-frames-from-sierpinski-pattern]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-live-virtual-sources/#generate-and-decode-frames-from-sierpinski-pattern | ||
| [generate-and-decode-frames-from-test-source-pattern]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-live-virtual-sources/#generate-and-decode-frames-from-test-source-pattern | ||
| [generate-and-decode-frames-from-gradients-with-custom-text-effect]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-live-virtual-sources/#generate-and-decode-frames-from-gradients-with-custom-text-effect | ||
| [generate-and-decode-frames-from-mandelbrot-test-pattern-with-vectorscope-waveforms]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-live-virtual-sources/#generate-and-decode-frames-from-mandelbrot-test-pattern-with-vectorscope-waveforms | ||
| [generate-and-decode-frames-from-game-of-life-visualization]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-live-virtual-sources/#generate-and-decode-frames-from-game-of-life-visualization | ||
| [cuvid-accelerated-hardware-based-video-decoding-and-previewing]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-hw-acceleration/#cuvid-accelerated-hardware-based-video-decoding-and-previewing | ||
| [cuda-accelerated-hardware-based-video-decoding-and-previewing]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-hw-acceleration/#cuda-accelerated-hardware-based-video-decoding-and-previewing | ||
| [transcoding-video-with-live-custom-watermark-image-overlay]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-live-frames-complexgraphs/#transcoding-video-with-live-custom-watermark-image-overlay | ||
| [transcoding-video-from-sequence-of-images-with-additional-filtering]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-live-frames-complexgraphs/#transcoding-video-from-sequence-of-images-with-additional-filtering | ||
| [transcoding-video-art-with-jetcolor-effect]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-art-filtergraphs/#transcoding-video-art-with-jetcolor-effect | ||
| [transcoding-video-art-with-yuv-bitplane-visualization]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-art-filtergraphs/#transcoding-video-art-with-yuv-bitplane-visualization | ||
| [transcoding-video-art-with-ghosting-effect]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-art-filtergraphs/#transcoding-video-art-with-ghosting-effect | ||
| [transcoding-video-art-with-pixelation-effect]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-art-filtergraphs/#transcoding-video-art-with-pixelation-effect | ||
| [capturing-and-previewing-frames-from-a-webcam-using-custom-demuxer]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-live-feed-devices/#capturing-and-previewing-frames-from-a-webcam-using-custom-demuxer | ||
| [capturing-and-previewing-frames-from-your-desktop]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-live-feed-devices/#capturing-and-previewing-frames-from-your-desktop | ||
| [cuda-accelerated-video-transcoding-with-opencvs-videowriter-api]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-hw-acceleration/#cuda-accelerated-video-transcoding-with-opencvs-videowriter-api | ||
| [cuda-nvenc-accelerated-video-transcoding-with-writegear-api]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-hw-acceleration/#cuda-nvenc-accelerated-video-transcoding-with-writegear-api | ||
| [cuda-nvenc-accelerated-end-to-end-lossless-video-transcoding-with-writegear-api]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-hw-acceleration/#cuda-nvenc-accelerated-end-to-end-lossless-video-transcoding-with-writegear-api | ||
| [added-new-attributes-to-metadata-in-ffdecoder-api]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/update-metadata/#added-new-attributes-to-metadata-in-ffdecoder-api | ||
| [overriding-source-video-metadata-in-ffdecoder-api]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/update-metadata/#overriding-source-video-metadata-in-ffdecoder-api | ||
| [generate-and-decode-frames-from-sierpinski-pattern]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-live-virtual-sources/#generate-and-decode-frames-from-sierpinski-pattern | ||
| [generate-and-decode-frames-from-test-source-pattern]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-live-virtual-sources/#generate-and-decode-frames-from-test-source-pattern | ||
| [generate-and-decode-frames-from-gradients-with-custom-text-effect]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-live-virtual-sources/#generate-and-decode-frames-from-gradients-with-custom-text-effect | ||
| [generate-and-decode-frames-from-mandelbrot-test-pattern-with-vectorscope-waveforms]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-live-virtual-sources/#generate-and-decode-frames-from-mandelbrot-test-pattern-with-vectorscope-waveforms | ||
| [generate-and-decode-frames-from-game-of-life-visualization]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-live-virtual-sources/#generate-and-decode-frames-from-game-of-life-visualization | ||
| [gpu-accelerated-hardware-based-video-decoding]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-hw-acceleration/#gpu-accelerated-hardware-based-video-decoding | ||
| [transcoding-video-with-live-custom-watermark-image-overlay]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-live-frames-complexgraphs/#transcoding-video-with-live-custom-watermark-image-overlay | ||
| [transcoding-video-from-sequence-of-images-with-additional-filtering]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-live-frames-complexgraphs/#transcoding-video-from-sequence-of-images-with-additional-filtering | ||
| [transcoding-video-art-with-jetcolor-effect]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-art-filtergraphs/#transcoding-video-art-with-jetcolor-effect | ||
| [transcoding-video-art-with-yuv-bitplane-visualization]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-art-filtergraphs/#transcoding-video-art-with-yuv-bitplane-visualization | ||
| [transcoding-video-art-with-ghosting-effect]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-art-filtergraphs/#transcoding-video-art-with-ghosting-effect | ||
| [transcoding-video-art-with-pixelation-effect]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-art-filtergraphs/#transcoding-video-art-with-pixelation-effect | ||
| [capturing-and-previewing-frames-from-a-webcam-using-custom-demuxer]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-live-feed-devices/#capturing-and-previewing-frames-from-a-webcam-using-custom-demuxer | ||
| [capturing-and-previewing-frames-from-your-desktop]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-live-feed-devices/#capturing-and-previewing-frames-from-your-desktop | ||
| [gpu-accelerated-hardware-based-video-transcoding-with-writegear-api]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-hw-acceleration/#gpu-accelerated-hardware-based-video-transcoding-with-writegear-api | ||
| [added-new-attributes-to-metadata-in-ffdecoder-api]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/update-metadata/#added-new-attributes-to-metadata-in-ffdecoder-api | ||
| [overriding-source-video-metadata-in-ffdecoder-api]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/update-metadata/#overriding-source-video-metadata-in-ffdecoder-api | ||
| <!-- | ||
| CI Apps URLs | ||
| --> | ||
| [github-flow]:https://github.com/abhiTronix/deffcode/actions/workflows/CIlinux.yml | ||
| [azure-pipeline]:https://dev.azure.com/abhiuna12/public/_build?definitionId=3 | ||
| [app]:https://ci.appveyor.com/project/abhiTronix/deffcode | ||
| [code]:https://codecov.io/gh/abhiTronix/deffcode | ||
| [github-flow]: https://github.com/abhiTronix/deffcode/actions/workflows/CIlinux.yml | ||
| [azure-pipeline]: https://dev.azure.com/abhiuna12/public/_build?definitionId=3 | ||
| [app]: https://ci.appveyor.com/project/abhiTronix/deffcode | ||
| [code]: https://codecov.io/gh/abhiTronix/deffcode | ||
| [black]: https://github.com/psf/black | ||
@@ -470,7 +470,8 @@ | ||
| --> | ||
| [opencv-py]:https://docs.opencv.org/4.x/d6/d00/tutorial_py_root.html | ||
| [ffmpeg]:https://www.ffmpeg.org/ | ||
| [pypi]:https://pypi.org/project/deffcode/ | ||
| [gitter]:https://gitter.im/deffcode-python/community?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge | ||
| [coffee]:https://www.buymeacoffee.com/2twOXFvlA | ||
| [opencv-py]: https://docs.opencv.org/4.x/d6/d00/tutorial_py_root.html | ||
| [ffmpeg]: https://www.ffmpeg.org/ | ||
| [pypi]: https://pypi.org/project/deffcode/ | ||
| [gitter]: https://gitter.im/deffcode-python/community?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge | ||
| [coffee]: https://www.buymeacoffee.com/2twOXFvlA | ||
| [kofi]: https://ko-fi.com/W7W8WTYO |
+1
-5
@@ -22,3 +22,2 @@ """ | ||
| # import the necessary packages | ||
| import setuptools | ||
| from setuptools import setup | ||
@@ -40,3 +39,3 @@ from distutils.util import convert_path | ||
| long_description.replace( | ||
| "", | ||
| "", | ||
| "", | ||
@@ -54,5 +53,2 @@ ) | ||
| ) | ||
| long_description = long_description.replace( | ||
| "docs/overrides/", "https://abhitronix.github.io/deffcode/latest/" | ||
| ) | ||
@@ -59,0 +55,0 @@ |
Alert delta unavailable
Currently unable to show alert delta for PyPI packages.
223357
2.57%2421
1.04%