This package contains the code to use Vonage's Video API in Python. This package includes methods for working with video sessions, streams, signals, and more.
It is recommended to use this as part of the main vonage
package. The examples below assume you've created an instance of the vonage.Vonage
class called vonage_client
.
You will use the custom Pydantic data models to make most of the API calls in this package. They are accessed from the vonage_video.models
package.
from vonage_video.models import TokenOptions
token_options = TokenOptions(session_id='your_session_id', role='publisher')
client_token = vonage_client.video.generate_client_token(token_options)
from vonage_video.models import SessionOptions
session_options = SessionOptions(media_mode='routed')
video_session = vonage_client.video.create_session(session_options)
streams = vonage_client.video.list_streams(session_id='your_session_id')
stream_info = vonage_client.video.get_stream(session_id='your_session_id', stream_id='your_stream_id')
from vonage_video.models import StreamLayoutOptions
layout_options = StreamLayoutOptions(type='bestFit')
updated_streams = vonage_client.video.change_stream_layout(session_id='your_session_id', stream_layout_options=layout_options)
from vonage_video.models import SignalData
signal_data = SignalData(type='chat', data='Hello, World!')
vonage_client.video.send_signal(session_id='your_session_id', data=signal_data)
vonage_client.video.disconnect_client(session_id='your_session_id', connection_id='your_connection_id')
vonage_client.video.mute_stream(session_id='your_session_id', stream_id='your_stream_id')
vonage_client.video.mute_all_streams(session_id='your_session_id', excluded_stream_ids=['stream_id_1', 'stream_id_2'])
vonage_client.video.disable_mute_all_streams(session_id='your_session_id')
from vonage_video.models import CaptionsOptions
captions_options = CaptionsOptions(language='en-US')
captions_data = vonage_client.video.start_captions(captions_options)
from vonage_video.models import CaptionsData
captions_data = CaptionsData(captions_id='your_captions_id')
vonage_client.video.stop_captions(captions_data)
from vonage_video.models import AudioConnectorOptions
audio_connector_options = AudioConnectorOptions(session_id='your_session_id', token='your_token', url='https://example.com')
audio_connector_data = vonage_client.video.start_audio_connector(audio_connector_options)
from vonage_video.models import ExperienceComposerOptions
experience_composer_options = ExperienceComposerOptions(session_id='your_session_id', token='your_token', url='https://example.com')
experience_composer = vonage_client.video.start_experience_composer(experience_composer_options)
from vonage_video.models import ListExperienceComposersFilter
filter = ListExperienceComposersFilter(page_size=10)
experience_composers, count, next_page_offset = vonage_client.video.list_experience_composers(filter)
print(experience_composers)
experience_composer = vonage_client.video.get_experience_composer(experience_composer_id='experience_composer_id')
vonage_client.video.stop_experience_composer(experience_composer_id='experience_composer_id')
from vonage_video.models import ListArchivesFilter
filter = ListArchivesFilter(offset=2)
archives, count, next_page_offset = vonage_client.video.list_archives(filter)
print(archives)
from vonage_video.models import CreateArchiveRequest
archive_options = CreateArchiveRequest(session_id='your_session_id', name='My Archive')
archive = vonage_client.video.start_archive(archive_options)
archive = vonage_client.video.get_archive(archive_id='your_archive_id')
print(archive)
vonage_client.video.delete_archive(archive_id='your_archive_id')
from vonage_video.models import AddStreamRequest
add_stream_request = AddStreamRequest(stream_id='your_stream_id')
vonage_client.video.add_stream_to_archive(archive_id='your_archive_id', params=add_stream_request)
vonage_client.video.remove_stream_from_archive(archive_id='your_archive_id', stream_id='your_stream_id')
archive = vonage_client.video.stop_archive(archive_id='your_archive_id')
print(archive)
from vonage_video.models import ComposedLayout
layout = ComposedLayout(type='bestFit')
archive = vonage_client.video.change_archive_layout(archive_id='your_archive_id', layout=layout)
print(archive)
from vonage_video.models import ListBroadcastsFilter
filter = ListBroadcastsFilter(page_size=10)
broadcasts, count, next_page_offset = vonage_client.video.list_broadcasts(filter)
print(broadcasts)
from vonage_video.models import CreateBroadcastRequest, BroadcastOutputSettings, BroadcastHls, BroadcastRtmp
broadcast_options = CreateBroadcastRequest(session_id='your_session_id', outputs=BroadcastOutputSettings(
hls=BroadcastHls(dvr=True, low_latency=False),
rtmp=[
BroadcastRtmp(
id='test',
server_url='rtmp://a.rtmp.youtube.com/live2',
stream_name='stream-key',
)
],
)
)
broadcast = vonage_client.video.start_broadcast(broadcast_options)
print(broadcast)
broadcast = vonage_client.video.get_broadcast(broadcast_id='your_broadcast_id')
print(broadcast)
broadcast = vonage_client.video.stop_broadcast(broadcast_id='your_broadcast_id')
print(broadcast)
from vonage_video.models import ComposedLayout
layout = ComposedLayout(type='bestFit')
broadcast = vonage_client.video.change_broadcast_layout(broadcast_id='your_broadcast_id', layout=layout)
print(broadcast)
from vonage_video.models import AddStreamRequest
add_stream_request = AddStreamRequest(stream_id='your_stream_id')
vonage_client.video.add_stream_to_broadcast(broadcast_id='your_broadcast_id', params=add_stream_request)
vonage_client.video.remove_stream_from_broadcast(broadcast_id='your_broadcast_id', stream_id='your_stream_id')
from vonage_video.models import InitiateSipRequest, SipOptions, SipAuth
sip_request_params = InitiateSipRequest(
session_id='your_session_id',
token='your_token',
sip=SipOptions(
uri=f'sip:{vonage_number}@sip.nexmo.com;transport=tls',
from_=f'[email protected]',
headers={'header_key': 'header_value'},
auth=SipAuth(username='1485b9e6', password='fL8jvi4W2FmS9som'),
secure=False,
video=False,
observe_force_mute=True,
),
)
sip_call = vonage_client.video.initiate_sip_call(sip_request_params)
print(sip_call)
# Play into all connections
session_id = 'your_session_id'
digits = '1234#*p'
vonage_client.video.play_dtmf(session_id=session_id, digits=digits)
# Play into one connection
session_id = 'your_session_id'
digits = '1234#*p'
connection_id = 'your_connection_id'
vonage_client.video.play_dtmf(session_id=session_id, digits=digits, connection_id=connection_id)