Я хочу получить данные громкости в формате 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
FFMpegCore.Exceptions.FFMpegException: «ffmpeg завершился с ненулевым кодом выхода» ⇐ C#
Место общения программистов C#
1728963891
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. Если кто-нибудь может указать мне правильное направление или предложить альтернативное решение, я был бы очень признателен.
[b]Обновить[/b]
Я внес изменение в метод 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)'
Подробнее здесь: [url]https://stackoverflow.com/questions/79087649/ffmpegcore-exceptions-ffmpegexception-ffmpeg-exited-with-non-zero-exit-code[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия