使用C#将视频从Mp4、avi格式转换为wmv格式

5

我使用了微软表达编码器来合并两个视频,效果很好。但问题是当我尝试合并除了'wmv'之外的其他视频时,它会抛出文件不支持的异常。

我在谷歌上搜索了一下,但是没有找到解决方案。

    private void button1_Click(object sender, EventArgs e)
    {

        MediaItem mediaItem1 = null;
        Job job = new Job();
        job.EncodeProgress += new EventHandler<EncodeProgressEventArgs>(job_EncodeProgress);
        int count = 0;
        //video url contains all urls of videos
        foreach (string x in VideosUrls)
        {
            if (count == 0)
            {
                mediaItem1 = new MediaItem(x);

                job.MediaItems.Add(mediaItem1);
            }
            else
            {
                mediaItem1.Sources.Add(new Source(x));
            }
            count++;
        }

        job.OutputDirectory = @"C://videoOutput";
        job.Encode();
    }

是否有一种使用AForge.NETMicrosoft Expression Encoder的方式,可以在将任何'mp4'视频与无音频或质量损失附加之前,在程序中将其转换为'wmv'

非常感谢您阅读所有问题:)


没有尝试过编码,但是内嵌播放器和32/64位编解码器不匹配可能会有问题。也许可以尝试构建为x86 32位或安装像K-Lite这样的编解码器包。 - WhoIsRich
1个回答

1
我会检查您使用的Windows Media编码器版本。
“Express Edition”显然“不支持H.264编码”。
事实上,您需要从MPEG LA获得MP4编码许可证。这可能是为什么只有Expression Encoder的付费版本支持MPEG 4的原因。
从一个视频/音频格式转换到另一个格式时,逻辑上会损失质量。WMV文件通常包含以VC-1编码的视频和以WMA编码的音频。但是,.mp4文件通常包含h.264视频和AC-3音频。
因此,您的最终.wmv文件将需要仅包含VC-1中编码的视频,这意味着需要解码h.264视频并将其编码为VC-1。这意味着会有质量损失。
VideoLan可以告诉您.mp4和.wmv文件内部使用的编解码器。请参见this answer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接