Git 如何将提交信息自动嵌入到我';我在跟踪?

Git 如何将提交信息自动嵌入到我';我在跟踪?,git,ffmpeg,Git,Ffmpeg,我使用git跟踪*.ass字幕文件。 下面是*.ass文件的示例: [Script Info] ; Script generated by Aegisub 3.1.2 ; http://www.aegisub.org/ Title: Default Aegisub file ScriptType: v4.00+ [V4+ Styles] Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour

我使用
git
跟踪
*.ass
字幕文件。 下面是
*.ass
文件的示例:

[Script Info]
; Script generated by Aegisub 3.1.2
; http://www.aegisub.org/
Title: Default Aegisub file
ScriptType: v4.00+

[V4+ Styles]
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour,    BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
Style: Default,Arial,20,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,0,0,0,0,100,100,0,0,1,2,2,2,10,10,10,1
Style: titr,DejaVu     

Sans,20,&H007DDBFA,&H000000FF,&H00000000,&HFF000000,0,0,0,0,100,100,0,0,1,2,2,1,10,10,10,1

[Events]
Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Dialogue: 0,0:00:00.46,0:00:11.22,Default,,0,0,0,,Если это можно было бы
Dialogue: 0,0:00:03.44,0:00:08.96,titr,,0,0,0,,{\pos(20,240)\fad(600,600)}бывший министр
提交后,我将字幕刻录到视频中:

ffmpeg-i video.avi-vf“ass=subtitle.ass”out.avi

我的目标是在电影开始时显示提交日期10秒。这应该自动完成

1) 通过修改subtitle.ass本身可以很容易地完成,但我不能在提交后完成,还有其他原因

2) 它可以通过命令行中的
ffmpeg
完成:

问题是,在这种情况下,文本将显示整个电影长度

3) 我可以将*.ass文件复制到临时目录,插入日期,渲染和删除*.ass文件


有没有更简单的方法

您的第三种方法似乎很简单。下面是它的一个可能实现

我使用的树结构是

$tree
.
├── 烧录子文件和提交日期
├── 次级回购
│   └── 次级驴
└── test_video.avi
在哪里

  • burn\u sub\u w\u commit\u date
    是一个shell(bash)脚本
  • sub.ass
    是您在问题中发布的原始字幕文件
  • sub_repo
    是一个Git存储库,用于跟踪您在
    sub.ass
    上的工作(并且至少包含一个提交)
  • test\u video.avi
    只是我在Youtube上找到的一些视频
以下是
burn\u sub\u w\u commit\u date
的内容:

#/垃圾箱/垃圾箱
#在视频中使用字幕刻录上次提交日期
#在出现任何错误时退出
set-e
#提取test.ass的头部并将其复制到临时文件中
sed'/对话:/,$d'sub.ass>temp_head.ass
#提取test.ass的尾部并将其复制到第二个临时文件
sed-n'/对话:/,$p'sub.ass>temp_tail.ass
#将提交日期写入第三个临时文件
printf“对话:0,0:00:00.00,0:00:10.00,默认值,,`git log-1--format=“%cD”| sed's/[+\-][0-9]\{4\}/`\n”>temp\u mid.ass
#将所有三个临时文件连接到第四个临时文件中
猫头、屁股、中屁股、尾巴、屁股温度>屁股温度
#清理(删除前三个临时文件)
rm temp_head.ass temp_tail.ass temp_mid.ass
#将字幕刻录到视频中
ffmpeg-i.。/测试视频.avi”-vf“ass='temp.ass'。/测试视频\u out.avi”
#清理(删除最后一个临时文件)
临时助理
现在,如果您
cd
test\u video/sub\u repo
并运行

sh../burn\u sub\u w\u commit\u date
在我的例子中,字幕将被刻录到视频和当前分支上最后一次提交的日期中

Sun, 24 Aug 2014 00:01:23
将在开始时显示10秒


当然,您可能希望改进自动化;让脚本可执行并让它接受相关路径作为参数似乎是下一个显而易见的步骤。。。但是基本思想是存在的。

第三种方法(将提交日期添加到临时文件,使用它,然后删除它)似乎是最简单的。您能否编辑您的问题,添加一个
*.ass
文件的标题(比如前20行),以便我们知道它们是由什么组成的?噢,感谢您提供详细的答案!我没有什么事可做了!))