Обслуживание одного JPEG с использованием ffserver
У меня есть установка, в которой локальное приложение записывает последовательность изображений JPEG в FIFO (именованный канал Unix в Linux). На другом конце у меня есть ffmpeg
подбирая последовательность и передавая ее в экземпляр ffserver
:
% ffmpeg -i fifo.mjpeg http://127.0.0.1:8090/feed.ffm
Конфигурация для ffserver
выглядит так:
HTTPPort 8090
HTTPBindAddress 0.0.0.0
MaxHTTPConnections 20
MaxClients 10
MaxBandwidth 1000
<Feed feed.ffm>
File /tmp/feed.ffm
FileMaxSize 200k
ACL allow 127.0.0.1
</Feed>
<Stream stream.mpjpeg>
Format mpjpeg
Feed feed.ffm
VideoSize 960x600
VideoFrameRate 2
VideoIntraOnly
Strict -1
NoAudio
NoDefaults
</Stream>
Это работает нормально, я могу указать мой веб-браузер на http://127.0.0.1:8090/stream.mpjpeg
и посмотреть видео.
Теперь я хочу добавить способ загрузки одного JPEG (я думаю, что это снимок видео). Я добавил следующее к ffserver
конфигурация:
<Stream image.jpg>
Format singlejpeg
Feed feed.ffm
VideoSize 960x600
VideoFrameRate 2
VideoIntraOnly
Strict -1
NoAudio
NoDefaults
</Stream>
Это только вид работ. Конечно, если я укажу свой браузер на http://127.0.0.1:8090/image.jpg
Я делаю неподвижное изображение из видео, но браузер никогда не перестает загружаться!
Действительно, если я бегу wget http://127.0.0.1:8090/image.jpg
Я вижу, что MIME-тип хорош (image/jpeg
), но, похоже, нет конца изображению.
Я что-то упустил в моей конфигурации, что делает ffserver
отправка более одного изображения?
Я должен добавить, что я пробовал эту установку на 2.8.6 (Debian Jessie, пакет поставляется из jessie-backports) и 3.0 (Arch Linux), с одинаковым результатом в обоих случаях.
1 ответ
Вы знаете, я нахожусь в поиске, чтобы найти ответ на вопрос. Я нашел только способ сделать это с помощью mjpg-streamer
:
mjpg_streamer -i 'input_uvc.so -f 15 -r 640x480' -o 'output_http.so'
дает вам возможность загружать снимки через http://localhost:8080/?action=snapshot
, Но я мог бы сделать это с помощью ffmpeg...
РЕДАКТИРОВАТЬ:
Похоже, я разобрался, как сделать "snapshotable" ffserver. Вот моя конфигурация:
HTTPPort 8090
HTTPBindAddress 0.0.0.0
MaxHTTPConnections 20
MaxClients 10
MaxBandwidth 100000
<Feed feed.ffm>
File /tmp/feed.ffm
FileMaxSize 200k
ACL allow 127.0.0.1
</Feed>
<Stream image.jpg>
Feed feed.ffm
Format jpeg
VideoSize 800x600
VideoFrameRate 30
Preroll 5
VideoIntraOnly
Strict -1
NoAudio
NoDefaults
</Stream>
РЕДАКТИРОВАТЬ:
К сожалению, этот метод иногда дает странные зависания...