Skip to main content

Bindings for FFmpegSource

Project description

ffms2 – Python bindings for FFmpegSource

Actions Status

This project is a fork that supports more recent versions of FFMS. The original repository can be found at https://bitbucket.org/spirit/ffms.

Example usage

If you don't need to keep the index, create a video source right away:

>>> import ffms2
>>> source_file = "test/CINT_Nik_H264_720_512kb.mp4"
>>> vsource = ffms2.VideoSource(source_file)

Or you can create an indexer:

>>> indexer = ffms2.Indexer(source_file)
>>> indexer.format_name
'mov,mp4,m4a,3gp,3g2,mj2'
>>> indexer.track_info_list
[TrackInfo(type=0, codec_name='h264'), TrackInfo(type=1, codec_name='aac')]

Then create the index for the video source:

>>> for track in indexer.track_info_list:
>>>     indexer.track_index_settings(track.num, 1, 0)
>>> index = indexer.do_indexing2()
>>> track_number = index.get_first_indexed_track_of_type(ffms2.FFMS_TYPE_VIDEO)
>>> vsource = ffms2.VideoSource(source_file, track_number, index)

Extract information from the video source:

>>> vsource.properties.NumFrames
1430
>>> vsource.track.keyframes[:5]
[0, 12, 24, 36, 48]
>>> vsource.track.timecodes[:5]
[0.0, 41.666666666666664, 83.33333333333333, 125.0, 166.66666666666666]

Retrieve a video frame:

>>> frame = vsource.get_frame(0)
>>> frame.EncodedWidth, frame.EncodedHeight
(416, 240)
>>> frame.planes[0]
array([41, 41, 41, ..., 41, 41, 41], dtype=uint8)

Audio stuff:

>>> track_number = index.get_first_indexed_track_of_type(ffms2.FFMS_TYPE_AUDIO)
>>> asource = ffms2.AudioSource(source_file, track_number, index)
>>> aprops = asource.properties
>>> aprops.SampleRate, aprops.BitsPerSample, aprops.Channels
(48000, 16, 2)
>>> min_audio, max_audio = float("inf"), float("-inf")
>>> for audio in asource.linear_access(rate=100):
...     if audio.min() < min_audio:
...         min_audio = audio.min()
...     if audio.max() > max_audio:
...         max_audio = audio.max()
>>> min_audio, max_audio
(-16191, 18824)

ffmsinfo.py is a demo script showing how this package can be used.

easy_usage.py is a demo script showing how write the index file to speed up access to the media file.

Installation

To install the package for Python 3, use:

$ ./setup.py install

Prerequisites

The API was designed to be an object-oriented and Pythonic version of the original FFmpegSource API.

Development

Thanks to GitHub actions, releasing a new version is only a matter of creating a tag on the newest master.

Project details


Download files

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

Source Distribution

ffms2-0.4.5.5.tar.gz (693.2 kB view details)

Uploaded Source

Built Distribution

ffms2-0.4.5.5-cp37.cp38.cp39-none-win_amd64.whl (35.8 MB view details)

Uploaded CPython 3.7 CPython 3.8 CPython 3.9 Windows x86-64

File details

Details for the file ffms2-0.4.5.5.tar.gz.

File metadata

  • Download URL: ffms2-0.4.5.5.tar.gz
  • Upload date:
  • Size: 693.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/53.0.0 requests-toolbelt/0.9.1 tqdm/4.57.0 CPython/3.9.1

File hashes

Hashes for ffms2-0.4.5.5.tar.gz
Algorithm Hash digest
SHA256 3dfd9b2a0078629723597cb37358795a3d3858effb4b7760f60c3a173ad50529
MD5 9919e2a362ea502f5772f575722404c4
BLAKE2b-256 f929a2a9afda2e49b4039c8e26c1090f2a8863837b97fd21fca5db097aff94b2

See more details on using hashes here.

File details

Details for the file ffms2-0.4.5.5-cp37.cp38.cp39-none-win_amd64.whl.

File metadata

  • Download URL: ffms2-0.4.5.5-cp37.cp38.cp39-none-win_amd64.whl
  • Upload date:
  • Size: 35.8 MB
  • Tags: CPython 3.7, CPython 3.8, CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/53.0.0 requests-toolbelt/0.9.1 tqdm/4.57.0 CPython/3.9.1

File hashes

Hashes for ffms2-0.4.5.5-cp37.cp38.cp39-none-win_amd64.whl
Algorithm Hash digest
SHA256 1564c75505e6057634dab47df6895feaf1f4774a4fd4ce65730f268284bc6dd4
MD5 2b582ce41f502955daf4565c28cac1ac
BLAKE2b-256 e4d5bf83d494a1ade8315908e11324ad9c35e7f88d744b51e8a95984a6dbe788

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