Russian Qt Forum

Qt => Мультимедиа => Тема начата: torwig от Сентябрь 03, 2014, 11:25



Название: Сырой (raw) h264
Отправлено: torwig от Сентябрь 03, 2014, 11:25
Добрый день.
Имею камеру D-Link DCS-5020L. Она умеет отдавать h264 по URL http://191.168.1.10/dgh264.raw.
Отдает она очень просто, идет вот такое
Код:
HTTP/1.0 200 OK
Server: alphapd
Date: Wed Sep  3 11:10:11 2014
Pragma: no-cache
Cache-Control: no-cache
Content-type: video/raw
а за ним непрерывный поток.
Я поток записываю в файл, но к примеру VLC потом этот файл не способен проиграть.
MPlayer воспроизводит, но очень много сообщений вида:
Код:
[h264 @ 0xb6a65d00]non-existing PPS 2 referenced
[h264 @ 0xb6a65d00]decode_slice_header error
[h264 @ 0xb6a65d00]no frame!
Error while decoding frame!
Почитал, почитал и понимаю, что нужно подкорректировать информацию, добавляя определенные данные.
Вот здесь есть информация о h264 поверх RTP: http://stackoverflow.com/questions/7665217/how-to-process-raw-udp-packets-so-that-they-can-be-decoded-by-a-decoder-filter-i
Но там UDP, и как его привязать к моему случаю не понимаю, или нужно другие преобразования выполнять.
Буду рад совету, можно кодом, можно утилитой преобразовывать этот сырой формат в нечто, что можно проиграть чем-то кроме mplayerа.

п.с.
Код:
avconv -i raw.264 out.mp4
не помогает, после подобного даже mplayer не воспроизводит.

Спасибо за внимание.


Название: Re: Сырой (raw) h264
Отправлено: navrocky от Сентябрь 03, 2014, 12:25
Поспешил с советом, libx264 - умеет только кодировать. Ну видимо придется использовать полноценный ffmpeg для декодирования. Он точно умеет работать с сырыми кодированными потоками.

Самое очевидное - это использовать libx264. Но я с ней не работал, не могу сказать насколько это геморройно.

http://www.videolan.org/developers/x264.html


Название: Re: Сырой (raw) h264
Отправлено: torwig от Сентябрь 03, 2014, 13:39
Попробую ffmpeg, но вроде на 14 Убунте уже его нет, вместо него libav, а с помощью avconv я уже пытался, результат нет.


Название: Re: Сырой (raw) h264
Отправлено: Пантер от Сентябрь 03, 2014, 13:48
OpenCV попробуй.


Название: Re: Сырой (raw) h264
Отправлено: navrocky от Сентябрь 03, 2014, 15:25
Попробую ffmpeg, но вроде на 14 Убунте уже его нет, вместо него libav, а с помощью avconv я уже пытался, результат нет.

libav - это оно и есть, не знаю, что делает avconv, но если ты возьмешь h264 кодек из libavcodec, и декодируешь им, то наверняка прийдешь к успеху.


Название: Re: Сырой (raw) h264
Отправлено: Fat-Zer от Сентябрь 03, 2014, 23:02
torwig, а можешь выложить пару секунд такого видео на поиграться?


Название: Re: Сырой (raw) h264
Отправлено: torwig от Сентябрь 04, 2014, 08:44
Fat-Zer, да, пожалуйста: http://dropmefiles.com/G4qWb


Название: Re: Сырой (raw) h264
Отправлено: Fat-Zer от Сентябрь 04, 2014, 12:21
первое, что получилось с ходу закатать его в матрёшку mkvmerge'ем...
также mencoder'ом с -ovc copy получилось засунуть в avi, но на него и vlc и mplayer ругаются также как и у тебя...


Название: Re: Сырой (raw) h264
Отправлено: torwig от Сентябрь 04, 2014, 13:05
Fat-Zer, спасибо.
mkvmerge действительно превращает его в нечто, что можно посмотреть.
Буду искать дальше, как бы поток обрабатывать, выделять фреймы, в конечном итоге отображать это дело.