Angel2S2
@Angel2S2
пингвинёнок

Как организовать стриминг видео с камеры (rtsp/mjpeg) на сайт (mms/wmv1)?

Приветствую, коллеги.

Есть камера D-Link DCS-2230, которая отдает поток rtsp со звуком. Нужно стримить его на сайт, который на битриксе с плагином Windows Media Player.

avprobe говорит, что форматы потока такие:
Stream #0.0: Video: mjpeg, 1k tbr, 90k tbn, 90k tbc
Stream #0.1: Audio: pcm_mulaw, 8000 Hz, 1 channels, s16, 64 kb/s


На сайт (плагину) отдавать, желательно, видео в WMV1 и аудио в mpga по mms.

Сейчас пробую побороть avconv + avserver, но пока не очень успешно.

Пока гоняю такую конфигурацию (тест):
/etc/avserver.conf
Port 8080
BindAddress 0.0.0.0
MaxClients 200
MaxBandwidth 20000
CustomLog /var/log/avserver.log

<Feed feed1.ffm>
    File /tmp/feed1.ffm
    FileMaxSize 3M
    ACL allow 127.0.0.1
    ACL allow 10.1.129.18
    ACL allow 10.1.1.131
</Feed>
<Stream test1.mpg>
    Feed feed1.ffm
    Format mpeg
    AudioBitRate 128
    AudioChannels 1
    AudioSampleRate 16000
    VideoSize hd720
    VideoQMin 1
    VideoQMax 5
    Preroll 2
</Stream>


# avserver && avconv -f rtsp -i rtsp://10.1.1.36:554/live1.sdp \
 -acodec copy -vcodec copy http://10.1.1.131:8080/feed1.ffm

Input #0, rtsp, from 'rtsp://10.1.1.36:554/live1.sdp':
  Metadata:
    title           : RTSP/RTP stream 1 from cab253
    comment         : live1.sdp with v2.0
  Duration: N/A, start: 0.000000, bitrate: N/A
    Stream #0.0: Video: mjpeg, 15k tbr, 90k tbn, 90k tbc
    Stream #0.1: Audio: pcm_mulaw, 8000 Hz, 1 channels, s16, 64 kb/s
Output #0, ffm, to 'http://10.1.1.131:8080/feed1.ffm':
  Metadata:
    title           : RTSP/RTP stream 1 from cab253
    comment         : live1.sdp with v2.0
    encoder         : Lavf53.21.1
    Stream #0.0: Audio: pcm_mulaw, 8000 Hz, 1 channels, 64 kb/s
Stream mapping:
  Stream #0:1 -> #0:0 (copy)
Press ctrl-c to stop encoding
^Csize=     240kB time=29.31 bitrate=  67.1kbits/s
video:0kB audio:229kB global headers:0kB muxing overhead 4.803493%

Как видно стриминг пошел... Но на выходе пустота... avconv ругается, что mjpeg не поддерживается
[mjpeg @ 0x1061be0] Found EOI before any SOF, ignoring
[mjpeg @ 0x1061be0] No JPEG data found in image
[mjpeg @ 0x1061be0] mjpeg: unsupported coding type (ca)
[mjpeg @ 0x1061be0] [IMGUTILS @ 0x7fff17eef1b0] Picture size 46022x42308 is invalid

так и не понял... Как эту поддержку реализовать?

Пробовал так же через поток mpeg4, то же самое... Ругани нет, но на выходе пустота.
Stream #0.0: Video: mpeg4 (Simple Profile), yuv420p, 480x270 [PAR 1:1 DAR 16:9], 1k tbr, 90k tbn, 30k tbc
Stream #0.1: Audio: pcm_mulaw, 8000 Hz, 1 channels, s16, 64 kb/s


Для проверки со своего компа пытаюсь смотреть поток через VLC, просто пустой экран... Если же VLC подключаюсь к камере, то картинка есть.

Чем можно реализовать описанную выше схему? Очень желательно на OpenSource, без java и xserver (vlc стримит, но он требует иксов).

Так и не понял, может ли avconv в названных форматах принимать (rtsp/mjpeg)/отдавать (mms/wmv1) потоки?
  • Вопрос задан
  • 7719 просмотров
Пригласить эксперта
Ответы на вопрос 2
kenny_opennix
@kenny_opennix
Angel2S2
@Angel2S2 Автор вопроса
пингвинёнок
@victor1234 камера наружу не смотрит и сделать этого не могу, к сожалению (по ряду не зависящих от меня причин). Да, есть (в камере это как Mode обозначено) JPEG, MPEG4, H.264. C JPEG avplay ничего не выводит. С MPEG4 и H.264 картинка смазанная.
MPEG4
5c0bec724d6a46eab80086693e5f56bb.png

H.264
381e61594ed14439ba9f95fa5d340162.png

При этом VLC дает нормальную картинку.
Через avserver + avconv результат не меняется - на выходе пустота.

С MPEG4 и H.264 стриминг идет:

MPEG4
video:3511kB audio:737kB global headers:0kB muxing overhead 1.990719%

H.264
video:7636kB audio:1612kB global headers:0kB muxing overhead 1.987552%
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы