. : : ClassiClub ForuM : : .

会员中心 论坛帮助 日历事件 标记论坛已读
返回   精品技术论坛 » 技术论坛 » 『软件使用』

『软件使用』: 电脑软件推荐, 电脑软件使用, 经验分享



发表新主题 回复
 
主题工具
林展扬
 
林展扬 的头像
超级会员
 
资 料:
注册日期: Sep 2002
帖子: 1,925 声望值: 3
精华: 0
#1 旧 2015-06-27, 22:09:31 默认 已解答: 【求助】求批处理(伪)监视文件夹,内有详细说明。
林展扬 当前离线  

为了压片,自己做了一个x264的脚本,如下:
代码:
md #Done #Encoded
set FF=*.avi *.mkv *.mp4 *.wmv
set ffmpeg="D:\Program Files\MeGUI\tools\ffmpeg.exe"
set neroaac="D:\Program Files\MeGUI\tools\neroAacEnc.exe"
set WinRAR="D:\Program Files\WinRAR\WinRAR.exe"
set x264="D:\Program Files\MeGUI\tools\x264_64.exe"
for /f "delims=" %%a in ('dir %FF% /b') do (
%x264% --crf 26 --preset medium --tune animation --me umh --vf resize:832,468,,both,,lanczos --output "%Temp%\%%~na.mp4" "%%a"
%ffmpeg% -i "%%a" -vn -ar 44100 -async 1 -f wav pipe:|%neroaac% -ignorelength -he -br 32000 -if - -of "%Temp%\%%~na.m4a"
%ffmpeg% -i "%Temp%\%%~na.mp4" -i "%Temp%\%%~na.m4a" -map 0:v -map 1:a -c copy "%CD%\#Encoded\%%~na.mp4"
%WinRAR% m -ibck -ep1 -afZip -m5 ".\#Done\%%~na.Zip" "%%a"
del /q "%Temp%\%%~na.m4a"
del /q "%Temp%\%%~na.mp4"
)
pause
目前是,把视频复制到文件夹中,调用相关程序压制,后用WinRAR打包成Zip格式,放到Done文件夹中。
问题:只能压运行批处理时候文件夹中存在的文件,后续移动进去的不能呀。
希望实现:后续移动到文件夹的视频,自动添加到队列尾部进行压制。



坚持失去了意义,是消失的时候了。
回复时引用此帖
最佳解答为:jacky365
可以放到任务计划中去执行,每5分钟执行一次。

为避免上个Bat运行未继续,第二个进程启动,可以自己做个标记,比如任务开始生成一个 Running.dat 的文件,结束删除。

批处理进入时检测是否存在该文件,如果存在,说明上一个任务没有结束,直接退出。
stevenxu
 
stevenxu 的头像
支柱会员
 
资 料:
注册日期: Oct 2001
帖子: 5,195 声望值: 3
精华: 0,解答: 14
#2 旧 2015-06-28, 11:31:39 默认
stevenxu 当前离线  

不如用C++写个监控目录变化的


万物非主,唯曼尼大神是主
至圣之先师,亚当史密斯
回复时引用此帖
林展扬
 
林展扬 的头像
超级会员
 
资 料:
注册日期: Sep 2002
帖子: 1,925 声望值: 3
精华: 0
#3 旧 2015-06-28, 13:07:19 默认
林展扬 当前离线  

引用:
作者: stevenxu 查看帖子
不如用C++写个监控目录变化的
C++不会。= =!
而且就想简单用批处理实现。

依然谢。
回复时引用此帖
lucida
 
lucida 的头像
支柱会员
 
资 料:
注册日期: Sep 2001
帖子: 8,172 声望值: 3
精华: 4,解答: 106
#4 旧 2015-06-28, 15:49:15 默认
lucida 当前离线  

写程序也得一直放后台监视。

最简单的就是把批处理写成死循环,反复检查。注意每次循环末尾用sleep之类延时一下以防cpu 100%。
回复时引用此帖
林展扬
 
