grfmaniak Posted September 17, 2015 Работал себе пару лет скрипт, выдирающий кадры из потоков мультикаста. Успешно все выдергивал. И вот некоторое время назад на группе каналов у него это перестало получаться. Это каналы "24техно","НСТ","Бойцовский клуб","24 Док". В то же время vlc эти каналы как открывал так и открывает. Что перестало нравиться ffmpeg, кто сталкивался с этим? Сравнение характеристик потоков и кодеков каналов с помощью vlc никакой разницы не выявило. Запускается так: ffmpeg -i udp://@239.192.10.160:1234 -y -f image2 -qscale 1 -t 0.001 -ss 00:00:4 -s 150*100 screen.jpg выдает: ffmpeg version N-73596-g1aab5d8 Copyright © 2000-2015 the FFmpeg developers built with gcc 4.4.5 (Debian 4.4.5-8) configuration: --disable-yasm libavutil 54. 28.100 / 54. 28.100 libavcodec 56. 47.100 / 56. 47.100 libavformat 56. 40.100 / 56. 40.100 libavdevice 56. 4.100 / 56. 4.100 libavfilter 5. 21.100 / 5. 21.100 libswscale 3. 1.101 / 3. 1.101 libswresample 1. 2.100 / 1. 2.100 Splitting the commandline. Reading option '-i' ... matched as input file with argument 'udp://@239.192.10.160:1234'. Reading option '-y' ... matched as option 'y' (overwrite output files) with argument '1'. Reading option '-f' ... matched as option 'f' (force format) with argument 'image2'. Reading option '-qscale' ... matched as option 'qscale' (use fixed quality scale (VBR)) with argument '1'. Reading option '-t' ... matched as option 't' (record or transcode "duration" seconds of audio/video) with argument '0.001'. Reading option '-ss' ... matched as option 'ss' (set the start time offset) with argument '00:00:4'. Reading option '-s' ... matched as option 's' (set frame size (WxH or abbreviation)) with argument '150*100'. Reading option '-loglevel' ... matched as option 'loglevel' (set logging level) with argument 'debug'. Reading option 'screen.jpg' ... matched as output file. Finished splitting the commandline. Parsing a group of options: global . Applying option y (overwrite output files) with argument 1. Applying option loglevel (set logging level) with argument debug. Successfully parsed a group of options. Parsing a group of options: input file udp://@239.192.10.160:1234. Successfully parsed a group of options. Opening an input file: udp://@239.192.10.160:1234. [udp @ 0x270b740] end receive buffer size reported is 131072 и на этом ждет бесконечно неизвестно чего. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Ivan_83 Posted September 17, 2015 Буфера сокетов в системе увеличивали? Может ещё есть какой то ключ буфер увеличить в ффмпег. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
grfmaniak Posted September 18, 2015 (edited) Буфера сокетов в системе увеличивали? Может ещё есть какой то ключ буфер увеличить в ффмпег. На других каналах, даже HD-качества, ему буферов хватает: Opening an input file: udp://239.192.10.1:1234. [udp @ 0x1cd67e0] end receive buffer size reported is 131072 [mpegts @ 0x1cd7360] Format mpegts probed with size=2048 and score=100 [mpegts @ 0x1cd7360] stream=0 stream_type=2 pid=65 prog_reg_desc= [mpegts @ 0x1cd7360] stream=1 stream_type=4 pid=66 prog_reg_desc= [mpegts @ 0x1cd7360] Before avformat_find_stream_info() pos: 0 bytes read:42112 seeks:0 [mpeg2video @ 0x1ceb5e0] Invalid frame dimensions 0x0. Last message repeated 11 times [mpegts @ 0x1cd7360] max_analyze_duration 5000000 reached at 5016000 microseconds [mpegts @ 0x1cd7360] After avformat_find_stream_info() pos: 2822444 bytes read:2822820 seeks:0 frames:342 Input #0, mpegts, from 'udp://239.192.10.1:1234': Duration: N/A, start: 46429.825467, bitrate: N/A Program 11 Metadata: service_name : ZVEZDA +7 service_provider: GAZPROM SS Stream #0:0[0x65], 131, 1/90000: Video: mpeg2video (Main), 1 reference frame ([2][0][0][0] / 0x0002), yuv420p(tv, left), 720x576 [sAR 16:15 DAR 4:3], 1/50, max. 15000 kb/s, 25 fps, 25 tbr, 90k tbn, 50 tbc Stream #0:1[0x66](rus), 211, 1/90000: Audio: mp2 ([4][0][0][0] / 0x0004), 48000 Hz, stereo, s16p, 192 kb/s Program 12 Metadata: service_name : ZVEZDA +2 service_provider: GAZPROM SS Program 13 и далее все успешно до снятия скриншота Edited September 18, 2015 by grfmaniak Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
paradox_ Posted September 18, 2015 strace натравите, что бы проверить весит ли он на каком то сисколл или читает постоянно с сокета если висит то добавте опцию timeout в udp, проверите будет ли он отваливатся по нему брать нужно релизовые версии ffmpeg а не что попало собирать или с поддержкой треидов или без на неблокирующих IO, для udp там два разных сценария отработки чтения Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
grfmaniak Posted September 18, 2015 strace натравите, что бы проверить весит ли он на каком то сисколл или читает постоянно с сокета если висит то добавте опцию timeout в udp, проверите будет ли он отваливатся по нему брать нужно релизовые версии ffmpeg а не что попало собирать или с поддержкой треидов или без на неблокирующих IO, для udp там два разных сценария отработки чтения Использовалась версия из репозиториев дебиана. Она и начала тупить, после того как эти несколько каналов сменили ТП на спутниках. Обновили до релизной на тот момент, результат такой же: /usr/bin/ffmpeg -i udp://239.192.10.160:1234 -y -f image2 -qscale 1 -t 0.001 -ss 00:00:4 -loglevel debug screen.jpg ffmpeg version 0.7.17, Copyright © 2000-2015 the FFmpeg developers built on Mar 12 2015 07:12:27 with gcc 4.4.5 configuration: --enable-libdc1394 --prefix=/usr --extra-cflags='-Wall -g ' --cc='ccache cc' --enable-shared --enable-libmp3lame --enable-gpl --enable-libvorbis --enable-pthreads --enable-libfaac --enable-libxvid --enable-postproc --enable-x11grab --enable-libgsm --enable-libtheora --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libx264 --enable-libspeex --enable-nonfree --disable-stripping --enable-avfilter --enable-libdirac --disable-decoder=libdirac --enable-libfreetype --enable-libschroedinger --disable-encoder=libschroedinger --enable-version3 --enable-libopenjpeg --enable-libvpx --enable-librtmp --extra-libs=-lgcrypt --disable-altivec --disable-armv5te --disable-armv6 --disable-vis libavutil 50. 43. 0 / 50. 43. 0 libavcodec 52.123. 0 / 52.123. 0 libavformat 52.111. 0 / 52.111. 0 libavdevice 52. 5. 0 / 52. 5. 0 libavfilter 1. 80. 0 / 1. 80. 0 libswscale 0. 14. 1 / 0. 14. 1 libpostproc 51. 2. 0 / 51. 2. 0 Потом собрали самый свежий вариант - один фиг толку нет. Все остальные 90 с лишним каналов успешно открывает. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
paradox_ Posted September 18, 2015 пробуйте не loglevel не debug а trace Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...