无忧启动论坛

标题: 视频多点截取重新合并的小玩意儿 [打印本页]

作者: x9tian    时间: 2018-7-21 08:00
标题: 视频多点截取重新合并的小玩意儿
本帖最后由 x9tian 于 2019-5-26 13:10 编辑

我写它的用途:
1:视频占用大,我看着不舒服。
2:有些视频废话太多,我看着也不舒服。
3:好吧我承认:
小电影占盘太多,
每次看还要拖进度条,
关键是放在手机里面占用太大: 一个就1~2 GiB 手机装不了几个的,手机不能只装小电影还要存别的东西的好不这么大而关键播放点就那么四五处
(小电影才是重点
有需求就有创作。
如是想到了ffmpeg 这玩意儿是神器啊,视频 音频,连直播都能干。

更新了下批处理, 新的批处理 免疫空格文件夹文件名和一些乖装的文件名(括号 还有#号不免疫)
  1. @echo off
  2. cls
  3. setlocal  ENABLEDELAYEDEXPANSION
  4. for /f "tokens=1,2 delims=#" %%i in ('more test.txt') do (
  5. set "input=%%~i"
  6. set "names=%%~nxi"
  7. set "names_n=%%~ni"
  8. set "names_x=%%~xi"
  9. set "output=%%~j"
  10. goto :st
  11. )
  12. :st

  13. if "%output:~-1%"=="\" set "output=%output:~0,-1%"

  14. (
  15. for /f "tokens=1-3 delims=[] " %%i in ('more +1 test.txt^|find /n /v ""') do (

  16.         for /f "tokens=1,2 delims=:" %%a in ("%%j") do  (
  17.                  set /a  "HH%%i=(%%a*60+1%%b%%100)/3600","MM%%i=((%%a*60+1%%b%%100)%%3600)/60","SS%%i=(%%a*60+1%%b%%100)%%60"
  18.         )
  19.         for /f "tokens=1,2 delims=:" %%a in ("%%k") do  (
  20.                  set /a  "HH%%i_=(%%a*60+1%%b%%100)/3600","MM%%i_=((%%a*60+1%%b%%100)%%3600)/60","SS%%i_=(%%a*60+1%%b%%100)%%60"
  21.         )
  22.         ffmpeg  -y -ss !HH%%i!:!MM%%i!:!SS%%i! -to !HH%%i_!:!MM%%i_!:!SS%%i_!  -i  "%input%" -c copy "%output%\%names_n%-%%i%names_x%"
  23.         echo.file '%output%\%names_n%-%%i%names_x%'
  24.         set "dels=!dels! "%output%\%names_n%-%%i%names_x%""
  25. )
  26. )>"%temp%\%names_n%.txt"
  27. ffmpeg -f concat -i "%temp%\%names_n%.txt" -c copy "%output%\%names%"
  28. del /q /f "%temp%\%names_n%.txt"
  29. pause
  30. for  %%i in (%dels%) do del /a /f %%i 2>nul
复制代码

注意配套的test.txt范本
1:范本不能有空行(因为用find /n 进行了排序)
2:"G:\my Files\download\楚汉风云\楚汉传奇 01_高清.mp4" 为要加工的视频,路径和文件名支持空格和一些乖装的文件名(括号 还有#号不免疫)
3:"E:\新建 文件夹"  为视频输出目录 ("?:" , "?:\" ,  "?:\abc"  ,"?:\a bc\de  f \")种类型文件夹或根目录都行.  重点:和源文件同一个目录它会干掉你的源文件 因为生存的也是相同文件名如 H:\xxx.mkv,如果你不要留源文件的话当我没说。
4:任何FFMPEG 支持的视频格式均可
5:文件名不要有带括号 “()” ,“[]” “#” ,当然还有带双惊叹号 “!”文件路径这些乖装的文件夹能处理,但是尽量能别用,就不用。
6:时间是以分钟为最高单位。比如 01:05:34 应写为 65:34
7:"G:\my Files\download\楚汉风云\楚汉传奇 01_高清.mp4"#"E:\新建 文件夹" (是用符号#间隔了,请照范本所示加上)12:38 14:23  (12:38为截取开始位置,14:23截取结束位置  不要写反了顺序。)


新的范本示例
  1. "G:\my Files\download\楚汉风云\楚汉传奇 01_高清.mp4"#"E:\新建 文件夹"
  2. 12:38 14:23
  3. 25:33 36:15
  4. 65:34 88:14
  5. 复制代码
复制代码


从优酷里面提取的FFMPEG version2.5.3做好的成品直截可用
链接密码: hc6w
网盘里面的范本和批处理也更新了

作者: x9tian    时间: 2018-7-21 08:09
本帖最后由 x9tian 于 2018-7-21 15:34 编辑

才发现如果
if "%output:~-1%"=="\" set "output=%output:~0,-1%"
用code引用   "\" 会变成
  1. ""
复制代码
幸亏眼尖发现了改成 "\\" 就显示
  1. "\"
复制代码


这是老版本的 批处理和范本,现在一楼更新了批处理
  1. @echo off
  2. cls
  3. setlocal  ENABLEDELAYEDEXPANSION
  4. for /f "tokens=1-3 delims=[] " %%i in ('more test.txt^|find /n /v ""') do (
  5. set "input=%%~j"
  6. set "names=%%~nxj"
  7. set "names_n=%%~nj"
  8. set "names_x=%%~xj"
  9. set "output=%%~k"
  10. goto :st
  11. )
  12. :st

  13. if "%output:~-1%"=="\" set "output=%output:~0,-1%"

  14. (
  15. for /f "tokens=1-3 delims=[] " %%i in ('more +1 test.txt^|find /n /v ""') do (

  16.         for /f "tokens=1,2 delims=:" %%a in ("%%j") do  (
  17.                  set /a  "HH%%i=(%%a*60+1%%b%%100)/3600","MM%%i=((%%a*60+1%%b%%100)%%3600)/60","SS%%i=(%%a*60+1%%b%%100)%%60"
  18.         )
  19.         for /f "tokens=1,2 delims=:" %%a in ("%%k") do  (
  20.                  set /a  "HH%%i_=(%%a*60+1%%b%%100)/3600","MM%%i_=((%%a*60+1%%b%%100)%%3600)/60","SS%%i_=(%%a*60+1%%b%%100)%%60"
  21.         )
  22.         ffmpeg  -i %input% -vcodec copy -acodec copy -ss !HH%%i!:!MM%%i!:!SS%%i! -to !HH%%i_!:!MM%%i_!:!SS%%i_! %output%\%names_n%-%%i%names_x% -y
  23.         echo.file '%output%\%names_n%-%%i%names_x%'
  24.         set "dels=!dels! "%output%\%names_n%-%%i%names_x%""
  25. )
  26. )>"%temp%\%names_n%.txt"
  27. ffmpeg -f concat -i %temp%\%names_n%.txt -c copy %output%\%names_n%%names_x%
  28. del /q /f "%temp%\%names_n%.txt"
  29. pause
  30. for  %%i in (%dels%) do del /a /f %%i 2>nul

复制代码


注意配套的test.txt范本
1:范本不能有空行(因为用find /n 进行了排序)
2:H:\xxx.mkv 为要加工的视频,文件名不要有空格,也不要带引号 (人懒没处理这些)
3:e:\  为视频输出目录 (?: , ?:\ ,  ?:\abc ?:\abc\def )种类型文件夹或根目录都行.  重点:和源文件同一个目录它会干掉你的源文件 因为生存的也是相同文件名 H:\xxx.mkv,如果你不要留源文件的话当我没说。
4:任何FFMPEG 支持的视频格式均可
5:文件名不要有空格和带括号 “()” ,“[]”
6:时间是以分钟为最高单位。比如 01:05:34 应写为 65:34
7:H:\xxx.mkv e:\  (是用空格间隔了,别看花了眼)12:38 14:23  (12:38为截取开始位置,14:23截取结束位置  不要写反了顺序。)
旧的范本示例
  1. H:\xxx.mkv e:\
  2. 12:38 14:23
  3. 25:33 36:15
  4. 65:34 88:14
复制代码

作者: acer669    时间: 2018-7-21 09:37
强!有想法,支持一个!
作者: renchmin    时间: 2018-7-21 09:48
不错的视频分割合并小软件了啊,支持楼主了。
作者: wanghh    时间: 2018-7-21 10:15
不会用啊。
作者: ipkh    时间: 2018-7-21 10:19
看看好用不,楼主辛苦。
作者: 2013caituaner    时间: 2018-7-21 10:37
别说,这个还真实用。感谢楼主有心有匠心有巧心!
作者: ipkh    时间: 2018-7-21 10:39
不会用哦。
作者: devilma    时间: 2018-7-21 11:13
不错,支持一下!
作者: 有阴也有阳    时间: 2018-7-21 12:49
请问FLV格式的视频支持吗?
作者: x9tian    时间: 2018-7-21 13:48
ipkh 发表于 2018-7-21 10:39
不会用哦。

照着范本写test.txt 文件,然后运行 批处理就行了,全自动处理
作者: x9tian    时间: 2018-7-21 13:50
wanghh 发表于 2018-7-21 10:15
不会用啊。

自己把要处理的视频,时间段按 test.txt里面的范本照着写好。
然后运行批处理,一键就生成了

作者: x9tian    时间: 2018-7-21 14:14
有阴也有阳 发表于 2018-7-21 12:49
请问FLV格式的视频支持吗?

FLV严格来说是图片集合,我记得FFMPEG 是支持的。
我这个是截取视频中的视频时间段,不会修改视频文件的本身 ,应当是没有问题的。
作者: joes163    时间: 2018-7-21 14:56
有需求就有创作
作者: rengrancunzai    时间: 2018-7-21 17:12
谢谢分享,试试小玩具
作者: zsxcv2018    时间: 2018-7-21 20:02
哈哈!有时间试试!
作者: wang6610    时间: 2018-7-21 20:49
楼主看下怎样去除多处水印.
作者: helloman    时间: 2018-7-22 06:51
谢谢,有想法还有能力实现,牛!
作者: 2011npwjm    时间: 2018-7-22 07:32
谢谢楼主的分享




欢迎光临 无忧启动论坛 (http://wuyou.net./) Powered by Discuz! X3.3