林展扬 的头像
超级会员
 
资 料:
注册日期: Sep 2002
帖子: 1,925 声望值: 3
精华: 0
#5 旧 2015-06-28, 18:57:43 默认
林展扬 当前离线  

引用:
作者: lucida 查看帖子
写程序也得一直放后台监视。

最简单的就是把批处理写成死循环,反复检查。注意每次循环末尾用sleep之类延时一下以防cpu 100%。
我也是这样想的。
不过不明白如何改,能帮忙修改一下吗?
回复时引用此帖
aquayhy
 
aquayhy 的头像
核心会员
 
资 料:
注册日期: Mar 2002
帖子: 4,088 声望值: 3
精华: 2,解答: 8
#6 旧 2015-06-28, 22:23:34 默认
aquayhy 当前离线  

楼主是哪个压制组啊?
回复时引用此帖
林展扬
 
林展扬 的头像
超级会员
 
资 料:
注册日期: Sep 2002
帖子: 1,925 声望值: 3
精华: 0
#7 旧 2015-06-28, 22:42:24 默认
林展扬 当前离线  

引用:
作者: aquayhy 查看帖子
楼主是哪个压制组啊?
没,就自己小打小闹,参数全都是默认的。
回复时引用此帖
jacky365
 
jacky365 的头像
热心会员
 
资 料:
注册日期: Aug 2001
帖子: 4,997 声望值: 7
精华: 3,解答: 52
#8 旧 2015-06-29, 08:39:12 默认
jacky365 当前离线  

可以放到任务计划中去执行,每5分钟执行一次。

为避免上个Bat运行未继续,第二个进程启动,可以自己做个标记,比如任务开始生成一个 Running.dat 的文件,结束删除。

批处理进入时检测是否存在该文件,如果存在,说明上一个任务没有结束,直接退出。
回复时引用此帖
林展扬
 
林展扬 的头像
超级会员
 
资 料:
注册日期: Sep 2002
帖子: 1,925 声望值: 3
精华: 0
#9 旧 2015-06-29, 12:16:27 默认
林展扬 当前离线  

引用:
作者: jacky365 查看帖子
可以放到任务计划中去执行,每5分钟执行一次。

为避免上个Bat运行未继续,第二个进程启动,可以自己做个标记,比如任务开始生成一个 Running.dat 的文件,结束删除。

批处理进入时检测是否存在该文件,如果存在,说明上一个任务没有结束,直接退出。
这个方法不错,我试试。
BTW:你和JackyE是啥子关系。
回复时引用此帖
林展扬
 
林展扬 的头像
超级会员
 
资 料:
注册日期: Sep 2002
帖子: 1,925 声望值: 3
精华: 0
#10 旧 2015-06-29, 12:22:48 默认
林展扬 当前离线  

引用:
作者: 林展扬 查看帖子
这个方法不错,我试试。
BTW:你和JackyE是啥子关系。
刚刚想了一下,直接查进程就是了,如果存在x264_64.exe或者ffmpeg.exe,直接跳过。
好思路!谢谢。
回复时引用此帖
riverqh
 
riverqh 的头像
终极会员
 
资 料:
注册日期: Mar 2002
帖子: 10,685 声望值: 3
精华: 1,解答: 55
#11 旧 2015-06-29, 13:05:55 默认
riverqh 当前离线  

CDirectoryChangeWatcher - ReadDirectoryChangesW all wrapped up
http://www.codeproject.com/Articles/...ryChangesW-all


学着做一些有益别人和社会的事情,不要讲回报,以此证明自己对别人和社会还有点用处。
回复时引用此帖
jacky365
 
jacky365 的头像
热心会员
 
资 料:
注册日期: Aug 2001
帖子: 4,997 声望值: 7
精华: 3,解答: 52
#12 旧 2015-07-01, 17:53:18 默认
jacky365 当前离线  

