- UID
- 751043
- 在线时间
- 0 小时
- 最后登录
- 2015-4-18
- 注册时间
- 2014-4-16
- 宅魂
- 156 点
- 贡献
- 26 点
- 宅币
- 1432 枚
- 宅の石(入宅度)
- 0 块
- 元气(技能点)
- 4 点
- 活跃
- 0 ℃
- 听众
- 11
- 收听
- 0
该用户从未签到
Continue
- 积分
- 2178
|
本帖最后由 neuront 于 2014-8-2 14:18 编辑
[ 之所以发在程设区而不是软件区, 因为此项目尚未成熟, 姑且能用的水平. 项目地址: https://github.com/neuront/madmagia 整个项目代码用纯 Python 开发, 与视频音频剪辑有关的部分全部是 Python 调用命令行 avconv/mencoder 完成的 ]
你是否有非凡的乐感, 听到一首歌就本能地联想到最近另一部动画里的场景, 然后脑补说这可能能做个音画同步 MAD, 可惜, 用的 Linux, 使不了那些花哨的视频制作工具, 这事情抑郁了一阵也就这么过去了? 没关系, 现在你在 Linux 下面一样可以尝试你想要的东西, 不需要满世界去找一套卖 998 的正版软件的注册码, 只需要打开一个命令行, 安装一些基本的开源软件, 以及 madmagia 项目, 然后打开一个你觉得顺手的文本编辑器开始编辑视频脚本, 你就可以开始做 MAD 了!
(注: 本文决不是标题党, 但提前有一点需要说明, 虽然做 MAD 可以仅仅在命令行下用文本文件 + 脚本完成, 但是观看制作的成果最好还是在图形界面下)
这东西靠谱不靠谱, 要先看结果再考虑入不入坑. 如此 http://www.bilibili.com/video/av1199221/ 是楼主 (也就是视频 UP 主, 求戳求围观求调教) 做过最同步的了. 要是这都无法满足的话, 那楼主一会儿也没法了.
原理. 首先, 音画同步 MAD 要做的事情是找一个歌曲作 BGM, 然后根据该歌曲去找到不違和的动画场景, 实际上也就是
- 选出很多片段, 每个片段来自一个动画原片
- 再把所有这些片段串联起来 (特效另说)
- 最后附上 BGM 音轨
一共三步; 要完成第一步, 有个神奇的开源项目叫 avconv (衍生自大名鼎鼎而且同样神奇的 ffmpeg), 这个项目允许开发者使用一行命令行指令从一个视频中剪切出一小段内容, 具体方法是 - avconv -ss 片段开始时间 -i 输入视频文件 -t 片段持续时长
不用多说, 这个方法虽直接, 但是一个 MAD 动辄上百个片段, 每个都手动打一遍这个命令会非常麻烦, 因此, madmagia 项目的核心就是利用一个解析器将一个结构更简单的顺序脚本文件内容转换成上面那样的指令的序列, 并自动调用 mencoder (另一个神奇的视频编码解码项目, 名满天下的 mplayer 就是此项目的应用程序之一) 合并这些片段和 BGM, 比如, 以下两行 分别表示从第 2 个视频第 10:30 秒剪出 5 秒, 然后接上从第 4 个视频第 00:20 开始的 2 秒.
通常一个视频需要编写相当长的脚本, 比如上面给出的示例视频共有接近 300 个片段, 完整脚本文件参见这里. 因为 MAD 往往会长达好几分钟, 因此引入了分节机制, 允许仅制作从长长的脚本中仅选出一部分制作, 观看, 调试, 节省时间. 具体的用户应用文档戳这里.
现状. 目前项目的短版是缺乏特效, 主要原因是没找到合适的 avconv 参数. 已经支持的简单特效包括
- 播放某一帧内容
- 拉长/缩短一段视频内容以与音频同步
- 水平翻转视频画面内容
而不支持
已知的 BUG
- 视频编码器 mpeg4 (目前已测试对其它视频编辑工具兼容性最好, 而且短分镜最同步的编码器) 对某些 mp4 文件不支持; 在这种情况下, 建议使用同样画质的 Mkv 原片
因此, 功能上求 avconv 大触现身指教.
代码部分, 目前整个项目采取 pypi 安装的形式, 如此一来只要用 pip 或 easy_install 安装的话会自动生成可执行文件, 很是方便.
源码目录 https://github.com/neuront/madmagia/tree/master/madmagia 下文件简单说明
核心部分
- video_slice.py 视频分割, 画面提取的实现
- audio_slice.py 音频分割的实现, 测量音频文件长度也在这里
- sequence.py 剪切脚本文本分析实现
- avmerge.py 视频音频合并
- shell.py 对 Python 的 Popen 函数的同步化封装
应用程序入口
- config.py 配置文件解析
- init.py 初始化, 新建空目录和样例文件
- partial.py 视频分段输出, 长度检视, 片段导出
- view_frame.py 视频单帧查看
- export_srt.py 输出 SRT 字幕或 LRC 歌词
最后, 欢迎调教.
有任何对代码或使用上的问题均可直接戳回复.
此外, avconv/mencoder 已经有 windows 版本, 有欲移植 windows 平台的同好, 亦可直接回复移植过程的问题, 某必尽力相助.
|
|