cutcutcodec


Namecutcutcodec JSON
Version 1.0.3.post0 PyPI version JSON
download
home_page
Summaryvideo editing software
upload_time2024-02-25 12:45:39
maintainer
docs_urlNone
author
requires_python<3.13,>=3.9
licenseCopyright © 2023 Robin RICHARD Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
keywords audio effect equation ffmpeg filtering fractal graph graphical interface gui open source video editing
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            .. rst syntax: https://deusyss.developpez.com/tutoriels/Python/SphinxDoc/
.. version conv: https://peps.python.org/pep-0440/
.. icons: https://specifications.freedesktop.org/icon-naming-spec/latest/ar01s04.html or https://www.pythonguis.com/faq/built-in-qicons-pyqt/
.. pyqtdoc: https://www.riverbankcomputing.com/static/Docs/PyQt6/
.. colors-spaces: https://trac.ffmpeg.org/wiki/colorspace

***********
CutCutCodec
***********

.. image:: https://img.shields.io/badge/License-MIT-green.svg
    :alt: [license MIT]
    :target: https://opensource.org/licenses/MIT

.. image:: https://img.shields.io/badge/linting-pylint-green
    :alt: [linting: pylint]
    :target: https://github.com/pylint-dev/pylint

.. image:: https://img.shields.io/badge/tests-pass-green
    :alt: [testing]
    :target: https://docs.pytest.org/

.. image:: https://img.shields.io/badge/python-3.9%20%7C%203.10%20%7C%203.11-blue
    :alt: [versions]
    :target: https://framagit.org/robinechuca/cutcutcodec/-/blob/main/run_tests.sh

.. image:: https://img.shields.io/pypi/v/cutcutcodec.svg
    :alt: [pypi version]
    :target: https://pypi.python.org/pypi/cutcutcodec

.. image:: https://static.pepy.tech/badge/cutcutcodec
    :alt: [downloads]
    :target: https://www.pepy.tech/projects/cutcutcodec

.. image:: https://readthedocs.org/projects/cutcutcodec/badge/?version=latest
    :alt: [documentation]
    :target: https://cutcutcodec.readthedocs.io/latest/


Description
===========

This **video editing software** has a graphical interface powered by qtpy (run ``cutcutcodec-gui``).
It has been designed for speed and to implement some effects that are hard to find elsewhere.
The kernel is written in python and C, so it's easy to integrate it in your own project (module ``cutcutcodec.core``).
Although it allows you to fine-tune many parameters, it's smart enough to find the settings that are best suited to your project.

This software is **light**, **fast** and **highly configurable** for the following reasons:

#. Based on ffmpeg, this software supports an incredible number of formats and codecs.
#. This software allows editing the assembly graph. Compared to a timeline, this representation permits to do everything.
#. This software doesn't export the final video directly from the graphic interface. Instead, it generates a python script. You can edit this script yourself, giving you infinite possibilities!
#. A complete test benchmark guarantees an excelent kernel reliability.
#. Powered by `torch <https://pytorch.org/>`_ and written in C, this software efficiently exploits the CPU and GPU in order to make it very fast.
#. Video export is performed without a graphical interface, releasing a large part of computer resources to speed up export.
#. This software is able to optimize the assembly graph in order to limit calculation waste.
#. The code is parallelised to take advantage of all the CPU threads, making it extremely fast.

.. image:: https://framagit.org/robinechuca/cutcutcodec/-/raw/main/doc/gui.avif
    :alt: An example of the cutcutcodec GUI.


Quick Start
===========

Installation
------------

CutCutCodec is based on `ffmpeg <https://pytorch.org/>`_ and `pytorch <https://pytorch.org/>`_, so please follow the `cutcutcodec installation guide <https://cutcutcodec.readthedocs.io/latest/installation.html>`_.

