[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] 批处理如何精确提取视频里面的图片?

如何从视频中精确提取出来这5张图片~ 视频已经上传到网盘(如下)

链接: https://pan.baidu.com/s/1oY3NP_5Q57WnTlwzk4H0yQ 提取码: bat8

由图片合成的视频,每张图片运用了不同的上下左右缓慢移动的关键帧)

例如这个视频是5张图片合成的,如何精确提取出来较为完整的这5张图片?

还望大佬给写段代码,提前表示感谢了!

本帖最后由 877 于 2023-9-6 01:05 编辑

多张图片合成的视频,怎样做到每张图片只抽最完整的一帧,而不是把视频分解成很多帧,还望大佬指教

TOP

回复 1# 877


    请把图片、视频、合并的命令打包上传到网盘看一下?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 3# Batcher


    大佬您好,我上传网盘了5张图片生成的视频,就是想能从视频中精确提取出来这5张图片~

链接: https://pan.baidu.com/s/1oY3NP_5Q57WnTlwzk4H0yQ 提取码: bat8

TOP

re:
  1. ffmpeg -i 123.mp4 -an -vf select='eq(pict_type\,I)' -vsync 2  -f image2 image-%03d.png
复制代码
  1. 想弄成点击后先创建以*.mp4为名称的文件夹,然后
  2. 提取的png图片也在这个文件夹中
复制代码



我的ffmpeg,png报错,jpg成功。
  1. @echo off
  2. chcp 65001
  3. rem 批处理保存为utf-8编码格式
  4. for %%a in (*.mp4) do (
  5. md "%%~na"
  6. cmd /c ""ffmpeg" -i "%%~fa" -an -vf select='eq(pict_type\,I)' -vsync 2 -f image2 "%%~dpa/%%~na/image-%%03d.jpg""
  7. )
  8. pause
  9. 参考资料
  10. http://www.bathome.net/thread-66195-1-1.html
复制代码


写的有点复杂,批处理中单行直接执行ffmpeg命令可以成功,写入for中,%%0就会被扩展到批处理自身...参考buyiyang大佬的帖子使用cmd /c总算解决...
1

评分人数

    • 877: 666,感谢大佬!万分感谢!技术 + 1
bat小白,请多指教!谢谢!

TOP

回复 5# 77七


    77七大佬,能给写个图片批量去水印的bat代码吗?

文件夹下多个图片需要去除水印,还请大佬费心帮助!

万分感谢!

TOP

回复 6# 877


   得知道水印位置。网上找个去水印代码,套一下就行了。
  1. @echo off
  2. for /f "delims=" %%i in ('dir /b /a-d *.jpg') do (
  3. ffmpeg -i "%%i" -strict -2 -vf delogo=x=300:y=250:w=56:h=18:show=0 "%%~ni_2%%~xi"
  4. )
  5. pause
复制代码
bat小白,请多指教!谢谢!

TOP

回复 7# 77七


    收到大佬,非常感谢您!

最新求助帖,按照视频场景(镜头或者画面变化)拆分视频,您给看下吧~~

TOP

回复 7# 77七
  1. @echo off
  2. for /f "delims=" %%i in ('dir /b /a-d *.jpg') do (
  3. ffmpeg -i "%%i" -strict -2 -vf delogo=x=300:y=250:w=56:h=18:show=0 "%%~ni_2%%~xi"
  4. )
  5. pause
复制代码
大佬,这段代码改成去水印的图片移动到自定义文件夹"已去水印"应该怎样写呢?

TOP

回复 9# 877


  
  1. @echo off
  2. md "已去水印" 2>nul
  3. for /f "delims=" %%i in ('dir /b /a-d *.jpg') do (
  4. ffmpeg -i "%%i" -strict -2 -vf delogo=x=300:y=250:w=56:h=18:show=0 "%~dp0已去水印\%%~ni_2%%~xi"
  5. )
  6. pause
复制代码
bat小白,请多指教!谢谢!

TOP

回复 10# 77七


    感谢大佬!ffmpeg镜头分割视频这方面您了解吗?

TOP

回复 11# 877


   不了解
bat小白,请多指教!谢谢!

TOP

回复 10# 77七
  1. @echo off
  2. chcp 65001
  3. rem 批处理保存为utf-8编码格式
  4. for %%a in (*.mp4) do (
  5. md "已抽第2帧"
  6. cmd /c ""ffmpeg" -i "%%~fa" -an -vf select='eq(pict_type\,I)' -vframes 2 -f image2 "%%~dpa/已抽第2帧/%%~na.png""
  7. )
  8. pause
复制代码
大佬,给优化一下这段代码吧,批量抽取第二帧到"已抽第2帧"文件夹。

TOP

回复 13# 877


   要优化什么?
bat小白,请多指教!谢谢!

TOP

本帖最后由 877 于 2023-9-10 20:40 编辑

回复 14# 77七


    书写规范是不是有错误呢?会有红色错误代码
  1. Could not get frame filename number 2 from pattern 'C:\Users\1\Desktop\-00003602.png'. Use '-frames:v 1' for a single image, or '-update' option, or use a pattern such as %03d within the filename.
  2. av_interleaved_write_frame(): Invalid argument
复制代码

TOP

返回列表