有爱,有技术,有你^_^)y
╱人◕‿‿◕人╲订下契约(注册新用户)

合作站点账号登陆

QQ登录

只需一步,快速开始

快捷导航
查看: 650|回复: 4
收起左侧

就算是黑乎乎的 Linux 命令行只要有爱也能做音画同步 MAD~!

[复制链接]

该用户从未签到

3

主题

11

好友

2178

积分

Continue

积分
2178
发表于 2014-8-2 14:18:56 | 显示全部楼层 |阅读模式

╱人◕‿‿◕人╲定下契约

您需要 登录 才可以下载或查看,没有账号?╱人◕‿‿◕人╲订下契约(注册新用户)

x
本帖最后由 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

分别表示从第 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 平台的同好, 亦可直接回复移植过程的问题, 某必尽力相助.

签名被小宅喵吞掉了~~~~(>_<)~~~~
回复

使用道具 举报

该用户从未签到

3

主题

11

好友

2178

积分

Continue

积分
2178
 楼主| 发表于 2014-8-2 14:20:03 | 显示全部楼层
本帖最后由 neuront 于 2015-1-8 21:22 编辑

-------
签名被小宅喵吞掉了~~~~(>_<)~~~~
回复 支持 反对

使用道具 举报

签到天数: 3 天

连续签到: 1 天

[LV.2]偶尔看看I

15

主题

34

好友

8959

积分

老湿

我才不老湿,我是骚年啦

积分
8959
发表于 2014-9-4 22:21:23 | 显示全部楼层
楼主,我只能帮你顶一下了
其实我不是老湿,我是骚年~\(≧▽≦)/~啦啦啦
回复 支持 反对

使用道具 举报

该用户从未签到

3

主题

23

好友

7214

积分

序章

积分
7214
发表于 2015-8-21 13:32:37 | 显示全部楼层
这个貌似离得比较远!!!
签名被小宅喵吞掉了~~~~(>_<)~~~~
回复 支持 反对

使用道具 举报

该用户从未签到

2

主题

7

好友

3563

积分

序章

积分
3563
发表于 2015-10-16 10:17:55 | 显示全部楼层
我也只能挽尊了
签名被小宅喵吞掉了~~~~(>_<)~~~~
回复 支持 反对

使用道具 举报

本版积分规则

小黑屋|手机版|技术宅(基宅) ( 粤ICP备18082987号-1 | 浙公网安备 33010902001746号 )

GMT+8, 2024-5-6 16:22 , Processed in 0.186867 second(s), 17 queries , Redis On.

Copyright © 2018 技术宅社区

Powered by Discuz! X3.5

快速回复 返回顶部 返回列表