八年来,我把这盒录像带搬到了四间不同的公寓和一栋房子里。 我小时候的家庭视频。
经过600多个小时的工作,我终于将它们数字化并妥善整理,这样磁带就可以扔掉了。
Часть2
所有家庭视频均已数字化,可通过私人媒体服务器观看
这产生了 513 个单独的视频剪辑。 每个都有标题、描述、录制日期、所有参与者的标签,表明录制时的年龄。 所有内容都位于只有家庭成员才能访问的私人媒体服务器上,并且每月托管费用不到 1 美元。
这篇文章讲述了我所做的一切,为什么花了八年时间,以及如何更容易、更快地实现相同的结果。
第一次天真的尝试
2010 年左右,我妈妈买了某种 VHS 到 DVD 转换器,并通过它播放我们所有的家庭视频。
我妈妈录制的原始DVD(不知道丢失的字母发生了什么)
问题是,妈妈只制作了一套DVD。 亲戚们都住在不同的州,所以传递光盘很不方便。
2012年,我姐姐给了我这些DVD。 我复制了视频文件并将所有内容上传到云存储。 问题解决了!
Google Cloud 存储中家庭视频的 DVD 翻录
几周后,我问是否有人看过这些录像带。 结果没人看。 我连看都没看。 在 YouTube 时代,下载三个小时的未知内容文件来寻找有趣的片段是愚蠢的。
只有我母亲很高兴:“太好了,”她说,“现在我们终于可以扔掉所有这些磁带了吗?”
哦哦。 这是一个可怕的问题。 如果我们错过了一些记录怎么办? 如果磁带能够以更高的质量数字化会怎样? 如果标签包含重要信息怎么办?
在完全确定视频被复制到尽可能高的质量之前,我总是对扔掉原件感到不舒服。 因此,我必须言归正传。
我什至不知道自己陷入了什么境地。
听起来没那么难
如果你不明白为什么我花了八年和数百小时,我不会责怪你。 我也以为这很容易。
以下是数字化过程从开始到结束的样子:
更准确地说,这就是理论上的样子。 实践结果如下:
大部分时间都花在了返工已经完成的事情上。 我完成了一个阶段,然后在一两个阶段之后我发现了技术中的某种缺陷。 我不得不回去重做。 例如,我用 20 盘磁带拍摄了视频,然后才意识到音频有点不同步。 或者经过几周的编辑后,我发现自己导出的视频格式不支持网络流式传输。
为了保持读者的理智,我将这个过程布置得好像它正在以系统的方式向前推进,以免让你不断地跳回并重做所有事情,就像我必须做的那样。
步骤1拍摄视频
好吧,回到2012年。 妈妈很想扔掉她珍藏了二十年的磁带,所以当我们第一次见面时,她立即递给我一个巨大的纸箱。 于是我开始了对数字化的探索。
显而易见的决定是将这项工作委托给专业人员。 许多公司都从事数字化,有些公司专门从事家庭视频业务。
但我对隐私非常敏感,我不想让陌生人观看我们的家庭视频,其中包含我个人生活的亲密时刻,包括我的如厕训练(在适当的年龄;没什么奇怪的!)。 我还认为数字化没有什么复杂的。
剧透:事实证明这真的很困难。
第一次尝试捕捉视频
我父亲还保留着家里的旧录像机,所以我让他把它从地下室挖出来,供下次家庭聚餐时使用。 我买了
为了处理来自 USB 捕获设备的视频,我使用了 VirtualDub 程序,2012 版本有点过时,但并不重要。
VirtualDub 程序中的帧,当我四岁时给父亲读一本书时
声音失真攻击
当我开始编辑过程时,我注意到音频和视频之间略有不同步。 好的没问题。 我可以稍微移动一下声音。
十分钟后,他又失去了同步。 我第一次不是稍微动了一下吗?
我逐渐意识到,音频和视频不仅不同步,而且实际上是以不同的速度录制的。 在整个录像带中,他们的分歧越来越大。 为了同步,我必须每隔几分钟手动调整声音。
如果您的设置以不同的速率捕获音频和视频,那么唯一的解决方案是每隔几分钟手动校正音频
你能想象区分10毫秒前或10毫秒后的声音有多困难吗? 真的很难啊! 你自己判断吧。
在这段视频中,我正在和我可怜的、有耐心的小猫玩耍,它的名字叫黑魔法。 声音有点不同步。 判断是超前还是晚了?
声音和图像不同步的视频剪辑示例
此时,黑魔法跳跃,一个减速五倍的片段:
声音和图像不同步,慢五倍
回答:声音有几毫秒的延迟。
也许多花一百美元而不是数百小时的个人时间?
仅声音校正一项就需要花费大量时间进行乏味且令人发狂的工作。 最终我想到可以通过使用更好、更昂贵的视频捕获设备来避免不同步。 经过一番研究,我在亚马逊上买了一件新的:
我的第二次尝试购买
即使使用新设备,不同步现象也没有消失。
带有“super”前缀的 VCR
也许问题出在录像机上。 在
嗯,当然! 为什么我要和蠢人打交道 通常的 录像机(如有) 非常-VCR能解决这个问题吗?
没有人再生产 S-VHS 录像机,但它们仍然可以在 eBay 上购买。 我花了 179 美元买了一台 JVC SR-V10U 型号,它似乎非常适合 VHS 数字化:
我在 eBay 上花了 10 美元买的老式 JVC SR-V179U 录像机
“超级”录像机邮寄过来。 经过几个月与音频不同步的斗争后,我很高兴有设备可以解决我所有的问题。
我打开盒子,连接所有东西 - 但声音仍然以不同的速度记录。 呃。
繁琐的搜索、故障排除和多年的奋斗
我开始了一次可悲的故障排除尝试。 看着很痛苦。 每次我把所有设备从柜子里拿出来,跪在桌面后面连接所有设备,尝试捕捉视频 - 却再次发现没有任何效果。
我在 2008 年偶然看到一篇论坛帖子,内容是关于安装一些奇怪的未签名的中文驱动程序……这是一个糟糕的主意,但我很绝望。 然而,他没有帮忙。
我尝试了不同的数字化程序。 买
我总是放弃,拔掉所有电源,并将设备藏在壁橱里几个月。
投降并将磁带交给专业人士
2018年已经到来。 我在四个不同的公寓周围搬了录像带和大量设备,并准备从纽约搬到马萨诸塞州。 我找不到再次接受它们的力量,因为我已经意识到我永远无法独自完成这个项目。
我问家人是否可以将磁带捐赠给数字化公司。 幸运的是,没有人反对——每个人都想再次看到这些记录。
Я:但这意味着某些公司将可以访问我们所有的家庭视频。 它适合你吗?
妹妹: 是的,我关心。 只有你一个人在担心。 等等,所以你可以一开始就付钱给别人吗?
Я: 嗯嗯……
所有 45 个磁带的数字化成本为 750 美元。 它看起来很贵,但到那时我愿意付出任何代价就不必再处理这些设备了。
当他们交出文件时,视频质量肯定更好了。 在我的框架上,框架边缘总是可以看到扭曲,但专家将所有内容数字化,没有任何扭曲。 最重要的是,音频和视频完全同步。
这是一个视频,比较了专业数字化和我自己的尝试:
我妈妈拍摄我第一次编程尝试的视频中专业数字化和自制数字化的比较
步骤 2. 编辑
在家庭拍摄中,大约90%的材料是无聊的,8%是有趣的,2%是令人惊奇的。 数字化之后,您还有很多工作要做。
在 Adobe Premiere 中编辑
在 VHS 录像带上,一长串视频剪辑中散布着空白部分。 要编辑磁带,您必须确定每个剪辑的开始和结束位置。
对于编辑,我使用了 Adobe Premiere Elements,其终身许可费用不到 100 美元。 它最重要的特点是可扩展的时间线。 它可以让您快速找到场景的边缘,然后放大以找到剪辑开始或结束的确切视频帧。
Adobe Premiere Elements 中的基本缩放时间轴
Premiere 的问题在于,该过程需要不断的手动步骤,而且数字化和导出也需要很长时间。 这是我的操作顺序:
- 打开包含 30-120 分钟视频的原始文件。
- 标记单个剪辑的边界。
- 导出剪辑。
- 等待 2-15 分钟导出完成。
- 重复步骤 2-4,直到胶带用完。
漫长的等待意味着我不断地在视频编辑和其他任务之间来回切换,我的注意力来回转移几个小时。
另一个缺点是不可重复性。 修复一个小错误几乎和从头开始一样困难。 当发布视频时,我受到了很大的打击。 直到那时我才意识到,为了在互联网上进行流式传输,首先有必要将视频导出为网络浏览器本身支持的格式。 我面临着一个选择:重新启动导出数百个剪辑的繁琐过程,或者将导出的视频重新编码为另一种质量下降的格式。
编辑自动化
在花了很多时间进行手工工作之后,我想知道人工智能是否可以以某种方式应用到这里。 确定剪辑的边界似乎是机器学习的合适任务。 我知道准确度不会很完美,但让他完成至少 80% 的工作,我会修复最后 20%。
我尝试了一个名为
$ docker run
--volume "/videos:/opt"
handflucht/pyscenedetect
--input /opt/test.mp4
--output /opt
detect-content --threshold 80
list-scenes
[PySceneDetect] Output directory set:
/opt
[PySceneDetect] Loaded 1 video, framerate: 29.97 FPS, resolution: 720 x 480
[PySceneDetect] Downscale factor set to 3, effective resolution: 240 x 160
[PySceneDetect] Scene list CSV file name format:
$VIDEO_NAME-Scenes.csv
[PySceneDetect] Detecting scenes...
[PySceneDetect] Processed 55135 frames in 117.6 seconds (average 468.96 FPS).
[PySceneDetect] Detected 33 scenes, average shot length 55.7 seconds.
[PySceneDetect] Writing scene list to CSV file:
/opt/test-Scenes.csv
[PySceneDetect] Scene List:
-----------------------------------------------------------------------
| Scene # | Start Frame | Start Time | End Frame | End Time |
-----------------------------------------------------------------------
| 1 | 0 | 00:00:00.000 | 1011 | 00:00:33.734 |
| 2 | 1011 | 00:00:33.734 | 1292 | 00:00:43.110 |
| 3 | 1292 | 00:00:43.110 | 1878 | 00:01:02.663 |
| 4 | 1878 | 00:01:02.663 | 2027 | 00:01:07.634 |
...
该工具确实显示出约 80% 的准确率,但检查其工作所花费的时间比节省的时间要多。 然而,pysceneDetect 做出了整个项目最重要的发现之一:定义场景边界和导出剪辑是单独的任务。
我想起来我是一名程序员
到目前为止,我认为我在 Adobe Premiere 中所做的一切都是“编辑”。 从原始帧中剪切剪辑似乎与寻找剪辑的边界密切相关,因为这就是 Premiere 设想的任务。 当 pysceneDetect 打印出元数据表时,它让我意识到我可以将场景搜索与视频导出分开。 这是一个突破。
编辑之所以如此乏味且耗时,是因为我必须等待 Premiere 导出每个剪辑。 如果我将元数据写入电子表格并编写自动导出视频的脚本,编辑过程就会很快过去。
此外,电子表格极大地扩展了元数据的范围。 最初,我将元数据填充到文件名中,但这限制了它们。 拥有完整的电子表格使我能够对有关该剪辑的更多信息进行分类,例如其中的人物、录制时间以及在视频播放时我想要显示的任何其他数据。
后来,我能够使用此元数据向剪辑添加信息,例如我们的年龄以及剪辑中发生的情况的详细描述。
电子表格功能允许您记录元数据,从而提供有关剪辑的更多信息并使其更易于查看
自动化解决方案的成功
有了电子表格,我写了
下面是它的实际效果:
到现在我已经花了 数百 几个小时,在 Premiere 中繁琐地选择剪辑边界,点击导出,等待几分钟完成,然后重新开始。 不仅如此,当后来发现质量问题时,对同一剪辑重复了多次该过程。
当我自动化剪辑的切片部分时,巨大的重量从我的肩膀上掉了下来。 我不再需要担心我会忘记元数据或选择错误的输出格式。 如果稍后出现错误,您只需调整脚本并重复所有操作即可。
Часть2
数字化和编辑视频片段只是成功的一半。 我们仍然需要找到一种方便的在互联网上发布的选项,以便所有亲戚都可以像在 YouTube 上一样通过流媒体以方便的格式观看家庭视频。
在文章的第二部分,我将详细介绍如何建立一个包含所有视频剪辑的开源媒体服务器,这每月只花费我 77 美分。
持续
Часть2
来源: habr.com