Skip to main content

Python helpers to manipulate video from vapoursynth

Project description

logo python-bestsource

Python Ubuntu

A library helper for producing and manipulating videos with audio support in vapoursynth using bestsource

Current state

Version 1.2 bring filter range support with both ApplyRange and FrameEval in TextSub : a door to make Animations easier in vapoursynth is now open =)

Sound is working with vspreview as soon as Track1 is selected in the Playback sub panel hidden by default and play is triggered for a video that has sound. I provide a test video in test/ and two examples scripts

trim.vpy:

Shows how trim is handled with video that has sound - the player I used is a forked release of vspreview 0.7.1 is available here is for users using a still supported python 3.10 version as ubuntu 22.04 user, install it using the git way.

frame.vpy

Show frame props of a clip different ways. Under scite you can trigger vspreview with [F5] or compile - In test I let you the scite config file.

Audio and Sub Range tests support in Aegisub (.ass) / vspreview (.vpy)

This requires vapoursynth fork from Arch1t3cht and the use of peagisub for vapoursynth plugin dir configuration. Two subtitles files are provided (1+2) and a probe system (3):

(1) Open tests/VTS_01_1-trim100.ass then tests/VTS_01_1-trim100.vpy delivers video as channel 0 and audio as channel 1 this is not supported by current release that disable Open Audio from Video feature.

As I did not find a way to know which type of channel audio or video is requested. I opened thus a Request for feature Sound works fine in vspreview you can trigger with scite by opening tests/VTS_01_1-trim100.vpy and press [F5] Note you will have no sound in vsedit (vapoursynth editor) for all the tests

(2) Open tests/VTS_01_1-trim100-video-audio.ass then tests/VTS_01_1-trim100-video.vpy delivers video as channel 0 then tests/VTS_01_1-trim100-audio.vpy delivers audio as channel 0 (separately in time)

this works if you ensure plays does not goes outside boundary ie frame 101 else you will be flooded by popups. Play and seeking work fine and did not stall just before the end as in vspreview there is just a minor problem with the horizonthal zoom for audio

(3) Open tests/VTS_01_1-trim100-applyrange.ass then tests/VTS_01_1-trim100-applyrange.vpy is used for video

This will show we have a portion from 50 to 60 of VTS_01_1-trim100.ass using a mimick AVS method ApplyRange

(4) Open tests/VTS_01_1-trim100-frameval.ass then tests/VTS_01_1-trim100-frameval.vpy is used for video

This will show we have a portion from 50 to 60 of VTS_01_1-trim100.ass most similar of AVS Animate, you can grab the current frame number in the filter that ApplyRange do no handle.

(5) Open tests/VTS_01_1-trim100-range.ass then tests/VTS_01_1-trim100-frameval.vpy is used for video then tests/VTS_01_1-trim100-audio.vpy is used to restrore sound

This will show how to add a green mask from 50 to 60 in ASS

Installation

as local user

pip3 install -U python-bssource

for all

sudo pip3 install python-bssource

For those who want to bridge to arch1tech's aegisub fork, use my lua helper peagisub to get the path of the vapoursynth plugin needed by aegisub_vs.py.

History

1.2.0 - ApplyRange and FrameEval samples in tests/ 1.1.0 - Trim with video that has audio works in both aegisub and vspreview! 1.0.0 - First release

Contributing

Feel free to add other object and fixes.

Development

Compile .whl

$ ./package.sh

Upload to PyPI

  1. Create an API Token from the Web UI. (Edit your ~/.pypirc with the generated token.)
  2. Install Twine
$ python3 -m pip install --user --upgrade twine
  1. Build the wheel bundle (.egg no more recognized)
$ sudo rm -rf dist/&sudo rm -rf build&sudo python3 setup.py bdist_wheel
  1. Upload the bundle
$ python3 -m twine upload dist/*

Note: The upload to PyPI is currently assured by GitHub Actions.

Release

  1. Increase the version number in setup.py.
  2. Commit and push.
  3. Create a new tag in GitHub to trigger the CI pipeline.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

python_bestsource-1.2.0-py3-none-any.whl (26.9 kB view details)

Uploaded Python 3

File details

Details for the file python_bestsource-1.2.0-py3-none-any.whl.

File metadata

File hashes

Hashes for python_bestsource-1.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 ff44b290273c5c9028bfc4dd7cac522c1ddd81c037673c51874e23f8f3dca628
MD5 0ac51688a85b73095bec849b1c11a7e5
BLAKE2b-256 460ff3a5601b849642c971c9edccec47e25f1071b1e6ad4c8c9c5907fcd57f5d

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page