如何转换为m4v

时间:2009-10-17 03:33:40

标签: .net video video-processing

通过脚本或编程?我有一堆需要转换的文件 想知道是否有更好的方法,而不是一次一个地提示

OS windows Vista / XP

2 个答案:

答案 0 :(得分:2)

Handbrake是编码为M4V的绝佳工具。您甚至可以将其设置为以批处理模式运行。我曾经使用这种方法编写了整个Lost季节。它可以通过命令行或通过GUI运行,但不管怎样,它都支持批量编码文件。

答案 1 :(得分:1)

假设您已经有一个(支持命令行的)程序已经可以转换为m4v,并且您只是希望能够自动执行该过程,这里是一个批处理文件,您可以修改该文件以循环遍历目录中的所有文件及其子目录并调用您的转换程序。如上所述,它使用Handbrake将.iso,.img或以VIDEO_TS格式提取的DVD转换为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定位的播放设备,以及您是否已经拥有可以进行转换的程序。