0

尝试将原始图像写入以下内容时出现异常ConvertLiveMedia

System.IO.IOException:“Канал был закрыт。

System.IO.IOException:“通道已关闭。”

var ffMpeg = new NReco.VideoConverter.FFMpegConverter();
var frame = Bitmap.FromFile("source.jpg");
var bytes = ImageToByte(frame);

using (var fs = new FileStream("output.mp4", FileMode.Create))
{
    var mediaTask = ffMpeg.ConvertLiveMedia(Format.raw_video, fs, Format.mp4, new ConvertSettings()
    {                    
    });
    
    mediaTask.Start();

    for (int f = 0; f < frames; f++)
    {
        mediaTask.Write(bytes, 0, bytes.Length);  //exception here channel was closed
    }
    mediaTask.Stop();
}
4

1 回答 1

1

System.IO.IOException:“通道已关闭。”

出现此异常是因为 ConvertLiveMedia 重定向 stdin/stdout 但 ffmpeg 进程突然停止,很可能是因为选项或输入数据不正确。

在您的情况下,原因是“mp4”:这种输出格式不能用于实时流,ffmpeg 只能将其写入本地文件。您可以为此目的使用此 ConvertMedia 重载(如果您使用“Write”方法提供输入,则可以传递null参数inputStream

于 2018-12-03T09:25:39.377 回答