如何转换视频在多个比特率使用asp.net

本文关键字:比特率 net asp 何转换 转换 视频 | 更新日期: 2023-09-27 18:16:39

我想用不同的比特率播放一个视频。就像我上传了一个1080P分辨率的视频,我想播放720P、480P、360P、240P、144P等分辨率的视频。我想用c#在asp.net中实现这个解决方案。

像youtube一样提供观看不同分辨率视频的功能。

请帮我解决这个问题。

我尝试了以下代码,但不工作:

using Softpae.Media;
namespace ConsoleTest
{
class Program
{
    static void Main(string[] args)
    {
        Job2Convert myJob = new Job2Convert();
        MediaServer ms = new MediaServer();
        myJob.pszSrcFile = "E:''EhabVideoLibrary''videos''sinbad.mkv";
        myJob.pszDstFile = "E:''EhabVideoLibrary''videos''sinbad.mp4";
        myJob.pszDstFormat = "mp4";
        myJob.pszAudioCodec = "aac";
        myJob.nAudioChannels = 2;
        myJob.nAudioBitrate = -1;
        myJob.nAudioRate = -1;
        myJob.pszVideoCodec = "h264";
        myJob.nVideoBitrate = -1;
        myJob.nVideoFrameRate = -1;
        myJob.nVideoFrameWidth = -1;
        myJob.nVideoFrameHeight = -1;   
        bool ret = ms.ConvertFile(myJob);            
    }
}

}

如何转换视频在多个比特率使用asp.net

可以使用FFmpeg项目的FFplay。有了FFmpeg,几乎所有编解码器都可以按照你想要的分辨率进行编码和转码。在这个线程中使用的是一个使用c#的命令行应用程序。

我从来没有尝试过,但是也有像这样使用FFmpeg为。net提供的库:

  • ffmpegdotnet.codeplex.com
  • intuitive.sk/fflib

成功与它!

下面是一个使用ffmpeg的示例代码(我在Win7 VM下测试了它):

using System;
    namespace ConsoleApplication_FFmpegDemo
    {
        class Program
        {
            static void Main(string[] args)
            {
                string inputVideo = @"C:'Users'Public'Videos'Sample Videos'Wildlife.wmv";
                string outputVideo = @"C:'Users'Public'Videos'Sample Videos'Wildlife.mp4";
                string ffmpegArg = string.Format("-i '"{0}'" -vf scale=320:240 '"{1}'"", inputVideo, outputVideo);
                string ffmpegPath = @"C:'Portable'ffmpeg-win32-static'bin'ffmpeg.exe";
                FFmpegTask ffmpegTask = new FFmpegTask(ffmpegPath, ffmpegArg);
                ffmpegTask.Start();
                Console.ReadLine();
            }
        }
    }

FFmpegTask .

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;
using System.IO;
namespace ConsoleApplication_FFmpegDemo
{
    public class FFmpegTask
    {
        public Process process = new Process();
        public FFmpegTask(string ffmpegPath, string arguments)
        {
            process.StartInfo.FileName = ffmpegPath;
            process.StartInfo.Arguments = arguments;
            process.StartInfo.RedirectStandardOutput = true;
            process.StartInfo.CreateNoWindow = false;
            process.StartInfo.UseShellExecute = false;
        }
        public bool Start()
        {
            return process.Start();
        }
    }
}