[AHK] FFmpeg视频合并工具

看在某只老鼠卖萌的份上,忍着对AHK语法的厌烦:sweat_smile:写了这么个小工具
使用:

把脚本和ffmpeg.exe放在一起→运行脚本→选择需要合并的文件→完工

AHK脚本:

MsgBox, 64, FFmpeg视频合并工具, 使用须知:`n      视频将按照文件名顺序合并`n`n点击确定选择需要合并的文件
FileSelectFile, files, M, , 请选择需要合并的视频文件,Video(*.avi;*.mp4;*.mkv;*.flv)
If files =
{
  MsgBox, 16, 错误提示, 没选择文件/所选超出限制
  return
}
lst := FileOpen("list.txt", "w")
If !IsObject(lst)
{
  MsgBox, 16, 错误提示, 创建视频列表失败
  return
}
Loop, parse, files, `n
{
  If A_Index = 1
  {
    dir := A_LoopField
    continue
  }
  str = file '%dir%\%A_LoopField%'`r`n
  lst.Write(str)
}
lst.Close
Sleep, 1000
RunWait %comspec% /k "ffmpeg -f concat -safe 0 -i list.txt -c copy "%dir%\output.mp4""
FileDelete, list.txt
Exit
2 Likes

鉴于你们都喜欢 AutoHotkey,新建了 AutoHotkey 分类。

谢谢~~~

下一次我卖萌的时候给你五折哦~~

并不喜欢
语法不够规范,缺乏一致性。
导致每次写AHK都会产生各种不爽。

我看了官网现在做的v2,已经在改进这些问题了。不过重点这是一种解释性语言,所以天然具有灵活性,但你写的时候可以自己实行一套规范,使自己的代码一致。

灵活性毁于见鬼的文档,而且规范和灵活并不矛盾。
比如说AHK的 :=,大致等同于其他语言的 = ,这个用起来没问题。
问题是AHK还保留了和其他语言语法不同的 = ,学过其他语言的一不小心就手滑……
还不如将 :== 倒过来,让 = 和其他语言保持一致。

话说v2支持同时选择文件和文件夹了么?
都有 FileSelectFileFileSelectFolder 了,居然没有 FileSelect……
无法理解……

v1.1 to v2.0改进文档第一句就是“Removed literal assignments: var = value”:joy:
后面还有一段:Renamed commands:
FileSelectFile -> FileSelect
FileSelectFolder -> DirSelect
现在还在alpha阶段,对于改进和功能还有很多讨论,最终会改成什么样还不清楚,但一定是越来越好的。目前的改变可以看这个网址,https://autohotkey.com/v2/v2-changes.htm

thx,之前在官网首页没见到v2的入口。
仅仅是重命名没意义啊,FileSelectFile本来就支持多选,
然而返回的文件列表中并不包含选中的文件夹

我猜这样改过以后就会返回文件夹了,之前的命名和返回列表确实很让人困惑