#.net-core #ffmpeg
Вопрос:
tl;dr
Как я могу записать заголовок flac STREAMINFO
, сгенерированный ffmpeg, в выходной поток? Я запускаю ffmpeg из программы .NET core внутри Process
потокового ввода-вывода .NET с stdin
stdout
перенаправлением/. Это приводит к ошибке
[flac @ 000002500a3a3060] не удалось переписать заголовок FLAC.
и закодированный файл flac не содержит информации о заголовке
Более подробная информация
Я использую ffmpeg для перекодирования аудиофайлов flac
в программу .NET core. Исходные и целевые данные хранятся в хранилище больших двоичных объектов Azure, поэтому я хочу использовать потоки вместо локальных файлов для перекодирования. У меня это работает, запустив ffmpeg в .NET Process
и перенаправив stdout
/ stdin
в потоки больших двоичных объектов Azure. Вот пример команды ffmpeg
ошибка уровня журнала ffmpeg -nostdin -y-i — ac 2 -ar 44100 -sample_fmt s16 -f flac —
Проблема в том, что заголовок flac не записывается. В соответствии с исходным кодом ffmpeg кодирует весь файл flac и стремится вернуться к началу файла, чтобы перезаписать информацию заголовка после кодирования. stdout
не доступен для поиска, поэтому заголовок не записывается.
Отсутствующий заголовок сбивает с толку некоторые программы, и они не могут должным образом обрабатывать flac
то, что создает моя программа. Мне нужно решение, чтобы написать этот заголовок. Возможно ли это без использования локального временного файла? Я думаю, что мне нужно написать заголовок вручную после завершения кодирования, чтобы это сработало. Спецификация flac показывает, что это заголовок фиксированного размера. Вопрос в том, как получить данные для записи в этот заголовок.