Skip to content

am009/md2video

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

markdown2video

markdown2video,让你用markdown生成视频和PPT!

以视频为核心,目标是同时生成博客文章。

安装

通过pip安装:

pip install md2video

使用

markdown(视频脚本)

基础语法如下:

  • 使用<!-- mode: slide -->后,后续内容作为PPT的页面渲染。
  • 使用<!-- mode comment -->后,后续内容作为TTS的输入生成语音,解释前一页面。
<!-- mode: slide -->

# PPT的标题

PPT的内容

<!-- mode comment -->

这里是解释本页PPT的内容。会被转为语音配上上面的画面。

  • 对复杂的内容展示需求,可以使用下面的方式直接编写reveal.js代码。(基于pandoc的html的拓展)

    \```{=html}
    
    \```
    

md2video

命令行工具,通过python -m md2video调用。将markdown视频脚本转换为视频

指定输入的markdown文件后,会创建后缀为.md2video的缓存文件夹。

markdown视频脚本 --(md2slidemd)--> pandoc支持的markdown编写PPT的格式(reveal.js) --(md2image)--> html格式的PPT,每页PPT的图像,以及打印得到pdf格式的PPT。
python -m md2video.md2slidemd

架构

  • md2slidemd:基于pandoc filters实现markdown解析,并利用pandoc转换为reveal.js格式的markdown幻灯片。
  • md2image:基于playwright的headless浏览器打开页面,截屏转换为图片序列。
  • TTS:基于kokoro_onnx项目生成每个幻灯片的语音
  • slidemd2video:基于python-ffmpeg,从图片和语音生成视频。

拓展的Markdown语义特性

需求分解:

  • 标记为slide的块,在生成文章的时候也正常渲染?即,即使不加修改,作为markdown也可以看。
  • 原始的markdown是以文章优先还是slides优先?能否做到原始markdown直接是文章?似乎不太能做到文章和slides兼顾。
  • 标识的方式:如果只用起始标识,而不是标识开始和结束,那么整个文章默认会被划分为slides,文字部分必须主动处理为非slides?还是把用于生成图片的部分单独拿出来吧。然后单独去生成文章。
  • 其他方便浏览的格式:slides的pdf格式。

TODO

  • 模型文件放到appdata,然后缺文件的时候问用户是否立刻下载。
  • 通过分句生成语音的方式生成字幕。
  • 生成竖屏内容。
  • 同时支持中文和英语。
  • 集成更多的TTS API,包括edge TTS。

About

Convert markdown presentations files to video

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors