Этот вопрос связан с моим предыдущим вопросом: Converting raw frames into webm live streamFFmpeg выход pipeing именованным окно труба
Я хочу трубы видео в FFmpeg и читать его обратно через другую трубу, но я не могу трубу выхода ffmpeg.exe
к именованному каналу на окнах.
Мое определение труб в C#:
NamedPipeServerStream p_to_ffmpeg;
NamedPipeServerStream p_from_ffmpeg;
p_to_ffmpeg = new NamedPipeServerStream("to_ffmpeg", PipeDirection.Out, 1, PipeTransmissionMode.Byte);
p_from_ffmpeg = new NamedPipeServerStream("from_ffmpeg", PipeDirection.In, 1, PipeTransmissionMode.Byte);
И тогда я начинаю ffmpeg.exe
в отдельном процессе, со следующими параметрами: -f rawvideo -vcodec rawvideo -video_size 656x492 -r 10 -pix_fmt rgb24 -i \\.\pipe\to_ffmpeg -c:v libvpx -pass 1 -f webm \\.\pipe\from_ffmpeg
ffmpeg.exe отказывается писать трубы со следующим ошибка: File '\\.\pipe\from_ffmpeg' already exists. Overwrite ? [y/N]
Когда я заменить «выходную трубу» с именем файла, он работает как шарм: -f rawvideo -vcodec rawvideo -video_size 656x492 -r 10 -pix_fmt rgb24 -i \\.\pipe\to_ffmpeg -c:v libvpx -pass 1 -f webm output.webm
Как получить ffmpeg для записи в именованный канал в Windows?
Edit: Когда я заставляю писать трубы с -y
вариант FFmpeg, я получаю следующее сообщение об ошибке: Could not write header for output file #0 (incorrect codec parameters ?): Error number -32 occurred
уронить '1' -pass параметр, потому что вы» не делайте двухпроходную кодировку и отправляйте полный консольный вывод, пожалуйста. – aergistal
@aergistal: Спасибо за ваш комментарий. Кажется, я исправил проблему. Я должен был указать размер буфера трубы. Зачем мне бросать '-pass 1'? Я думал, что этот вариант будет специально гарантировать, что libvpx выполняет только один проход. Теперь я столкнулся с проблемой, что ffmpeg перестает обрабатывать. Но я не могу исключить, что это не проблема с принимающей трубкой, потому что блок блокирует функцию чтения. – Lucas
@aergistal: console output: 'Input # 0, rawvideo, from '\\. \ Pipe \ to_ffmpeg': Продолжительность: N/A, начало: 0.000000, bitrate: 77460 kb/s Stream # 0: 0: Video : rawvideo (RGB [24]/0x18424752), rgb24, 656x492, 77460 k b/s, 10 tbr, 10 tbn, 10 tbc [libvpx @ 03a9ff80] v1.4.0 Выход # 0, webm, to '\\ . \ pipe \ from_ffmpeg ': Метаданные: encoder: Lavf56.40.101 Поток № 0: 0: Видео: vp8 (libvpx), yuv420p, 656x492, q = -1-1-1, pass 1, 200 kb/ s , 10 fps, 1k tbn, 10 tbc Метаданные: encoder: Lavc56.58.100 libvpx Отображение потока: Поток # 0: 0 -> # 0: 0 (rawvideo (native) -> vp8 (libvpx)) ' – Lucas