Поиск и приостановка видеопотока с ffserver

Мне удалось успешно загрузить ffserver из ffmpeg. ffmpeg принимает ввод как PIPE:

ffmpeg -loglevel fatal -f image2pipe -re -vcodec png -i - -vcodec libx264 http://localhost:8090/%s.ffm

Внешний процесс java создает изображения svg/png и отправляет в ffpmepg.

Моя конфигурация ffserver позволяет мне буферизовать прямые трансляции в файле ffm без определения размера файла.

Моя конфигурация потока выглядит следующим образом:

<Stream live2.mjpg>
   Feed feed2.ffm
   Format mpjpeg
   VideoFrameRate 25
   VideoSize 640x880
   VideoQMin 1
   VideoQMax 5
   NoAudio
   Strict -1
</Stream>

Проблема в том, что, несмотря на то, что я могу смотреть потоки в VLC, открывая сеть:

http://0.0.0.0:8090/live2.mjpg

Но я не могу искать через уже буферизованный фильм. Есть ли способ добиться поиска с помощью фильма, приостановки и возобновления воспроизведения с «сейчас»? Я уже пробовал rtsp с h264, mpg и sdp, но безуспешно:

<Stream test1.mpg/sdp/h264>
   Format rtp
   Feed feed2.ffm
   VideoCodec libx264
   VideoSize 640x880
   VideoQMin 1
   VideoQMax 5
   NoAudio
   Strict -1
   VideoFrameRate 25
</Stream>

Является ли rtsp решением этой проблемы или мне нужно что-то еще?

Можно ли этого добиться с помощью динамического файла, поскольку я использую PIPE?


person Bresiu    schedule 08.05.2015    source источник
comment
FFmpeg не поддерживает формат с именем mpjpeg. Я полагаю, вы имели в виду mjpeg.   -  person llogan    schedule 08.05.2015
comment
@LordNeckbeard Кажется, есть такой формат: `E mpjpeg MIME multipart JPEG`   -  person aergistal    schedule 08.05.2015
comment
@LordNeckbeard в соответствии с ffmpeg.org/sample.html в примерах потоков есть "Формат mpjpeg" . Это опечатка? Этот поток работает.   -  person Bresiu    schedule 08.05.2015
comment
Ах, да, ты прав. Я имел в виду кодек, точнее энкодер (хотя я даже написал формат).   -  person llogan    schedule 09.05.2015


Ответы (1)


  • RTSP

    Поддержка RTSP в ffserver кажется немного поверхностной, вы можете попробовать Darwin Streaming Server или Медиасервер Live555. Эти двое, кажется, поддерживают некоторые формы трюковой игры, по крайней мере, для VOD. Поскольку вы используете трубу, это, вероятно, не поможет.

  • RTMP

    Некоторые серверы/клиенты RTMP поддерживают поиск в буфере (Smart Seeking).

    Об умном поиске

    Adobe Media Server 3.5.3 и Flash Player 10.1 работают вместе, чтобы поддерживать интеллектуальный поиск в потоках VOD и в живых потоках, которые имеют буфер. [Источник].

    ffserver не поддерживает вывод RTMP, но вы можете использовать команду ffmpeg для отправки потока прямо на сервер:

    ffmpeg -re -i <input> -f flv rtmp://...

    Существует модуль Nginx RTMP и C++ RTMP, хотя не очень ясно, поддерживают ли они интеллектуальный поиск. VLC, кажется, может немного искать во время паузы, и обычно есть опции для изменения размера буфера RTMP клиента.

person aergistal    schedule 09.05.2015