【问题标题】:How to convert to m4v如何转换为 m4v
【发布时间】:2009-10-17 03:33:40
【问题描述】:

通过脚本还是以编程方式?我有一堆文件需要转换 想知道是否有比一次通过提示更好的方法

操作系统 windows Vista/XP

【问题讨论】:

  • 您使用的是什么操作系统? *nix 和 windows 有非常不同的脚本。此外,脚本正在以编程方式做某事......
  • 我相信调用转换器 .exe 是最简单的解决方案。程序化方法需要使用不同的解码器、编码器和太多的麻烦。 FFMpeg 可能支持批处理,所以只需要调用一次。

标签: .net video video-processing


【解决方案1】:

Handbrake 是用于编码为 M4V 的出色实用程序。您甚至可以将其设置为以批处理模式运行。我曾经用这种方法编码了一整季的《迷失》。它可以通过命令行或GUI运行,但无论哪种方式,它都支持批量编码文件。

【讨论】:

    【解决方案2】:

    假设您已经有一个(支持命令行的)程序可以转换为 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 定位的播放设备以及您是否已经有可以进行转换的程序。

    【讨论】:

    • NICE +1 - 我将使用它来将我的 3TB 电影转换为 h264,这样我就可以通过 html5(webkit) 浏览器观看我的电影 - 就像我自己的 youtube。
    猜你喜欢
    • 2011-10-03
    • 2012-01-16
    • 1970-01-01
    • 1970-01-01
    • 2012-02-20
    • 2018-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多