I am trying to render a HTML page and use a specific <div> inside it to convert it to video format.
Explanation:
I know HTML is static content but it is necessary for me to convert it to a video format (it is a requirement). I need to know if there is a way which can render a page and export it to a video format. It can either be a direct HTML to MP4 conversion or capture rendered div (Not record canvas) as an Image and then convert that image to the video format.
Technology Stack:
Django
Django templates
HTML
Javascript
Any help would be appreciated.
Advertisement
Answer
here is a rough procedure how to do that: (be careful I just copied the “idea” from my code an removed my specific stuff, so there might be typos or small inconsistencies)
import imgkit
from moviepy import editor
# Step 1: render html to PNG
context = { ....}
rendered_html = Render_to_string('path/template.html', context)
# make sure that 'width' is set otherwise it will use a min width that maybe does not fit to your html
options = {'format': 'png', 'width': 670, 'disable-smart-width': ''}
imgkit.from_string(rendered_html,'path/tmp.png',
config=config, options=options)
# Step 2: create video from png and mp3
audio = editor.AudioFileClip('path/audio.mp3')
video = editor.ImageClip('path/tmp.png')
video.fps = 1
video.duration = audio.duration
final_video = video.set_audio(audio)
final_video.write_videofile('path/video.mp4', fps=1)