【发布时间】:2021-06-18 19:33:49
【问题描述】:
我正在使用 ffmpeg 工具使用以下代码将视频从 wmv 转换为 mp4 格式 -
string outputPath = args[1].ToString();
string[] files = Directory.GetFiles(inputPath);
Console.WriteLine(files.Length);
foreach (var item in files)
{
itemBkp = item;
Process proc = new Process();
proc.StartInfo.FileName = @"e:\test\ffmpeg.exe";
string filename= Path.GetFileName(item);
proc.StartInfo.Arguments= " -i " + item + " " + outputPath + filename.Split('.')[0] + ".mp4";
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.RedirectStandardInput = true;
proc.StartInfo.RedirectStandardOutput = true;
proc.Start();
proc.WaitForExit();
}
它适用于高达 20mb 的视频,但是当我尝试超过 70mb 的视频时,它会引发以下错误 -
FFmpeg 版本 SVN-r6179,版权所有 (c) 2000-2004 Fabrice Bellard 配置:--extra-cflags=-I/static/include --extra-ldflags=-L/static/lib --enable-memalign- hack --enable-mp3lame --enable-xvid --enable-a52 --enable-libogg --enable-vorbis --enable-faac --enable-faad --enable-x264 --enable-pp --enable- amr_wb --enable-amr_nb --enable-avisynth --enable-gpl libavutil 版本:49.0.0 libavcodec 版本:51.13.0 libavformat 版本:50.5.0 构建于 2006 年 9 月 5 日 22:41:30,gcc:3.4.5 (mingw special) E:\videos\Playful: I/O error occurred 通常这意味着输入文件被截断和/或损坏。
转换的视频大小有限制吗?
【问题讨论】:
-
无法在没有来源的情况下追踪您的问题。我试图绑定从 MINGW-64 / g++ 中的源代码构建的库。在源代码级别上,它似乎是内存管理封装失败的示例,系统地要求分段错误。在我的情况下,多次对输入流执行重置,随后的读取将崩溃。发现,姊妹项目“libav”是稳定的。可能是他们的 avconv.exe 是一个选项。
-
FFmpeg version SVN-r6179, Copyright (c) 2000-2004这可能是我在这个网站上见过的最古老的 ffmpeg 了,我也看过成千上万的 ffmpeg 问题。它甚至比一些在这里提问的人还要老。在做任何其他事情之前请upgrade。 -
@SamGinrich Libav 已经死了,但我想这可以被认为是“稳定的”,因为它永远不会改变。
-
:) 所以我们有新旧版本的崩溃软件,抱歉。