System.IO.IOException: ошибка канала сломана с библиотекой FFMpegCoreC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 System.IO.IOException: ошибка канала сломана с библиотекой FFMpegCore

Сообщение Anonymous »

Я хочу получить данные громкости в формате JSON из FFmpeg (с использованием FFMpegCore 5.1.0). Это код, который у меня сейчас есть:

Код: Выделить всё

await FFMpegArguments
.FromPipeInput(new StreamPipeSource(fileStream.OpenReadStream()))
.OutputToPipe(new StreamPipeSink(outputStream), options => options.WithCustomArgument("-af loudnorm=print_format=json"))
.ProcessAsynchronously();
Это исключение, похожее на старую проблему на GitHub.

Код: Выделить всё

System.IO.IOException: 'Pipe is broken.'

This exception was originally thrown at this call stack:
System.IO.Pipes.PipeStream.PipeValueTaskSource.GetResult(short)
System.IO.Pipes.PipeStream.PipeValueTaskSource.System.Threading.Tasks.Sources.IValueTaskSource.GetResult(short)
System.IO.Stream.CopyToAsync.__Core|27_0(System.IO.Stream, System.IO.Stream, int, System.Threading.CancellationToken) in Stream.cs
FFMpegCore.Arguments.InputPipeArgument.ProcessDataAsync(System.Threading.CancellationToken)
FFMpegCore.Arguments.PipeArgument.During(System.Threading.CancellationToken)
FFMpegCore.FFMpegArguments.During(System.Threading.CancellationToken)
FFMpegCore.FFMpegArgumentProcessor.Process(Instances.ProcessArguments, System.Threading.CancellationTokenSource)
FFMpegCore.FFMpegArgumentProcessor.ProcessAsynchronously(bool, FFMpegCore.FFOptions)
Я пытаюсь воспроизвести следующую команду FFmpeg и вывод JSON:

Код: Выделить всё

ffmpeg -i "file.flac" -af loudnorm=print_format=json -f null -

Код: Выделить всё

{
"input_i" : "-21.87",
"input_tp" : "-7.13",
"input_lra" : "5.00",
"input_thresh" : "-32.04",
"output_i" : "-24.76",
"output_tp" : "-10.36",
"output_lra" : "4.10",
"output_thresh" : "-34.84",
"normalization_type" : "dynamic",
"target_offset" : "0.76"
}
Если я добавлю .ForceFormat("null") к параметрам OutputToPipe, я не получаю исключение, но когда я читаю выходной поток, он возвращает пустая строка. Я знаю, что в упомянутой проблеме упоминался способ получить свойство FFMpegErrorOutput, но я не знаю, как это можно сделать. Мне не удалось найти пример вывода потока в формате JSON. Если кто-нибудь может указать мне правильное направление или предложить альтернативное решение, я был бы очень признателен.


Подробнее здесь: https://stackoverflow.com/questions/790 ... re-library
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»