OperationCwal Опубликовано 12 января, 2012 (изменено) · Жалоба Доброго времени суток! Задача следующая. Получаем от контенагрегатора мультикаст потоки IPTV. У некоторых каналов звуковая дорожка кодирована ac3. Их, к сожалению, не переваривает используемая нами прошивка DIB-120. Но таких каналов мало по сему возникла мысль перекодировать звук на лету и стримить мультикастом. Для этого пробовал ffmpeg, для начала без перекодирования. Но обнаружил странное. Если стримить локальный файл - работает. Если в качестве входного файла указать адрес мультикаст группы, то ffmpeg повисает. Т.е. ffmpeg -y -fflags genpts -i a.avi -vcodec copy -acodec copy -f mpegts -re udp://@235.0.0.254:10000 Работает, а вот ffmpeg -fflags genpts -i udp://@235.0.0.1:15000 -vcodec copy -acodec copy -f mpegts -re udp://@235.0.0.254:10000 ffmpeg version 0.9.1, Copyright (c) 2000-2012 the FFmpeg developers built on Jan 12 2012 16:02:23 with gcc 4.5.3 configuration: --prefix=/usr --libdir=/usr/lib64 --shlibdir=/usr/lib64 --mandir=/usr/share/man --enable-shared --cc=x86_64-pc-linux-gnu-gcc --cxx=x86_64-pc-linux-gnu-g++ --ar=x86_64-pc-linux-gnu-ar --optflags='-O2 -march=native -pipe' --extra-cflags='-O2 -march=native -pipe' --extra-cxxflags='-O2 -march=native -pipe' --disable-static --enable-gpl --enable-version3 --enable-postproc --enable-avfilter --disable-stripping --disable-debug --disable-doc --disable-vaapi --disable-vdpau --disable-ffplay --enable-avconv --enable-libmp3lame --enable-libvo-aacenc --enable-libtheora --enable-libvorbis --enable-libx264 --enable-libxvid --enable-libaacplus --enable-nonfree --enable-libfaac --enable-nonfree --disable-indev=v4l --disable-indev=v4l2 --disable-indev=alsa --disable-indev=oss --disable-indev=jack --disable-outdev=alsa --disable-outdev=oss --disable-outdev=sdl --enable-libfreetype --enable-libass --enable-pthreads --disable-altivec --disable-avx --disable-vis --disable-neon --disable-iwmmxt --cpu=host --enabl libavutil 51. 32. 0 / 51. 32. 0 libavcodec 53. 42. 4 / 53. 42. 4 libavformat 53. 24. 2 / 53. 24. 2 libavdevice 53. 4. 0 / 53. 4. 0 libavfilter 2. 53. 0 / 2. 53. 0 libswscale 2. 1. 0 / 2. 1. 0 libpostproc 51. 2. 0 / 51. 2. 0 Зависает в такой позе. Вопрос - в чём ошибка? Возможно существуют другие способы перекодировать звук на лету (не трогая видеопоток), не очень требовательные к ресурсам? Да, OS Gentoo; ffmpeg 0.9.1 и 0.7.6 (обе версии одинаков не работаю) Изменено 12 января, 2012 пользователем OperationCwal Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
OperationCwal Опубликовано 12 января, 2012 · Жалоба Разобрался. Эх невнимательность... Дело было в rp_filter. Совсем из головы вылетел. Отключаем фильтр и всё работает sysctl net.ipv4.conf.all.rp_filter=0 sysctl net.ipv4.conf.default.rp_filter=0 Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
RealResident Опубликовано 12 января, 2012 · Жалоба А как сама перекодировка? Поток не раваливается? Я как-то пробовал им пережать, видео, правда -- закончилось тем, что ффмпег (факинг фэст?) сначала набирает в буферы пакеты, а потом векторной арифметикой параллельно пережимает все эти пакеты и выплевыет в сеть. В итоге vlc ещё нормально читает поток, если пребуфер побольше поставить, а dib заикаться начинает. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
MrCloud Опубликовано 13 января, 2012 · Жалоба можно пережимать только звук, важно чтоб синхронизация не слетела. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
OperationCwal Опубликовано 16 января, 2012 (изменено) · Жалоба Перекодируется хорошо. Рассинхрона пока не замечено. Транскодируется только звук, флаги следующие: -vcodec copy -acodec libmp3lame -ab 192k -ac 2 -f mpegts Битых пакетов не замечено. На входе 1080p с шестиканальным ac3 на выходе тот же 1080p но уже с двухканальным mp3. Один процесс ffmpeg'a грузит CPU на 5-7% Изменено 16 января, 2012 пользователем OperationCwal Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...