引用:
作者: 林展扬 查看帖子
这个方法不错,我试试。
BTW:你和JackyE是啥子关系。
除了都叫Jacky这个大俗名,没啥其他关系。

如果有效,不妨选个最佳解答。
回复时引用此帖
林展扬
 
林展扬 的头像
超级会员
 
资 料:
注册日期: Sep 2002
帖子: 1,925 声望值: 3
精华: 0
#13 旧 2015-07-02, 11:55:14 默认
林展扬 当前离线  

代码:
tasklist|find "ffmpeg.exe" ||tasklist|find "x264_64.exe"||(
md #Done #Encoded
set FF=*.avi *.mkv *.mp4 *.wmv
set ffmpeg="D:\Program Files\MeGUI\tools\ffmpeg.exe"
set neroaac="D:\Program Files\MeGUI\tools\neroAacEnc.exe"
set x264="D:\Program Files\MeGUI\tools\x264_64.exe"
for /f "delims=" %%a in ('dir %FF% /b') do (
%x264% --crf 26 --preset medium --tune animation --me umh --vf resize:832,468,,both,,lanczos --output "%Temp%\%%~na.mp4" "%%a"
%ffmpeg% -i "%%a" -vn -async 1 -f wav pipe:|%neroaac% -ignorelength -he -br 32000 -if - -of "%Temp%\%%~na.m4a"
%ffmpeg% -i "%Temp%\%%~na.mp4" -i "%Temp%\%%~na.m4a" -map 0:v -map 1:a -c copy "%CD%\#Encoded\%%~na.mp4"
del /q "%Temp%\%%~na.m4a"
del /q "%Temp%\%%~na.mp4"
move "%%a%" #Done\
)
pause)
最终代码,分享一下。
回复时引用此帖
C#
 
C# 的头像
核心会员
 
资 料:
注册日期: Oct 2000
帖子: 3,001 声望值: 3
精华: 0,解答: 10
#14 旧 2015-07-02, 17:43:38 默认
C# 当前离线  

问下

1.MeGUI下的X264编码要比FFMPEG的X246编码要好一些?
2.有些MKV里有多单轨如何处理?
3.为什么不用FFMPEG来编码AAC?



滚滚长江东逝水 浪花淘尽英雄 是非成败转头空 青山依旧在 几度夕阳红

白发渔樵江渚上 惯看秋月春风 一壶浊酒喜相逢 古今多少事 都付谈笑中
回复时引用此帖
林展扬
 
林展扬 的头像
超级会员
 
资 料:
注册日期: Sep 2002
帖子: 1,925 声望值: 3
精华: 0
#15 旧 2015-07-02, 18:07:46 默认
林展扬 当前离线  

引用:
作者: C# 查看帖子
问下

1.MeGUI下的X264编码要比FFMPEG的X246编码要好一些?
2.有些MKV里有多单轨如何处理?
3.为什么不用FFMPEG来编码AAC?
1.我试过用ffmpeg来编码x264,但是个人感觉貌似速度比较慢。MeGUI只是一个GUI,也是调用各种编码器进行编码,理论上来说,用MeGUI和文件直塞x264是一样的。
2.默认只会压第一个音轨。要压多音轨,偶不会。
3.我下的ffmpeg貌似不带AAC编码库。

其实代码大部分是网上抄来的,自己修改成自己需要的而已。
回复时引用此帖
发表新主题 回复

主题工具

论坛规则  发帖规则
不可以发表主题
不可以回复帖子
不可以上传附件
不可以编辑自己的帖子
论坛启用 vB 代码
版面启用 表情符号
版面启用 [IMG] 代码
版面禁用 HTML 代码


所有时间均为北京时间, 现在的时间是 11:45:21.

本论坛带宽由迅通网络提供
SSL证书由TrustAsia提供

Copyright © 2000 - 2019 ClassiClub Forum All Rights Reserved.
粤ICP备09123456号