Tag: ffmpeg

C# – 提取图像时解析ffmpeg标准输出

我通过从我的c#代码启动ffmpeg进程来提取单个video帧。 默认行为是将这些映像写入磁盘。 但是为了加快处理速度,我想重定向ffmpeg标准输出以接收流并在我的程序中进一步处理它。 我使用类似这样的参数: -i \”” + Filename + “\” -vf \”scale=640:-1\” -an -vframes 100 -r 1 -f image2 – 这会将字节流重定向到标准输出,我可以使用process.StartInfo.RedirectStandardOutput = true重定向到我的程序。 这可能适用于电影流,因为我只有一个单输出,但上面的调用将产生10个单个图像(当写入硬盘时),我如何解析标准输出的字节流并将其拆分为单个文件?

NuGet:AForge.Video.FFMPEG在哪里

美好的一天。 我想在我的项目中使用AForge.Video.FFMPEG 。 所以,我试着在NuGet上找到它。 但我在这里找不到它。 所以,它存在: https : //code.google.com/archive/p/aforge/downloads 但是,如果我想从nuget自动恢复它(在git clone和rebuild之后),在这种情况下是不允许的? 只在项目中存储此dll并始终推送/获取它?

流式video(使用FFmpeg AutoGen的C#)发送多个数据请求

我写了一个video生成器,以h264格式(mp4)对video进行修改。 当我从我的azure服务流式传输video时,我看到以下网络流量: 我正在使用的AVCodecContext布局如下: AVCodec* videoCodec = ffmpeg.avcodec_find_encoder(AVCodecID.AV_CODEC_ID_H264) AVCodecContext* videoCodecContext = ffmpeg.avcodec_alloc_context3(videoCodec); videoCodecContext->bit_rate = 400000; videoCodecContext->width = 1280; videoCodecContext->height = 720; videoCodecContext->gop_size = 12; videoCodecContext->max_b_frames = 1; videoCodecContext->pix_fmt = videoCodec->pix_fmts[0]; videoCodecContext->codec_id = videoCodec->id; videoCodecContext->codec_type = videoCodec->type; videoCodecContext->time_base = new AVRational { num = 1, den = 30 }; ffmpeg.av_opt_set(videoCodecContext->priv_data, “preset”, “ultrafast”); 我也尝试通过AVDictionary为avformat_write_header()设置“movflags”选项,但是av_write_trailer()返回-2,导致文件没有完成写入。 我无法弄清楚如何解决这个问题。 使用Windows Movie Maker流生成的video完美无缺。 […]

跨平台C#Media API

我正在尝试在mono / .net对象中定义一个VideoFile,以便我可以调用 var file = new VideoFile(filepath); file.VideoDuration 是否有一个库(操作系统或商业)可以跨平台mono / .net工作,可以提供VideoDuration等信息。 虽然我目前唯一的做法是包装ffmpeg.exe并读取控制台输出。

C#从video文件的一部分中提取帧

使用AForge ffmpeg包装器,您可以使用VideoFileReader类从video中提取帧并将其另存为位图。 请参阅此示例: 提取.avi文件的帧 我的问题是你无法指定从何处开始阅读框架。 它始终从video文件的开头开始。 但是,如果我想提取两个小时长的video文件中的帧,该怎么办? 使用该类,您必须解析整个第一个小时的juste以获得这些帧。 有谁知道实现这一目标的方法?

关于ProcessStartInfo的ffmpeg c#asp.net帮助

我编写了使用ffmpeg在c#asp.net中转换文件的代码。 执行它时显示错误“文件名,目录名称或卷标语法不正确”但我的路径是正确的。 那么这个解决方案是什么? ProcessStartInfo info = new ProcessStartInfo(“e:\ffmpeg\bin\ffmpeg.exe”, “-i cars1.flv -same_quant intermediate1.mpg”); process.Start(); 我尝试了另一种方法,如下所示。 但这也行不通。 ProcessStartInfo info = new ProcessStartInfo(“ffmpeg.exe”, “-i cars1.flv -same_quant intermediate1.mpg”); 请帮助我使用c#asp.net中的ffmpeg将一种video文件格式转换为另一种video文件格式的示例代码。 提前致谢。

使用C#和ffmpeg将wma流转换为mp3流

是否可以实时将wma流转换为mp3流? 我尝试过做这样的事但没有运气: WebRequest request = WebRequest.Create(wmaUrl); HttpWebResponse response = (HttpWebResponse)request.GetResponse(); int block = 32768; byte[] buffer = new byte[block]; Process p = new Process(); p.StartInfo.UseShellExecute = false; p.StartInfo.ErrorDialog = false; p.StartInfo.RedirectStandardInput = true; p.StartInfo.RedirectStandardOutput = true; p.StartInfo.RedirectStandardError = true; p.StartInfo.FileName = “c:\\ffmpeg.exe”; p.StartInfo.Arguments = “-i – -y -vn -acodec libspeex -ac 1 -ar 16000 -f […]

来自C#应用程序的ffmpeg使用Process类 – 用户提示符未显示在standardError中

我正在编写一个使用c#运行ffmpeg的应用程序。 我的程序将standardError输出重定向到流,以便可以解析它以获取进度信息。 在测试期间,我发现了一个问题: 如果输出显示在命令窗口而不是被重定向,则ffmpeg将显示它的正常标题,后跟“file c:\ temp \ testfile.mpg已经存在.overrite [y]” 。 如果我单击命令窗口并按y,程序将继续对文件进行编码。 如果将StandardError重定向到我的处理程序然后打印到控制台,我会看到现在打印到控制台的命令窗口中显示的相同标题信息。 除了文件……已存在提示 。 如果我在命令窗口中单击并按y,程序将继续处理该文件。 当提示操作员提供信息时,是否存在除standardOutput或standardError之外的流,或者我是否遗漏了其他内容? public void EncodeVideoWithProgress(string filename, string arguments, BackgroundWorker worker, DoWorkEventArgs e) { Process proc = new Process(); proc.StartInfo.FileName = “ffmpeg”; proc.StartInfo.Arguments = “-i ” + ” \”” + filename + “\” ” + arguments; proc.StartInfo.UseShellExecute = false; proc.EnableRaisingEvents = true; […]

在处理大文件时,通过Windows服务运行ffmpeg.exe无法完成

我使用ffmpeg.exe将video文件转换为flv格式 。 为此,我使用Windows服务在后台运行转换过程 。 在尝试通过Windows服务 转换大文件 (我在文件大小> 14MB时经历过)时, 它会卡在启动进程的行 (即process.start(); )。 但是当我试图直接从命令提示符执行ffmpeg.exe时,它解决了任何问题。 我在windows服务中的 代码 如下: private Thread WorkerThread; protected override void OnStart(string[] args) { WorkerThread = new Thread(new ThreadStart(StartHandlingVideo)); WorkerThread.Start(); } protected override void OnStop() { WorkerThread.Abort(); } private void StartHandlingVideo() { FilArgs = string.Format(“-i {0} -ar 22050 -qscale 1 {1}”, InputFile, OutputFile); Process proc; […]

使用ffmpeg从IP Camera获取Stream并保存为jpeg(图像)文件

我如何从Ip Camera获取流,它使用RTP,流是MPEG4,我有多播地址和端口,我有ip camera的IP地址和端口号。 我无法通过http forexample(http:// ip / jpeg)到达而且我也无法通过VLC播放器访问流媒体。 例如(rtp:// ipadressofcam:port)和( rtp:// multicastaddress:port ) 那ffmpeg命令是什么? 我有Windows操作系统,我现在只用C#编写代码。 但是制作人创建了他们自己的ocx,用于观看凸轮,该插件可以在.net上工作,但我不想使用它,因为它没有太多的function,我的意思是你不能得到当前的图片或凸轮的快照,这就是为什么我必须自己动手吧。