Я хочу скопировать кучу источников SD из mpegts, транспортируемых с помощью RTP, в локальные файлы. (VBR mpeg2video, mp2 audio). Он отлично работает для одного источника многоадресной рассылки с помощью следующей команды:
ffmpeg -i rtp://@IP1:PORT -c copy video1.mpg
но когда я запустил второй экземпляр ffmpeg с помощью следующей команды:
ffmpeg -i rtp://@IP2:PORT -c copy video2.mpg
то я получил ошибки от обоих экземпляров FFmpeg («RTP: отбрасывание старого пакета, полученного слишком поздно») и в обоих файлах (video1.mpg и video2.mpg) записанное видео из второго источника (rtp: / / @ IP2: ПОРТ).
Эта проблема возникает только в Linux (я проверял Ubuntu 14.04 - 16.04). У меня нет проблем с Windows и могу корректно перекодировать видео параллельно из файлов. В Ubuntu даже два экземпляра ffplay, настроенные на разные источники, воспроизводят один и тот же контент (из источника, который был открыт последним). Я пробовал воспроизвести с помощью VLC, и такой проблемы нет.
Я могу решить эту проблему, используя FFmpeg с параметром -f:
ffmpeg -f mpegts -i rtp: // @ IP1: PORT -c copy video1.mpg
и
ffmpeg -f mpegts -i rtp: // @ IP2: PORT -c copy video2.mpg, но затем получаю следующие ошибки: "[mpegts @ 0x306e240] Пакет PES несоответствие размера " и получите оба файла (video1.mpg и video2.mpg) с артефактами и эффектами замораживания. Эта проблема возникает в обеих операционных системах.
Как я могу записывать | перекодировать видео из нескольких потоков RTP с помощью FFmpeg одновременно в Ubuntu без ошибок и артефактов?