2009-10-17 25 views
2

?我有一堆需要轉換 知道是否有更好的辦法不是通過提示一次一個如何通過腳本或以編程方式將其轉換爲m4v

操作系統Windows Vista/XP

+0

你在什麼操作系統上? * nix和windows有非常不同的腳本。此外,腳本是以編程方式做某事... – 2009-10-17 03:40:13

+0

我相信只是調用一個轉換器.exe是最簡單的解決方案。程序化方法需要使用不同的解碼器,編碼器和太多麻煩。 FFMpeg可能支持批處理,所以你只需要調用它一次。 – 2009-10-17 04:37:24

回答

1

假設你有一個(命令行能夠文件)程序已經可以轉換爲m4v,並且您只希望能夠自動執行該過程,下面是一個批處理文件,您可以修改該文件以遍歷目錄及其子目錄中的所有文件並調用轉換程序。正如所寫的,它使用Handbrake將.iso,.img中的DVD轉換爲VIDEO_TS格式轉換爲mp4供XBox 360使用。它應該相當容易更改。

只要將它保存爲encode.bat什麼的。

@echo off 

rem Encode DVD for XBOX360 using Handbrake 
rem Anything in %ENCODED_DIR% will not be encoded because everything in there 
rem is assumed to have been encoded already. 
rem 
rem Encodes VIDEO_TS, iso, and img .. renames img to iso 

SETLOCAL ENABLEDELAYEDEXPANSION 

SET FILE_TYPES=VIDEO_TS *.iso *.img 
SET ENCODED_DIR=[ENCODED] 
SET CONVERT_PROG=[HANDBRAKE]\HandBrakeCLI.exe 
SET CONVERT_ARG_INPUT=-i 
SET CONVERT_ARG_OUTPUT=-o 
SET CONVERT_ARG_SETTINGS=--longest --preset="Xbox 360" --native-language=eng --subtitle-scan 

IF NOT EXIST "%ENCODED_DIR%" mkdir "%ENCODED_DIR%" 

FOR /F "usebackq delims==" %%i IN (`dir %FILE_TYPES% /s /d /b ^| find /V "%ENCODED_DIR%"`) DO (
    rem trim the trailing slash and we have our output name minus the extension 
    SET INPUT_FILENAME=%%i 
    SET OUTPUT_FILENAME=%%~pi 
    SET BASE_NAME=!OUTPUT_FILENAME:~0,-1! 
    SET OUTPUT_FILENAME=!BASE_NAME!.mp4 

    rem rename .img to .iso so Handbrake recognizes it as a proper input format 
    IF /I "%%~xi"==".img" (
     SET INPUT_FILENAME=%%~pi%%~ni.iso 
     ren "%%i" "%%~ni.iso" 
    ) 

    start "Converting" /BELOWNORMAL /WAIT "%CONVERT_PROG%" %CONVERT_ARG_INPUT% "!INPUT_FILENAME!" %CONVERT_ARG_OUTPUT% "!OUTPUT_FILENAME!" %CONVERT_ARG_SETTINGS% 

    echo ERRORLEVEL AFTER CONVERT %ERRORLEVEL% >> last_errorlevel.txt 
) 

ENDLOCAL 

所以你需要修改這些變量:

SET FILE_TYPES=VIDEO_TS *.iso *.img 
SET ENCODED_DIR=[ENCODED] 
SET CONVERT_PROG=[HANDBRAKE]\HandBrakeCLI.exe 
SET CONVERT_ARG_INPUT=-i 
SET CONVERT_ARG_OUTPUT=-o 
SET CONVERT_ARG_SETTINGS=--longest --preset="Xbox 360" --native-language=eng --subtitle- 

FILE_TYPES是您要爲您的轉換程序的輸入格式使用什麼。 ENCODED_DIR是您要跳過的目錄(您可以使用它來存儲已經編碼過的文件或將它們存儲在其他地方的文件)。 CONVERT_PROG是您的轉換器的目錄。在這個例子中,我將它放在名爲[HANDBRAKE]的子目錄中,它被稱爲HandBrakeCLI.exe。 *** CONVERT_ARG _ ****是用來調用轉換器程序的設置。

只需將您想要轉換的子目錄轉換爲腳本。例如,在不改變腳本,你會依靠這個目錄結構:

encode_stuff\encode.bat 
encode_stuff\[ENCODED]\<stuff to skip> 
encode_stuff\[HANDBRAKE]\HandBrakeCLI.exe 
encode_stuff\dvd1\VIDEO_TS\<movie junk> 
encode_stuff\dvd2\my_dvd2.iso 

然後,當你運行該腳本,它會創建dvd1.mp4和my_dvd2.mp4。

因此,根據這個關於它是如何工作的描述,希望你能弄清楚如何修改它,即使你不太瞭解使用批處理語言的cmd shell編程。如果這個答案沒有幫助,那麼您應該更新原始問題,以包含您要使用的格式,您使用m4v定位的播放設備以及您是否已經有可以進行轉換的程序。

+0

好的+1 - 我將用它來轉換我的3TB電影intop h264,所以我可以通過html5(webkit)瀏覽器觀看我的電影 - 就像我自己的YouTube一樣。 – ppumkin 2012-09-13 12:16:55

2

Handbrake是編碼爲M4V的優秀實用程序。您甚至可以將其設置爲以批處理模式運行。我曾經使用這種方法編碼了一整個迷失的季節。它可以通過命令行或通過GUI運行,但無論哪種方式,它都支持批量編碼文件。

相關問題