All notable changes to this project will be documented in this file.
- Compatibility with streamlit>=1.27.0, #1393.
- Frame callbacks for the SENDONLY mode, #1347.
- Programmable video source, #1349.
- Fix
get_session_info
to useSessionManager.get_session_info()
instead of.get_active_session_info()
because the session info sometimes can be inactive when accessed from this library, #1355. - Warning messages, #1348.
- Internal package updates.
- Internal package updates.
- Add support for Python 3.11 and drop 3.7, #1195.
- Introduce custom error classes, #1198.
- Internal refactoring, #1194.
- Internal changes for more reliable device selection, #1180.
- Specify a higher version of
aiortc
dependency to avoid the cryptography problem that was worked around in 0.44.1, #1193.
- Compatibility with streamlit>=1.18.0, #1189.
- Refactoring on the object detection demo code, #1191.
- Some security updates.
- Specify the version of
cryptography
to avoid the bug reported at #1164, #1167.
- Use
MediaRelay
at the track connections in the SENDONLY mode, #1089.
poetry-core
version, #1049.
- Catch
ReferenceError
during searching the server object , #1042.
- Refactoring, #1033.
- Compatibility with streamlit>=1.12.1, #1026.
- Escape-hatch to access the running Streamlit server object for the new web server design with streamlit>=1.12.0, #1005.
- Callback type definitions, #950.
- Update
create_process_track()
to accept callback functions instead of a class object, #951.
create_mix_track()
has been modified to accept a callback function instead of a class object, #940.
- Class-less callback, #747.
- Internal package updates.
on_change
callback, #695.translations
option, #733.
- Rename internal imports to be compatible with streamlit>=1.8.0, #760.
- Export
DEFAULT_*
values, #723.
- Deprecated warning messages, #732.
- Fix an internal attribute access to be compatible with streamlit>=1.6.0, #710.
- Internal package updates.
- PEP-561 compatibility, #671.
- Internal package updates.
- Rename internal imports to be compatible with streamlit>=1.4.0, #598.
- New device selector, #594.
- Internal type annotations to be compatible with streamlit>=1.3, #581.
- Set the frontend signalling timeout as 3 sec, #568.
- Drop Python 3.6 support, #527.
- Internal package updates.
- Stop players when the worker stops, #533.
- Stop the worker when the Streamlit session ends, which makes it possible to terminate the server process by pressing ctrl-c during WebRTC session alive, #535.
- Stop the client-side process when disconnected, #539.
- Refactoring, #525, #526
- Refactoring, #520
- Refactoring, #517.
- Mark async processor's threads as daemon, #492.
- Internal package updates.
- Include
adapter.js
for WebRTC interoperability, #455.
- Session state compatibility - the context objects became accessible via
st.session_state
and internally, workers and states are all changed to be managed in the session state, #452.- [BREAKING CHANGE] Stop supporting
streamlit<0.84.1
.
- [BREAKING CHANGE] Stop supporting
- Refactoring, #428 and #429.
- Fix samples not to use deprecated arguments, #425.
- Fix to use React hooks and function-based components, #424
- Initialize the component value when the component is mounted, #413.
on_ended()
callback, #405.
- Rename
types
module tomodels
, #390. - Use
loop.create_task()
instead ofasyncio.ensure_future
, #391.
- Add
mixer-output-interval
property toMediaStreamMixTrack
, #388.
- Type hints, #366.
- [BREAKING CHANGE]
client_settings
argument is marked as deprecated andrtc_configuration
andmedia_stream_constraints
became the top level arguments, #371.
- Fix to be compatible with
multiprocessing.Process
, #355.
- Add
video_html_attrs
andaudio_html_attrs
options, #272.
- Export
WebRtcStreamerContext
andWebRtcStreamerState
from the package, #342. - Fix
app_videochat.py
, #342.
- Support forking and mixing streams, #318.
- Remove
MediaTrackConstraintSet.deviceId
option, which has no effect, #328.
- Internal fix about event loop management, #323.
- Fix type annotations on
VideoProcessTrack
, #317.
- Fix CI error, #307.
- Internal fix about component value management, #305.
- Internal fix about SDP offer handling, #304.
- Revert a change in v0.23.3, #301.
- Fix SessionState, #299.
- Make the identity of a context object consistent over the session, #298.
- Internal fix about event loop management, #282.
- Hotfix for marshalling the component value, #290.
- Fix internal code on signalling, #278.
- Fix internal state management, #274.
- Fix to call super methods from the frontend component to adjust iframe height propery, #273.
- Add
desired_playing_state
argument to control the playing state programatically, #266.
- Fix frontend to handle errors from promises properly, #267.
- Fix to stop
AsyncMediaProcessTrack
when its input track stops, #269.- A bug introduced in v0.22.2 (#268) has been fixed.
- Fix to use
MediaRelay
, #263. - Fix to use the event loop attached to the Tornado app, #260.
- Add
app_record.py
as an example ofMediaRecorder
, #264.
- Fix to unset the worker when the state is not playing, #255.
- Make processors effective in RECVONLY mode with a player, #254.
- Support setting a complex
MediaStreamConstraints
object throughClientSettings.media_stream_constraints
, #243.
- Fix to unset the answer SDP after a WebRTC session closed, #206.
- Fix
SessionState
to have a unique ID of this specific library to avoid conflicts with other SessionState instances, #210.
VideoTransformer
is deprecated. UseVideoProcessor
instead. Related method names has also been changed.VideoTransformer
API will be maintained for some releases, but be removed in the future.
- Experimental audio support with
audio_processor
andaudio_receiver
ofwebrtc_streamer()
.
- Type annotations around
VideoTransformer
with generics, which enable type inference, for example, onctx.video_transformer
, #163.
- Hide unused media type from the device selector, #164.
- Only necessary media elements are displayed, for example, in case of video streaming, only a video element is shown and an audio element is hidden, #146.
- Hide the "Select device" button when the mode is RECVONLY, #149.
- Theming, #140.
- Fix SessionState to be bound to each session properly, #139
- Internal fix, #126.
- Set log level to
fsevents
logger, whose logs have been noisy, #129.
- Fix a sample app,
app.py
to avoid an infinate loop. - Update to unset a worker attributes from a context object after stopping.
- Dependency updates.
- Dependency updates.
- Dependency updates.
- Add
VideoReceiver.get_frame()
and removeVideoReceiver.frames_queue
attribute.
- Set
aiortc
version to exactly1.0.0
, as1.1.0
and1.1.1
cause an error. See whitphx#37.
- Fix webrtc_worker thread not to block the main thread when an error occurs inside it.
- Update dependencies.
- Recording input/output streams.
- Error messages in case
navigator.mediaDevices
orgetUserMedia
is not available. - The object detection demo is updated to display the detected labels.
- Error indication