美文网首页
半自动ffmpeg视频分段切割,windows版

半自动ffmpeg视频分段切割,windows版

作者: 小艾咪 | 来源:发表于2020-12-14 20:44 被阅读0次

    前言

    事情的起因是这样的,原神开服也有一阵了。几乎所有剧情我都是开着录屏来玩的。现在剧情全推完了看了下录屏文件夹也录了180多G了所以想着就上传到百度盘吧。然后

    屏幕截图 2020-12-14 142109.png

    ........单文件有点大,然后想着用达芬奇切一下结果,达芬奇不支持mkv格式导入,淦!所以就想到了ffmpeg。但ffmpeg切割视频的命令是这样的

    ffmpeg -ss start -i videoName -t duration -c:a copy -c:v copy seqName.mp4
    

    start:开始时间

    duration:持续时间

    所以手动输入有点麻烦,就简单学习了一下批处理并用bat封装了一下.

    正文

    BAT常规命令

    echo

    向控制台打印 如echo hello world

    它还有一些其他功能如 echo off正常批处理执行时都会在命令行显示当前执行的命令,echo off表示从该行起不再显示当前正在执行的命令。同理echo on与其功能相反

    dir显示文件夹内容

    cd切换目录

    md创建目录

    copy文件复制

    cls清平

    del文件删除

    ren文件重命名

    pause暂停

    rem/::注释

    :定义程序段,可用goto跳转到此,使用goto eof结束程序段

    goto跳转

    下面是本次处理会用到的命令

    set

    用于定义或为变量赋值,它有俩个可选参数

    /a 表示其后的参数将以数字形式操作例如set a=1+1 echo %a%将输出1+1set /a a=1+1 echo %a%将输出2

    /p表示接收用户输入,将用户输入赋值给当前变量例如set /p a=请输入那么a的值就等于用户输入的数据

    for

    for循环有好几种形式,这里我介绍将要使用的一种形式

    for %%i in (start,step,end) do (command)

    %%i每次循环的索引值,start开始索引,step每次循环索引的步进,end结束索引,这里注意如果是在命令行中直接运行需要将%%i改写为%i

    当我们在编写某种编程语言经常会使用for并且for循环中会对外部变量做出更改,这里注意bat中不能直接访问外部变量,需要在for之前(一般在文件开头)加入setlocal enabledelayedexpansion并且在for循环内不再以%varName%作为取值依据应换为!varName!

    ok,基础就到这里下面是bat源文件

    bat源文件

    @echo off
    title 视频切割
    setlocal enabledelayedexpansion
    
    set /p videoName=输入视频名称:
    set /p seqName=输入序列名:
    set /p timelength=输入视频时长(单位秒):
    set /p segcount=想分为多少段:
    set /a segmentlength=(%timelength%+%segcount%-1)/%segcount%
    set /a start=0
    for /L %%i in (1,1,%segcount%) do (
       ffmpeg -ss !start! -i %videoName% -t %segmentlength% -c:a copy -c:v copy !seqName!%%i.mp4
       set /a start=!start!+!segmentlength!
    )
    pause
    

    使用注意:需为ffmpeg配置环境变量

    最后:


    大幻梦森罗万象狂气断罪眼\ (•◡•) /

    相关文章

      网友评论

          本文标题:半自动ffmpeg视频分段切割,windows版

          本文链接:https://www.haomeiwen.com/subject/aqqggktx.html