LINUX.ORG.RU

Избранные сообщения Blastbit

ffmpeg ffserver(avserver) стриминг видео в rtsp

Форум — Multimedia

Имеется kubuntu 12.10 Пытаюсь стримить видео с вебкамеры в флеш и RTSP. Конфиги взяты с хабра и подправлены (http://habrahabr.ru/post/78677/): ==============================================================

Port 8099

RTSPPort 5454

BindAddress 0.0.0.0

MaxClients 100

MaxBandwidth 20000

NoDaemon

# Фид, надо запомнить feed.ffm, он нам потребуется при запуске

ffmpeg

<Feed feed.ffm>

File /tmp/feed.ffm

FileMaxSize 3M

Launch avconv -s 352x288 -r 20 -f video4linux2 -i /dev/video0 -pix_fmt yuv420p

</Feed>

<Stream test.flv>

# Ранее объявленный фид

Feed feed.ffm

Format flv

VideoCodec mjpeg

VideoFrameRate 25

VideoBufferSize 80000

VideoBitRate 200

# Качество видео от 1 до 31, 1 == отлично 31 == фи!

VideoQMin 1

VideoQMax 5

# Разрешение, везде должно быть одинаково!

VideoSize 640x480

PreRoll 1

Noaudio

</Stream>

# Флешка test.swf для просмотра трансляции

<Stream test.swf>

Feed feed.ffm

# Будет запускаться в Adobe Flash Player

Format swf

VideoCodec mjpeg

VideoFrameRate 25

VideoBufferSize 50000

VideoBitRate 100

VideoQMin 1

VideoQMax 5

VideoSize 640x480

PreRoll 0

Noaudio

</Stream>

# RTSP

<Stream test.rtsp>

Feed feed.ffm

Format rtp

VideoCodec libx264

VideoFrameRate 20

VideoBufferSize 2000

VideoBitRate 800

VideoQMin 1

VideoQMax 31

# Разрешение, везде должно быть одинаково!

VideoSize 640x480

Noaudio

</Stream> ============================================================

Долго мучился с параметрами, домучился до того, что в фиде запускается камера(видно по индикации светодиода). Но при попытке подключения любым из плееров(vlc, gst-launch, avplay) идет ожидание и видео нет(но ошибок не показывает). При заходе на страницу http://localhost:8090/test.swf только загрузка, ничего нет.

так собственно кто-нибудь может помочь разобраться в чем проблема?

А задача вобщем то в том, что бы стримить видео с вебкамеры(или другой usb) в rtsp потоке. Что только не пробовал.

VLC Стримит, но есть задержка в секунды 2, изменение разних параметров не помогло, вот строка которой запускаю, если вдруг тут есть варианты:

cvlc v4l2:///dev/video0:v4l2-fps=25:v4l2-caching=1 --sout '#transcode{vcodec=h264,venc=x264{tune=zerolatency,preset=ultrafast},vb=300,scale=1,width=320,height=200,fps=25,noaudio}:rtp{url=192.168.1.13,port=7777,sdp=rtsp://192.168.1.13:7777/stream}' --rtsp-host=192.168.1.13-caching=1 --dshow-caching=0 -I dummy

GStreamer тоже пробовал, собирал тестовый пример ихнего gst-rtsp-server, но там какието проблемы с rtsp_media_factory, я ставил такие параметры: gst_rtsp_media_factory_set_launch (factory, "( videotestsrc is-live=1 ! x264enc ! rtph264pay name=pay0 pt=96 )"); да и не только такие, много что перепробовал, всё время выдает ошибки при запросе на подобии этой(чаще всего это):

(GstRtspServer_test:10077): GLib-GObject-CRITICAL **: g_object_ref: assertion `G_IS_OBJECT (object)' failed

** (GstRtspServer_test:10077): CRITICAL **: gst_rtsp_media_factory_get_auth: assertion `GST_IS_RTSP_MEDIA_FACTORY (factory)' failed

Также смотрел на livemedia, но гугление на данную тему не особо что показал(если есть нормальные примеры как это дело можно провернуть, то буду признателен).

Вобщем бьюсь не первые сутки, если есть мысли, поделитесь пожалуйста.

P.S./извиняюсь за объемный пост

UPD: по ffmpeg Если запустить feed отдельным процессом (вместо Launch ...) строкой avconv -s 640x480 -r 20 -f video4linux2 -i /dev/video0 -pix_fmt yuv420p -f h264 http://localhost:8090/feed.ffm

то в логах вот что выдает:

avconv version 0.8.6-4:0.8.6-0ubuntu0.12.04.1, Copyright (c) 2000-2013 the Libav developers built on Apr 2 2013 17:00:59 with gcc 4.6.3 [video4linux2 @ 0x8c783e0] The driver changed the time per frame from 1/20 to 1/30 [video4linux2 @ 0x8c783e0] Estimating duration from bitrate, this may be inaccurate Input #0, video4linux2, from '/dev/video0': Duration: N/A, start: 482284.519933, bitrate: 147456 kb/s Stream #0.0: Video: rawvideo, yuyv422, 640x480, 147456 kb/s, 30 tbr, 1000k tbn, 30 tbc [buffer @ 0x8c7c4c0] w:640 h:480 pixfmt:yuyv422 [avsink @ 0x8c7a420] auto-inserting filter 'auto-inserted scaler 0' between the filter 'src' and the filter 'out' [scale @ 0x8c73a40] w:640 h:480 fmt:yuyv422 -> w:640 h:480 fmt:yuv420p flags:0x4 [libx264 @ 0x8c79660] using cpu capabilities: MMX2 SSE2Fast SSSE3 FastShuffle SSE4.2 AVX [libx264 @ 0x8c79660] profile Main, level 3.0 Output #0, h264, to 'http://localhost:8090/feed.ffm': Metadata: encoder : Lavf53.21.1 Stream #0.0: Video: libx264, yuv420p, 640x480, q=-1--1, 90k tbn, 30 tbc Stream mapping: Stream #0:0 -> #0:0 (rawvideo -> libx264) Press ctrl-c to stop encoding non-strictly-monotonic PTS size= 86kB time=1.90 bitrate= 369.7kbits/s its/s [libx264 @ 0x8c79660] non-strictly-monotonic PTS Last message repeated 1 times

Application provided invalid, non monotonically increasing dts to muxer in stream 0: 333000 >= 333000 [h264 @ 0x8c78f60] Application provided invalid, non monotonically increasing dts to muxer in stream 0: 342000 >= 342000

Application provided invalid, non monotonically increasing dts to muxer in stream 0: 351000 >= 351000 non-strictly-monotonic PTS size= 277kB time=5.93 bitrate= 382.0kbits/s [libx264 @ 0x8c79660] non-strictly-monotonic PTS Last message repeated 1 times

И так далее.

Если убрать -f h264 и запускать так:

avconv -s 640x480 -r 20 -f video4linux2 -i /dev/video0 -pix_fmt yuv420p http://localhost:8090/feed.ffm

то логи не выдают предупреждений, но видео все равно нет, но запуск через avplay командой avplay rtsp://localhost:5454/test.rtsp выдает вот что

avplay version 0.8.6-4:0.8.6-0ubuntu0.12.04.1, Copyright (c) 2003-2013 the Libav developers built on Apr 2 2013 17:00:59 with gcc 4.6.3 [rtsp @ 0xafd00480] UDP timeout, retrying with TCP

тут виснет и после остановки выдает:

^C[rtsp @ 0xafd00480] Could not find codec parameters (Video: h264) [rtsp @ 0xafd00480] Estimating duration from bitrate, this may be inaccurate rtsp://localhost:5454/test.rtsp: could not find codec parameters

 , , , ,

Blastbit
()