连接操作后视频无法完全播放

时间:2013-02-06 06:22:31

标签: c# winforms video

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

但是当我播放视频时,它会在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();
}

1 个答案:

答案 0 :(得分:0)

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

该文件的这一部分包含有关长度等的信息 如果要加入单独的视频文件,则必须将标题合并为包含两个(已加入)部分的信息的新标题,并确保两个视频相互适合。 (*)
否则视频不是有效文件。

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

只需向搜索引擎询问merge wmv是否适用于您的解决方案!

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

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

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