3

我正在寻找一种方法来拆分或剪切用 h264 编码的 mp4 视频文件,而无需重新编码。到目前为止,我使用 Microsoft Expression Encoder 4 Pro 编辑 mp4 h264 编码文件。问题是,我总是必须重新编码文件,如果我只想剪切或分割视频文件,这需要时间,不必要的时间。任何帮助或指向正确的方向表示赞赏。

4

2 回答 2

4

我不知道如何在不重新编码(转码)的情况下拆分视频,但在 Windows 8 上已内置转码视频:

要修剪文件,请调用 aysnc 方法 PrepareFileTranscodeAsync,然后对 PrepareTranscodeResult 对象调用 TranscodeAsync 方法。

例如:

async void TrimFile(StorageFile srcFile, StorageFile destFile)
{
    MediaEncodingProfile profile =
        MediaEncodingProfile.CreateMp4(VideoEncodingQuality.HD720p);

    MediaTranscoder transcoder = new MediaTranscoder();

    // Set the start of the trim.
    transcoder.TrimStartTime = new TimeSpan(0, 0, 1);

    // Set the end of the trim.
    transcoder.TrimStopTime = new TimeSpan(0, 0, 9);

    PrepareTranscodeResult prepareOp = await
        transcoder.PrepareFileTranscodeAsync(srcFile, destFile, profile);

    if (prepareOp.CanTranscode)
    {
        var transcodeOp = prepareOp.TranscodeAsync();
        transcodeOp.Progress +=
            new AsyncActionProgressHandler<double>(TranscodeProgress);
        transcodeOp.Completed +=
            new AsyncActionWithProgressCompletedHandler<double>(TranscodeComplete);
    }
    else
    {
        switch (prepareOp.FailureReason)
        {
            case TranscodeFailureReason.CodecNotFound:
                OutputText("Codec not found.");
                break;
            case TranscodeFailureReason.InvalidProfile:
                OutputText("Invalid profile.");
                break;
            default:
                OutputText("Unknown failure.");
                break;
        }
    }
}

如何修剪视频文件(使用 C#/VB/C++ 和 XAML 的 Windows 应用商店应用程序)

也可以对旧版 Windows 进行拼接(使用DirectShow.Net)。

希望它可以帮助某人。

于 2014-01-21T15:22:38.010 回答
0

libmp4v2为您提供了构建自己的东西的原语。我不知道有一个免费的现成解决方案可以做到这一点,尽管只要你在 I 帧边界上切割它会相对容易实现。

于 2013-03-22T22:10:16.420 回答