Fix streaming issues by migrating from mplayer to ffplay and add Twitch support

This commit is contained in:
Mehmet Mert Yildiran 2018-10-31 21:29:01 +03:00
parent f898644a3c
commit e071ac62a1
4 changed files with 23 additions and 7 deletions

View file

@ -212,5 +212,12 @@ locals().update(COLOR_MAP)
for name in [s for s in list(COLOR_MAP.keys()) if s.endswith("_C")]:
locals()[name.replace("_C", "")] = locals()[name]
# Streaming related configurations
IS_LIVE_STREAMING = True
LIVE_STREAM_NAME = "LiveStream"
IS_STREAMING_TO_TWITCH = False
TWITCH_STREAM_KEY = "YOUR_STREAM_KEY"
STREAMING_PROTOCOL = "tcp"
STREAMING_IP = "127.0.0.1"
STREAMING_PORT = "2000"
STREAMING_CLIENT = "ffplay"

View file

@ -27,6 +27,5 @@ class Manim():
"skip_animations": False,
"camera_config": HIGH_QUALITY_CAMERA_CONFIG,
"frame_duration": PRODUCTION_QUALITY_FRAME_DURATION,
"is_live_streaming": IS_LIVE_STREAMING
}
return Scene(**kwargs)

View file

@ -67,7 +67,7 @@ class Scene(Container):
self.setup()
if self.write_to_movie:
self.open_movie_pipe()
if self.is_live_streaming:
if IS_LIVE_STREAMING:
return None
try:
self.construct(*self.construct_args)
@ -624,9 +624,13 @@ class Scene(Container):
'-vcodec', 'libx264',
'-pix_fmt', 'yuv420p',
]
if self.is_live_streaming:
command += ['-f', 'mpegts']
command += ['tcp://127.0.0.1:2000']
if IS_LIVE_STREAMING:
if IS_STREAMING_TO_TWITCH:
command += ['-f', 'flv']
command += ['rtmp://live.twitch.tv/app/' + TWITCH_STREAM_KEY]
else:
command += ['-f', 'mpegts']
command += [STREAMING_PROTOCOL + '://' + STREAMING_IP + ':' + STREAMING_PORT]
else:
command += [temp_file_path]
print(' '.join(command))
@ -636,7 +640,7 @@ class Scene(Container):
def close_movie_pipe(self):
self.writing_process.stdin.close()
self.writing_process.wait()
if self.is_live_streaming:
if IS_LIVE_STREAMING:
return True
if os.name == 'nt':
shutil.move(*self.args_to_rename_file)

View file

@ -9,14 +9,20 @@ square = Square()
line = Line(np.array([3,0,0]),np.array([5,0,0]))
triangle = Polygon(np.array([0,0,0]),np.array([1,1,0]),np.array([1,-1,0]))
manim.wait(3)
manim.add(line)
manim.wait(3)
manim.play(ShowCreation(circle))
manim.wait(3)
manim.play(FadeOut(circle))
manim.wait(3)
manim.play(GrowFromCenter(square))
manim.wait(3)
manim.play(Transform(square,triangle))
manim.wait(10)
manim.close_movie_pipe()
# mplayer -cache 8092 ffmpeg://tcp://127.0.0.1:2000?listen
# ffplay tcp://127.0.0.1:2000?listen
# for listening the stream
# start mplayer before running this script