0

以下是加入两个视频的代码。当我运行该程序时,它会加入两个视频并将加入的视频放在一个文件夹中。加入的视频大小应该是正确的。

但是当我播放视频时,它会在 WMP 中播放视频的第一部分,但是当我在 VLC 中播放视频时,它会播放视频的第二部分。

public void JoiningVideo()
{
    string j = @"D:/test2";

    string outputpath = @"D:/test3/beforeEventab1.wmv";
    DirectoryInfo di = new DirectoryInfo(j);
    FileStream fs;
    fs = new FileStream(outputpath, FileMode.Append);
    foreach (FileInfo fi in di.GetFiles(@"*.wmv"))
    {
        byte[] bytesource = System.IO.File.ReadAllBytes(fi.FullName);
        fs.Write(bytesource, 0, bytesource.Length);
    }
    fs.Close();
}
4

1 回答 1

0

您知道每个视频文件都以“标题”开头吗?

文件的这一部分包含有关长度等的信息。
如果您想加入单独的视频文件,您必须将标题合并到一个包含有关两个(加入)部分的信息的新标题中,并确保两个视频都适合每个其他。(*)
否则视频不是有效文件。

由于 WMP 和 VLC 的解码器不同,一个识别第一个文件,另一个识别第二个文件。
你可以很幸运,这些程序甚至播放了这个“损坏”的文件!;)

 

只需向搜索引擎询问merge wmv适合您的解决方案!

(*)
合并他们需要的两个视频

  • 相同的格式(例如分辨率、帧率、比特率)
    如果这不适用,则必须至少转换其中一个以匹配另一个视频
  • 视频必须“粘合”在一起,将一个数据附加到另一个是不够的。
    每个视频都以标题开头。必须更改此标头以包含有关新(加入)视频的信息。
    也不能简单地附加原始图像数据。每张图片都像是一块拼图,适合视频中的下一张图片。过渡就像一个必须创建的新拼图。甚至可能需要更改/重新排序整个第二个文件以获得有效的过渡。

我不是专家,但至少我可以告诉你,这个过程对于每种类型的视频(MPEG、WMV、..)都是不同的。最好的方法是为此目的使用现有的库。

于 2013-02-06T06:48:08.617 回答