2016-04-05 27 views
1

Yerel bir uygulamanın bir JPEG görüntüleri dizisini bir FIFO (Linux üzerinde Unix adlandırılmış boru) içine yazdığı bir kurulumum var. diğer ucunda ben ffmpeg diziyi alıp ffserver örneğine içine geçiremez:ffserver kullanarak tek bir JPEG işlevi

% ffmpeg -i fifo.mjpeg http://127.0.0.1:8090/feed.ffm 

ffserver için yapılandırma şuna benzer: Bu iyi çalışır

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> 

kızkardeşimi işaret edebilir web tarayıcısına http://127.0.0.1:8090/stream.mpjpeg ve videoyu izleyin.

Şimdi tek bir JPEG indirmek için bir yol eklemek istiyorum (bunu videonun anlık görüntüsü olarak düşünüyorum).

<Stream image.jpg> 
    Format singlejpeg 
    Feed feed.ffm 

    VideoSize 960x600 
    VideoFrameRate 2 
    VideoIntraOnly 
    Strict -1 

    NoAudio 
    NoDefaults 
</Stream> 

sadece çeşit yaradı: Ben ffserver yapılandırmaya aşağıdaki eklendi. Tabii, eğer tarayıcımı http://127.0.0.1:8090/image.jpg'a yönlendirirsem, isimli videodan bir fotoğraf çektim ancak tarayıcı hiç bir zaman yüklemeyi durdurmuyor! Ben wget http://127.0.0.1:8090/image.jpg çalıştırırsanız

Doğrusu ben MIME türü iyi (image/jpeg) olduğunu görüyoruz, ancak resmin sonu var gibi görünüyor.

ffserver, yapılandırmamda tek bir görüntüden daha fazlasını gönderen bir şey eksik mi?

Bu kurulumu hem 2.8.6 (Debian Jessie, paket jessie-backports'tan geliyor) hem de 3.0 (Arch Linux) denedim, her iki durumda da aynı sonucu ekledim.

cevap

0

Bu sorunun cevabını bulmak için araştırıyorum.

mjpg_streamer -i 'input_uvc.so -f 15 -r 640x480' -o 'output_http.so' 

Eğer http://localhost:8080/?action=snapshot aracılığıyla anlık indirmek için verir: Ben mjpg-streamer kullanarak Bunu yapmanın tek yolu buldum. Ama ffmpeg kullanarak bunu yapmak için elinden ...

DÜZENLEME: Ben "snapshotable" ffserver nasıl anladım gibi görünüyor

.

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> 

DÜZENLEME: İşte benim yapılandırma

Maalesef bu yöntem bazen garip kilitleniyor verir ...