You can use the following command to install everything automatically (not recommended, it's better to follow the guide).

.. code::

    pip install cutcutcodec[gui]


Running
-------

For a very complete description, please refer to `the documentation <https://cutcutcodec.readthedocs.io/latest/start.html>`_.

In a terminal, just type ``cutcutcodec-gui`` to start the GUI, it is possible to access the *cli* with:

.. code::

    python -m cutcutcodec --help


Features
========

Audio
-----

* General properties
    #. Supports a large number of channels (mono, stereo, 5.1, 7.1, ...) with all sampeling rate.
    #. Automatic detection of the optimal sample frequency.
* Generation
    #. White-noise generation.
    #. Generate any audio signal from any equation.
* Filters
    #. Cutting, translate and concatenate.
    #. Add multiple tracks.
    #. Arbitrary equation on several channels of several tracks. (dynamic volume, mixing, wouawoua, ...)
    #. Finite Impulse Response (FIR) invariant filter. (reverb, equalizer, echo, delay, volume, ...)
    #. Hight quality anti aliasing low pass filter (based on FIR).

Video
-----

* General properties
    #. Unlimited support of all image resolutions. (FULL HD, 4K, 8K, ...)
    #. No limit on fps. (60fps, 120fps, ...)
    #. Automatic detection of the optimal resolution and fps.
    #. Support for the alpha transparency layer.
    #. Floating-point image calculation for greater accuracy.
* Generation
    #. White-noise generation.
    #. Generate any video signal from any equation.
    #. Mandelbrot fractal generation.
* Filters
    #. Cutting, translate and concatenate.
    #. Overlaying video tracks (with transparency control).
    #. Apply an arbitrary equation one several video streams.


Example
=======

In this example we open a video file, add video noise, add audio A and C note, select the subclip between t=0s and t=10s, and write the result to a new file:

.. code:: python

    from cutcutcodec.core.filters.audio.subclip import FilterAudioSubclip
    from cutcutcodec.core.filters.video.add import FilterVideoAdd
    from cutcutcodec.core.filters.video.equation import FilterVideoEquation
    from cutcutcodec.core.filters.video.subclip import FilterVideoSubclip
    from cutcutcodec.core.generation.audio.equation import GeneratorAudioEquation
    from cutcutcodec.core.generation.video.noise import GeneratorVideoNoise
    from cutcutcodec.core.io.read_ffmpeg import ContainerInputFFMPEG
    from cutcutcodec.core.io.write import ContainerOutputFFMPEG

    with ContainerInputFFMPEG("cutcutcodec/examples/video.mp4") as container:
        (trans,) = FilterVideoEquation(container.out_streams, "b0", "g0", "r0", "a0/2").out_streams
        (noise,) = GeneratorVideoNoise().out_streams
        (video,) = FilterVideoAdd([trans, noise]).out_streams
        (video_trunc,) = FilterVideoSubclip([video], 0, 10).out_streams
        (note_a,) = GeneratorAudioEquation("sin(2*pi*440*t)", "sin(2*pi*523.25*t)").out_streams
        (note_a_trunc,) = FilterAudioSubclip([note_a], 0, 10).out_streams
        ContainerOutputFFMPEG(
            [video_trunc, note_a_trunc],
            "final.mkv",
            [
                {"encodec": "libx264", "rate": 30, "shape": (720, 1080), "options": {"crf": "23"}},
                {"encodec": "libvorbis", "rate": 44100},
            ],
        ).write()


What's new ?
============

For the complete list of changes, refer to the `git commits <https://framagit.org/robinechuca/cutcutcodec/-/network/main?ref_type=heads>`_.

1.0.1
-----

* Add a command line interface.
* Compiling dynamic expressions in C.

1.0.2
-----

* Add support for ``ffmpeg 6``.
* Able to compile ``atan`` function.
* Handling of non-square pixel readings.

1.0.3
-----

* Improved ergonomics of the "Entry Tabs" and "Export" window.
* Speed-up codec/encoder/muxer tests of compatibility by a factor 10.

            

Raw data

            {
    "_id": null,
    "home_page": "",
    "name": "cutcutcodec",
    "maintainer": "",
    "docs_url": null,
    "requires_python": "<3.13,>=3.9",
    "maintainer_email": "\"Robin RICHARD (robinechuca)\" <serveurpython.oz@gmail.com>",
    "keywords": "audio,effect,equation,ffmpeg,filtering,fractal,graph,graphical interface,gui,open source,video editing",
    "author": "",
    "author_email": "\"Robin RICHARD (robinechuca)\" <serveurpython.oz@gmail.com>",
    "download_url": "https://files.pythonhosted.org/packages/1e/7c/8ee27d5783a2391d555ae16baca5474457f3a2784811f4846c6c8c7a2872/cutcutcodec-1.0.3.post0.tar.gz",
    "platform": null,
    "description": ".. rst syntax: https://deusyss.developpez.com/tutoriels/Python/SphinxDoc/\n.. version conv: https://peps.python.org/pep-0440/\n.. icons: https://specifications.freedesktop.org/icon-naming-spec/latest/ar01s04.html or https://www.pythonguis.com/faq/built-in-qicons-pyqt/\n.. pyqtdoc: https://www.riverbankcomputing.com/static/Docs/PyQt6/\n.. colors-spaces: https://trac.ffmpeg.org/wiki/colorspace\n\n***********\nCutCutCodec\n***********\n\n.. image:: https://img.shields.io/badge/License-MIT-green.svg\n    :alt: [license MIT]\n    :target: https://opensource.org/licenses/MIT\n\n.. image:: https://img.shields.io/badge/linting-pylint-green\n    :alt: [linting: pylint]\n    :target: https://github.com/pylint-dev/pylint\n\n.. image:: https://img.shields.io/badge/tests-pass-green\n    :alt: [testing]\n    :target: https://docs.pytest.org/\n\n.. image:: https://img.shields.io/badge/python-3.9%20%7C%203.10%20%7C%203.11-blue\n    :alt: [versions]\n    :target: https://framagit.org/robinechuca/cutcutcodec/-/blob/main/run_tests.sh\n\n.. image:: https://img.shields.io/pypi/v/cutcutcodec.svg\n    :alt: [pypi version]\n    :target: https://pypi.python.org/pypi/cutcutcodec\n\n.. image:: https://static.pepy.tech/badge/cutcutcodec\n    :alt: [downloads]\n    :target: https://www.pepy.tech/projects/cutcutcodec\n\n.. image:: https://readthedocs.org/projects/cutcutcodec/badge/?version=latest\n    :alt: [documentation]\n    :target: https://cutcutcodec.readthedocs.io/latest/\n\n\nDescription\n===========\n\nThis **video editing software** has a graphical interface powered by qtpy (run ``cutcutcodec-gui``).\nIt has been designed for speed and to implement some effects that are hard to find elsewhere.\nThe kernel is written in python and C, so it's easy to integrate it in your own project (module ``cutcutcodec.core``).\nAlthough it allows you to fine-tune many parameters, it's smart enough to find the settings that are best suited to your project.\n\nThis software is **light**, **fast** and **highly configurable** for the following reasons:\n\n#. Based on ffmpeg, this software supports an incredible number of formats and codecs.\n#. This software allows editing the assembly graph. Compared to a timeline, this representation permits to do everything.\n#. This software doesn't export the final video directly from the graphic interface. Instead, it generates a python script. You can edit this script yourself, giving you infinite possibilities!\n#. A complete test benchmark guarantees an excelent kernel reliability.\n#. Powered by `torch <https://pytorch.org/>`_ and written in C, this software efficiently exploits the CPU and GPU in order to make it very fast.\n#. Video export is performed without a graphical interface, releasing a large part of computer resources to speed up export.\n#. This software is able to optimize the assembly graph in order to limit calculation waste.\n#. The code is parallelised to take advantage of all the CPU threads, making it extremely fast.\n\n.. image:: https://framagit.org/robinechuca/cutcutcodec/-/raw/main/doc/gui.avif\n    :alt: An example of the cutcutcodec GUI.\n\n\nQuick Start\n===========\n\nInstallation\n------------\n\nCutCutCodec is based on `ffmpeg <https://pytorch.org/>`_ and `pytorch <https://pytorch.org/>`_, so please follow the `cutcutcodec installation guide <https://cutcutcodec.readthedocs.io/latest/installation.html>`_.\n\nYou can use the following command to install everything automatically (not recommended, it's better to follow the guide).\n\n.. code::\n\n    pip install cutcutcodec[gui]\n\n\nRunning\n-------\n\nFor a very complete description, please refer to `the documentation <https://cutcutcodec.readthedocs.io/latest/start.html>`_.\n\nIn a terminal, just type ``cutcutcodec-gui`` to start the GUI, it is possible to access the *cli* with:\n\n.. code::\n\n    python -m cutcutcodec --help\n\n\nFeatures\n========\n\nAudio\n-----\n\n* General properties\n    #. Supports a large number of channels (mono, stereo, 5.1, 7.1, ...) with all sampeling rate.\n    #. Automatic detection of the optimal sample frequency.\n* Generation\n    #. White-noise generation.\n    #. Generate any audio signal from any equation.\n* Filters\n    #. Cutting, translate and concatenate.\n    #. Add multiple tracks.\n    #. Arbitrary equation on several channels of several tracks. (dynamic volume, mixing, wouawoua, ...)\n    #. Finite Impulse Response (FIR) invariant filter. (reverb, equalizer, echo, delay, volume, ...)\n    #. Hight quality anti aliasing low pass filter (based on FIR).\n\nVideo\n-----\n\n* General properties\n    #. Unlimited support of all image resolutions. (FULL HD, 4K, 8K, ...)\n    #. No limit on fps. (60fps, 120fps, ...)\n    #. Automatic detection of the optimal resolution and fps.\n    #. Support for the alpha transparency layer.\n    #. Floating-point image calculation for greater accuracy.\n* Generation\n    #. White-noise generation.\n    #. Generate any video signal from any equation.\n    #. Mandelbrot fractal generation.\n* Filters\n    #. Cutting, translate and concatenate.\n    #. Overlaying video tracks (with transparency control).\n    #. Apply an arbitrary equation one several video streams.\n\n\nExample\n=======\n\nIn this example we open a video file, add video noise, add audio A and C note, select the subclip between t=0s and t=10s, and write the result to a new file:\n\n.. code:: python\n\n    from cutcutcodec.core.filters.audio.subclip import FilterAudioSubclip\n    from cutcutcodec.core.filters.video.add import FilterVideoAdd\n    from cutcutcodec.core.filters.video.equation import FilterVideoEquation\n    from cutcutcodec.core.filters.video.subclip import FilterVideoSubclip\n    from cutcutcodec.core.generation.audio.equation import GeneratorAudioEquation\n    from cutcutcodec.core.generation.video.noise import GeneratorVideoNoise\n    from cutcutcodec.core.io.read_ffmpeg import ContainerInputFFMPEG\n    from cutcutcodec.core.io.write import ContainerOutputFFMPEG\n\n    with ContainerInputFFMPEG(\"cutcutcodec/examples/video.mp4\") as container:\n        (trans,) = FilterVideoEquation(container.out_streams, \"b0\", \"g0\", \"r0\", \"a0/2\").out_streams\n        (noise,) = GeneratorVideoNoise().out_streams\n        (video,) = FilterVideoAdd([trans, noise]).out_streams\n        (video_trunc,) = FilterVideoSubclip([video], 0, 10).out_streams\n        (note_a,) = GeneratorAudioEquation(\"sin(2*pi*440*t)\", \"sin(2*pi*523.25*t)\").out_streams\n        (note_a_trunc,) = FilterAudioSubclip([note_a], 0, 10).out_streams\n        ContainerOutputFFMPEG(\n            [video_trunc, note_a_trunc],\n            \"final.mkv\",\n            [\n                {\"encodec\": \"libx264\", \"rate\": 30, \"shape\": (720, 1080), \"options\": {\"crf\": \"23\"}},\n                {\"encodec\": \"libvorbis\", \"rate\": 44100},\n            ],\n        ).write()\n\n\nWhat's new ?\n============\n\nFor the complete list of changes, refer to the `git commits <https://framagit.org/robinechuca/cutcutcodec/-/network/main?ref_type=heads>`_.\n\n1.0.1\n-----\n\n* Add a command line interface.\n* Compiling dynamic expressions in C.\n\n1.0.2\n-----\n\n* Add support for ``ffmpeg 6``.\n* Able to compile ``atan`` function.\n* Handling of non-square pixel readings.\n\n1.0.3\n-----\n\n* Improved ergonomics of the \"Entry Tabs\" and \"Export\" window.\n* Speed-up codec/encoder/muxer tests of compatibility by a factor 10.\n",
    "bugtrack_url": null,
    "license": "Copyright \u00a9 2023 Robin RICHARD  Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \u201cSoftware\u201d), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:  The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.  THE SOFTWARE IS PROVIDED \u201cAS IS\u201d, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ",
    "summary": "video editing software",
    "version": "1.0.3.post0",
    "project_urls": {
        "Documentation": "https://cutcutcodec.readthedocs.io/latest/",
        "Homepage": "https://framagit.org/robinechuca/cutcutcodec/-/blob/main/README.rst",
        "Repository": "https://framagit.org/robinechuca/cutcutcodec/"
    },
    "split_keywords": [
        "audio",
        "effect",
        "equation",
        "ffmpeg",
        "filtering",
        "fractal",
        "graph",
        "graphical interface",
        "gui",
        "open source",
        "video editing"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "a3cee26fc8f6ceb971e17d7e8a7d889afa2730bb2c272df7779b0c606a8f5ae3",
                "md5": "cfec2a7a6824a949baabeee9de32e63f",
                "sha256": "91c07a3fff59e2709e3df26349ce949aa72a7e85886a80ff9315a1a46f947a3f"
            },
            "downloads": -1,
            "filename": "cutcutcodec-1.0.3.post0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "cfec2a7a6824a949baabeee9de32e63f",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": "<3.13,>=3.9",
            "size": 992018,
            "upload_time": "2024-02-25T12:45:35",
            "upload_time_iso_8601": "2024-02-25T12:45:35.342155Z",
            "url": "https://files.pythonhosted.org/packages/a3/ce/e26fc8f6ceb971e17d7e8a7d889afa2730bb2c272df7779b0c606a8f5ae3/cutcutcodec-1.0.3.post0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "1e7c8ee27d5783a2391d555ae16baca5474457f3a2784811f4846c6c8c7a2872",
                "md5": "e06a770024e554f5f017d144d71491f4",
                "sha256": "265766fb598571936c73be9aacfde8c30c71190fae1585080c934f9614bb96b8"
            },
            "downloads": -1,
            "filename": "cutcutcodec-1.0.3.post0.tar.gz",
            "has_sig": false,
            "md5_digest": "e06a770024e554f5f017d144d71491f4",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": "<3.13,>=3.9",
            "size": 870176,
            "upload_time": "2024-02-25T12:45:39",
            "upload_time_iso_8601": "2024-02-25T12:45:39.455470Z",
            "url": "https://files.pythonhosted.org/packages/1e/7c/8ee27d5783a2391d555ae16baca5474457f3a2784811f4846c6c8c7a2872/cutcutcodec-1.0.3.post0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-02-25 12:45:39",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "lcname": "cutcutcodec"
}
        
Elapsed time: 0.18848s