33from dataclasses import dataclass
44from pathlib import Path
55from typing import AsyncIterable , Union
6+ import sys
67
78import numpy as np
89import os
@@ -92,15 +93,15 @@ async def aclose(self) -> None:
9293 self ._audio_container .close ()
9394
9495
95- async def main (room : rtc .Room ):
96+ async def main (room : rtc .Room , room_name : str , media_path : str ):
9697 token = (
9798 api .AccessToken ()
9899 .with_identity ("python-publisher" )
99100 .with_name ("Python Publisher" )
100101 .with_grants (
101102 api .VideoGrants (
102103 room_join = True ,
103- room = "my-room" ,
104+ room = room_name ,
104105 )
105106 )
106107 .to_jwt ()
@@ -116,7 +117,6 @@ async def main(room: rtc.Room):
116117 return
117118
118119 # Create media streamer
119- media_path = "/path/to/video.mp4"
120120 streamer = MediaFileStreamer (media_path )
121121 media_info = streamer .info
122122
@@ -137,7 +137,13 @@ async def main(room: rtc.Room):
137137 audio_track = rtc .LocalAudioTrack .create_audio_track ("audio" , audio_source )
138138
139139 # Publish tracks
140- video_options = rtc .TrackPublishOptions (source = rtc .TrackSource .SOURCE_CAMERA )
140+ video_options = rtc .TrackPublishOptions (
141+ source = rtc .TrackSource .SOURCE_CAMERA ,
142+ video_encoding = rtc .VideoEncoding (
143+ max_framerate = 30 ,
144+ max_bitrate = 5_000_000 ,
145+ ),
146+ )
141147 audio_options = rtc .TrackPublishOptions (source = rtc .TrackSource .SOURCE_MICROPHONE )
142148
143149 await room .local_participant .publish_track (video_track , video_options )
@@ -183,14 +189,21 @@ async def _push_frames(
183189 handlers = [logging .FileHandler ("video_play.log" ), logging .StreamHandler ()],
184190 )
185191
192+ if len (sys .argv ) != 3 :
193+ print ("Usage: python video_play.py <room-name> </path/to/video>" )
194+ sys .exit (1 )
195+
196+ room_name = sys .argv [1 ]
197+ media_path = sys .argv [2 ]
198+
186199 loop = asyncio .get_event_loop ()
187200 room = rtc .Room (loop = loop )
188201
189202 async def cleanup ():
190203 await room .disconnect ()
191204 loop .stop ()
192205
193- asyncio .ensure_future (main (room ))
206+ asyncio .ensure_future (main (room , room_name , media_path ))
194207 for signal in [signal .SIGINT , signal .SIGTERM ]:
195208 loop .add_signal_handler (signal , lambda : asyncio .ensure_future (cleanup ()))
196209
0 commit comments