Jump to content
Калькуляторы

ffmpeg странности

Работал себе пару лет скрипт, выдирающий кадры из потоков мультикаста. Успешно все выдергивал. И вот некоторое время назад на группе каналов у него это перестало получаться. Это каналы "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

 

и на этом ждет бесконечно неизвестно чего.

Share this post


Link to post
Share on other sites

Буфера сокетов в системе увеличивали?

Может ещё есть какой то ключ буфер увеличить в ффмпег.

Share this post


Link to post
Share on other sites

Буфера сокетов в системе увеличивали?

Может ещё есть какой то ключ буфер увеличить в ффмпег.

 

На других каналах, даже 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 by grfmaniak

Share this post


Link to post
Share on other sites

strace натравите, что бы проверить весит ли он на каком то сисколл или читает постоянно с сокета

если висит то добавте опцию timeout в udp, проверите будет ли он отваливатся по нему

брать нужно релизовые версии ffmpeg а не что попало

собирать или с поддержкой треидов или без на неблокирующих IO, для udp там два разных сценария отработки чтения

Share this post


Link to post
Share on other sites

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 с лишним каналов успешно открывает.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this