DOS批处理文件以及rma,rmeditor来进行分割rmvb

来源:互联网 发布:贵州优易合创大数据 编辑:程序博客网 时间:2024/04/30 01:53
最近想把电影电视都放到土豆上去,
可是土豆提供的分割软件太木勒,
一个个手工分割不要把我累死才怪,
网络上也没有找到合适的批量分割软件,谁要是找到请告诉我。

可是我找到一篇利用DOS批处理文件以及rma,rmeditor来进行分割rmvb的文章。
我的处理思路都是他的,只不过多增加了点东西
忘记连接了,(兄弟,不好意思)

可是上面的批处理文件功能也没有完全,
而且不能运行。

但是DOS批处理文件以及rma,rmeditor来进行分割的解决思路是可行的
 
虽然没有写过批处理文件,但是想想结果,我还是花了3个小时来寻找,下载软件,学习批处理程序

终于ok了

程序写得我累啊嘞
先把程序粘出来
@ECHO on
SETLOCAL ENABLEDELAYEDEXPANSION
IF ERRORLEVEL 1 echo Unable to enable extensions
set /a SPLITMINS=20*60*1000

FOR /F %%i IN ('DIR /w d:/1/*.rmvb')  DO (





    SET RMVBNAME=%%i
    @ECHO RMVBNAME:!RMVBNAME!

    FOR /F "tokens=4 delims= " %%l IN ('D:/split/rma.exe -db %%i ^| FINDSTR /C "File

duration" ') DO (
        SET /A LONGTIME = %%l
    )
    SET /A TATOL25=!LONGTIME!/!SPLITMINS!
    SET /A LEFT25=!LONGTIME!%%!SPLITMINS!
    @Echo !TATOL25!
    SET  Num=0
:LABLE1
    if !TATOL25!  GTR 0 (

        SET /A STARTTIME=!NUM! * !SPLITMINS!

        SET /A Num=Num+1
        SET /A ENDTIME=!NUM!*!SPLITMINS!

        SET /A MMM1=!STARTTIME!%%1000
        SET /A SS1=!STARTTIME!/1000%%60
        SET /A MM1=!STARTTIME!/60000%%60
        SET /A HH1=!STARTTIME!/3600000%%60
        SET /A DD1=!STARTTIME!/86400000%%60

        @Echo !DD1!:!HH1!:!MM1!:!SS1!:!MMM1!

        SET /A MMM2=!ENDTIME!%%1000
        SET /A SS2=!ENDTIME!/1000%%60
        SET /A MM2=!ENDTIME!/60000%%60
        SET /A HH2=!ENDTIME!/3600000%%60
        SET /A DD2=!ENDTIME!/86400000%%60
        @Echo !DD2!:!HH2!:!MM2!:!SS2!:!MMM2!

        @echo %%i
        D:/split/rmeditor.exe -i !RMVBNAME! -o d:/!RMVBNAME!.!NUM!.rmvb -s

!DD1!:!HH1!:!MM1!:!SS1!.!MMM1! -e !DD2!:!HH2!:!MM2!:!SS2!.!MMM2!
       
        SET /A TATOL25=TATOL25-1
        IF !TATOL25!  GTR 0 (
                 GOTO LABLE1
                 )
        @Echo !TATOL25!
        )

    IF !LEFT25! NEQ 0 (
        SET /A STARTTIME=!NUM! * !SPLITMINS!
        SET /A MMM1=!STARTTIME!%%1000
        SET /A SS1=!STARTTIME!/1000%%60
        SET /A MM1=!STARTTIME!/60000%%60
        SET /A HH1=!STARTTIME!/3600000%%60
        SET /A DD1=!STARTTIME!/86400000%%60
        @Echo !DD1!:!HH1!:!MM1!:!SS1!:!MMM1!

        SET /A ENDTIME=!NUM!*!SPLITMINS!+!LEFT25!
        SET /A MMM2=!ENDTIME!%%1000
        SET /A SS2=!ENDTIME!/1000%%60
        SET /A MM2=!ENDTIME!/60000%%60
        SET /A HH2=!ENDTIME!/3600000%%60
        SET /A DD2=!ENDTIME!/86400000%%60
        @Echo !DD2!:!HH2!:!MM2!:!SS2!:!MMM2!
   
            SET /A NUM=NUM+1
        D:/split/rmeditor.exe -i !RMVBNAME!  -o d:/1/!RMVBNAME!.!NUM!.rmVB -s

!DD1!:!HH1!:!MM1!:!SS1!.!MMM1! -e !DD2!:!HH2!:!MM2!:!SS2!.!MMM2!


    )
)

pause
ENDLOCAL

@ECHO ON
*****************************************************************************

问题解决:
第一个是分割接口,这个上 http://www.realnetworks.com/products/producer 去下载,使用安装好的rmeditor.exe的命令方式进行分割rmvb,据说rm也是可以的,没有测试过
命令格式可以用 rmeditor.exe 查看
我的上面处理程序用到了
D:/split/rmeditor.exe -i %%i  -o d:/1/%%i.!NUM!.ram -s !DD1!:!HH1!:!MM1!:!SS1!.!MMM1! -e !DD2!:!HH2!:!MM2!:!SS2!.!MMM2!
注意两点:一个是路径,一个是时间的格式。

第二个是视频时间获取,这个使用rma,rma的寻找费了我好多时间,因为很多地方下不下来,下下来的很多都不支持rmvb,最后还是在csdn下到了,注意,一定要测试过rma是否可以支持rmvb
命令 rma -db filepath,我的测试返回如下:
RealMedia Analyzer, Version 0.30.00.Win32 build 29 Jun 2003 05:54:44
Copyleft (C) 2000-2003 Virtual Research

Filename             : 北盟外语(www.bmwy.net)-毕业生.rmvb
Average bitrate      : 673322 bits/sec
File duration        : 6077606 ms (01:41:17.61)
Audio stream bitrate : 64082 bits/sec
Video stream bitrate : 609240 bits/sec
Real Video version   : 4.0 (RealVideo 9)
Video size           : 800x448 @23 fps

第四个就是如何利用rma数据,我们可以利用 findstr(注意,windows 2000 下批处理用find 会有问题,而Xp下可以用find),命令如下
FOR /F "tokens=4 delims= " %%l IN ('D:/split/rma.exe -db %%i ^| FINDSTR /C "File duration" ') DO (
。。。。。)

for 是循环,至于怎么用,就要看批处理命令的帮助了

剩下还有其他的循环阿,如何将毫秒转化成想要得时间格式,确定分割的文件数阿,都是小问题

如何使用这个批处理程序呢:
1.注意好rma,rmeditor的路径问题,最好不要有空格,然后程序中最好使用绝对路径,这样的话应该就没有因为路经而出现问题
2.SPLITMINS是设置分割的视频文件的最长播放时间,因为土豆上不能超过30分钟

好了,我终于也写了自己第一个批处理程序了


 
原创粉丝点击