Globals, mode='r', **kwargs)

Main entrypoint to opening files/streams.

  • file (str) – The file to open, which can be either a string or a file-like object.

  • mode (str) – "r" for reading and "w" for writing.

  • format (str) – Specific format to use. Defaults to autodect.

  • options (dict) – Options to pass to the container and all streams.

  • container_options (dict) – Options to pass to the container.

  • stream_options (list) – Options to pass to each stream.

  • metadata_encoding (str) – Encoding to use when reading or writing file metadata. Defaults to "utf-8".

  • metadata_errors (str) – Specifies how to handle encoding errors; behaves like str.encode parameter. Defaults to "strict".

  • buffer_size (int) – Size of buffer for Python input/output operations in bytes. Honored only when file is a file-like object. Defaults to 32768 (32k).

  • timeout – How many seconds to wait for data before giving up, as a float, or a (open timeout, read timeout) tuple.

  • io_open (callable) – Custom I/O callable for opening files/streams. This option is intended for formats that need to open additional file-like objects to file using custom I/O. The callable signature is io_open(url: str, flags: int, options: dict), where url is the url to open, flags is a combination of AVIO_FLAG_* and options is a dictionary of additional options. The callable should return a file-like object.

Return type:


For devices (via libavdevice), pass the name of the device to format, e.g.:

>>> # Open webcam on OS X.
>>>'avfoundation', file='0') 

For DASH and custom I/O using io_open, add a protocol prefix to the file to prevent the DASH encoder defaulting to the file protocol and using temporary files. The custom I/O callable can be used to remove the protocol prefix to reveal the actual name for creating the file-like object. E.g.:

>>>"customprotocol://manifest.mpd", "w", io_open=custom_io) 

More information on using input and output devices is available on the FFmpeg website.