NReco.VideoConverter.ConvertLiveMedia - PullRequest
       40

NReco.VideoConverter.ConvertLiveMedia

0 голосов
/ 03 декабря 2018

Я получаю исключение при попытке записать необработанное изображение в ConvertLiveMedia:

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

Система.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();
}

1 Ответ

0 голосов
/ 03 декабря 2018

System.IO.IOException: «Канал был закрыт.»

Это исключение появляется, потому что ConvertLiveMedia перенаправляет stdin / stdout, но процесс ffmpeg был внезапно остановлен, скорее всего из-за неправильногоОпции или входные данные.

В вашем случае причина в «mp4»: этот формат вывода нельзя использовать с живыми потоками, ffmpeg может записать его только в локальный файл.Вы можете использовать эту перегрузку ConvertMedia для этой цели (если вы предоставляете ввод с помощью метода "Write", вы можете передать null для inputStream аргумента.

...