FFMpegCore.Exceptions.FFMpegException: «ffmpeg завершился с ненулевым кодом выхода»C#

Место общения программистов C#
Ответить
Anonymous
 FFMpegCore.Exceptions.FFMpegException: «ffmpeg завершился с ненулевым кодом выхода»

Сообщение 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. Если кто-нибудь может указать мне правильное направление или предложить альтернативное решение, я был бы очень признателен.
Обновить
Я внес изменение в метод StreamPipeSource(), где я скопировал загруженный файл в MemoryStream. При этом изменении создается следующее исключение FFMpegException.
FFMpegCore.Exceptions.FFMpegException: 'ffmpeg exited with non-zero exit-code (-22 - ffmpeg version 7.0.1-full_build-www.gyan.dev Copyright (c) 2000-2024 the FFmpeg developers
built with gcc 13.2.0 (Rev5, Built by MSYS2 project)
configuration: --enable-gpl --enable-version3 --enable-static --disable-w32threads --disable-autodetect --enable-fontconfig --enable-iconv --enable-gnutls --enable-libxml2 --enable-gmp --enable-bzlib --enable-lzma --enable-libsnappy --enable-zlib --enable-librist --enable-libsrt --enable-libssh --enable-libzmq --enable-avisynth --enable-libbluray --enable-libcaca --enable-sdl2 --enable-libaribb24 --enable-libaribcaption --enable-libdav1d --enable-libdavs2 --enable-libuavs3d --enable-libxevd --enable-libzvbi --enable-librav1e --enable-libsvtav1 --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs2 --enable-libxeve --enable-libxvid --enable-libaom --enable-libjxl --enable-libopenjpeg --enable-libvpx --enable-mediafoundation --enable-libass --enable-frei0r --enable-libfreetype --enable-libfribidi --enable-libharfbuzz --enable-liblensfun --enable-libvidstab --enable-libvmaf --enable-libzimg --enable-amf --enable-cuda-llvm --enable-cuvid --enable-dxva2 --enable-d3d11va --enable-d3d12va --enable-ffnvcodec --enable-libvpl --enable-nvdec --enable-nvenc --enable-vaapi --enable-libshaderc --enable-vulkan --enable-libplacebo --enable-opencl --enable-libcdio --enable-libgme --enable-libmodplug --enable-libopenmpt --enable-libopencore-amrwb --enable-libmp3lame --enable-libshine --enable-libtheora --enable-libtwolame --enable-libvo-amrwbenc --enable-libcodec2 --enable-libilbc --enable-libgsm --enable-libopencore-amrnb --enable-libopus --enable-libspeex --enable-libvorbis --enable-ladspa --enable-libbs2b --enable-libflite --enable-libmysofa --enable-librubberband --enable-libsoxr --enable-chromaprint
libavutil 59. 8.100 / 59. 8.100
libavcodec 61. 3.100 / 61. 3.100
libavformat 61. 1.100 / 61. 1.100
libavdevice 61. 1.100 / 61. 1.100
libavfilter 10. 1.100 / 10. 1.100
libswscale 8. 1.100 / 8. 1.100
libswresample 5. 1.100 / 5. 1.100
libpostproc 58. 1.100 / 58. 1.100
[in#0 @ 000001bda86c67c0] Error opening input: Invalid argument
Error opening input file \\.\pipe\FFMpegCore_c6e5c.
Error opening input files: Invalid argument)'


Подробнее здесь: https://stackoverflow.com/questions/790 ... -exit-code
Ответить

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

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

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

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

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