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.4.tar.gz (692.5 kB view details)

Uploaded Source

Built Distribution

ffms2-0.4.5.4-cp37-none-win_amd64.whl (35.8 MB view details)

Uploaded CPython 3.7 Windows x86-64

File details

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

File metadata

  • Download URL: ffms2-0.4.5.4.tar.gz
  • Upload date:
  • Size: 692.5 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.56.2 CPython/3.9.1

File hashes

Hashes for ffms2-0.4.5.4.tar.gz
Algorithm Hash digest
SHA256 a24d236291c7b964296a4a7f8c5aed6a509b012da3c4c13b15b23eb450783ab2
MD5 1fd6b9b112b885030bf6fe6510a1e129
BLAKE2b-256 6294a782459d4f8e271b23c42c1eb89ad685dfea8a19d20530f7b29cd23ef786

See more details on using hashes here.

File details

Details for the file ffms2-0.4.5.4-cp37-none-win_amd64.whl.

File metadata

  • Download URL: ffms2-0.4.5.4-cp37-none-win_amd64.whl
  • Upload date:
  • Size: 35.8 MB
  • Tags: CPython 3.7, 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.56.2 CPython/3.9.1

File hashes

Hashes for ffms2-0.4.5.4-cp37-none-win_amd64.whl
Algorithm Hash digest
SHA256 3e4d8212a287c7c6e1e0f765c55c3b3d8fc6317a53b8f6b3b068cf336a9b42b7
MD5 8fcb6d71951884123ddd38d358543bb7
BLAKE2b-256 2def2fc946aae7ef037112ae90e66ef8dcf2102cca71965232b572697da77659

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