У меня есть веб -приложение, где мне нужно создавать миниатюры или изображения, снимая первый кадр видео. Уже есть много примеров этого, но я не могу найти ничего, что решает мою проблему. Я использую это, но я нахожу это сложным, потому что мне нужно прочитать видео и написать результат, используя потоки напрямую. Это мой код: < /p>
Код: Выделить всё
var videoStream = file.OpenReadStream();
var outputStream = new MemoryStream();
FFMpegArguments
.FromPipeInput(new StreamPipeSource(videoStream))
.OutputToPipe(new StreamPipeSink(outputStream), options => options
.WithFrameOutputCount(1)
.ForceFormat("jpeg")
)
.ProcessSynchronously();
, что приводит меня к ошибке: труба сломана. Согласно здесь, ошибка связана с тем, что выходной формат не может быть известен. Только добавив опцию .forceformat ("Opus") , исчезает ошибка, но я понимаю, что формат Opus предназначен для аудио. Может ли любой эксперт помочь мне найти решение или рассказать мне, как мне это сделать? Спасибо большое заранее. Полем Я изменил свой код, и теперь это: < /p>
Код: Выделить всё
var videoStream = file.OpenReadStream();
var outputStream = new MemoryStream();
FFMpegArguments
.FromPipeInput(new StreamPipeSource(videoStream))
.OutputToPipe(new StreamPipeSink(outputStream), opt => opt
.Seek(TimeSpan.Zero)
.Resize(650, 390)
.WithFrameOutputCount(1)
.WithVideoCodec(VideoCodec.Png)
.ForceFormat("image2pipe")
)
.ProcessSynchronously();
Аргументы, указанные в ответе ffmpeg -i --ss 00: 00: 3 -s 650x390 -vframes 1 -c: v png -f image2pipe - очень похожи к тем, которые сгенерированы моим кодом -i "\\. \ pipe \ ffmpegcore_9dd64" -ss 00: 00: 00.000 -s 650x390 -vframes 1 -c: v png -f Image2pipe "\\. \ fupmpegcore_997f4" -y < /code>, и даже в этом случае ошибки сохраняются.
< /p>
Подробнее здесь:
https://stackoverflow.com/questions/776 ... ffmpegcore