Last active
October 21, 2024 03:35
-
-
Save peterhellberg/ebfc72147c2009ee720aafe57ce9c141 to your computer and use it in GitHub Desktop.
MJPEG stream from Webcam using FFServer and FFMpeg
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
HTTPPort 8090 | |
HTTPBindAddress 0.0.0.0 | |
MaxHTTPConnections 200 | |
MaxClients 100 | |
MaxBandWidth 500000 | |
CustomLog - | |
<Feed camera.ffm> | |
File /tmp/camera.ffm | |
FileMaxSize 200M | |
</Feed> | |
<Stream camera.mjpeg> | |
Feed camera.ffm | |
Format mpjpeg | |
VideoFrameRate 15 | |
VideoIntraOnly | |
VideoBitRate 4096 | |
VideoBufferSize 4096 | |
VideoSize 640x480 | |
VideoQMin 5 | |
VideoQMax 51 | |
NoAudio | |
Strict -1 | |
</Stream> |
Hello, I have problem with broadcasting video from webcamera to my server.
It's failed when try to run broadcast to server.
Technical info:
Client-site:Windows 10
Server-site: Ubuntu 16.04
ffserver.conf
HTTPPort 8090
HTTPBindAddress 0.0.0.0
MaxHTTPConnections 2000
MaxClients 1000
MaxBandwidth 500000
CustomLog -
NoDaemon
RTSPPort 7654
RTSPBindAddress 0.0.0.0
<Feed feed1.ffm> # This is the input feed where FFmpeg will send
File ./feed1.ffm # video stream.
FileMaxSize 1G # Maximum file size for buffering video
ACL allow 127.0.0.1 # Allowed IPs
</Feed>
<Stream camera.mjpeg>
Feed feed1.ffm
Format webm
# Audio settings
AudioCodec vorbis
AudioBitRate 64 # Audio bitrate
# Video settings
VideoCodec libvpx
VideoSize 640x480 # Video resolution
VideoFrameRate 30 # Video FPS
AVOptionVideo flags +global_header # Parameters passed to encoder
# (same as ffmpeg command-line parameters)
AVOptionVideo cpu-used 0
AVOptionVideo qmin 10
AVOptionVideo qmax 42
AVOptionVideo quality good
AVOptionAudio flags +global_header
PreRoll 15
StartSendOnKey
VideoBitRate 400
</Stream>
<Stream status.html>
Format status
# Only allow local people to get the status
ACL allow localhost
ACL allow 192.168.0.0 192.168.255.255
</Stream>
<Redirect index.html> # Just an URL redirect for index
# Redirect index.html to the appropriate site
URL http://XX.XXX.XXX.XXX
</Redirect>
Run code on Windows:
ffmpeg -f dshow -i video="USB2.0 HD UVC WebCam" -video_size 640x480 -rtbufsize 702000k -framerate 30 -pixel_format yuyv422 -f mpegts http://XXX.XXX.XX.XX:8090/feed1.ffm
Error message on Windows:
ffmpeg version N-92730-g978c935f2f Copyright (c) 2000-2018 the FFmpeg developers
built with gcc 8.2.1 (GCC) 20181201
configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libtheora --enable-libtwolame --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable-libvidstab --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa --enable-libspeex --enable-libxvid --enable-libaom --enable-libmfx --enable-amf --enable-ffnvcodec --enable-cuvid --enable-d3d11va --enable-nvenc --enable-nvdec --enable-dxva2 --enable-avisynth --enable-libopenmpt
libavutil 56. 24.101 / 56. 24.101
libavcodec 58. 42.103 / 58. 42.103
libavformat 58. 24.101 / 58. 24.101
libavdevice 58. 6.101 / 58. 6.101
libavfilter 7. 46.101 / 7. 46.101
libswscale 5. 4.100 / 5. 4.100
libswresample 3. 4.100 / 3. 4.100
libpostproc 55. 4.100 / 55. 4.100
Input #0, dshow, from 'video=USB2.0 HD UVC WebCam':
Duration: N/A, start: 5326.566000, bitrate: N/A
Stream #0:0: Video: mjpeg (Baseline) (MJPG / 0x47504A4D), yuvj422p(pc, bt470bg/unknown/unknown), 1280x720, 30 fps, 30 tbr, 10000k tbn, 10000k tbc
Stream mapping:
Stream #0:0 -> #0:0 (mjpeg (native) -> mpeg2video (native))
Press [q] to stop, [?] for help
[swscaler @ 06e5a000] deprecated pixel format used, make sure you did set range correctly
Output #0, mpegts, to 'http://95.183.11.180:8090/feed1.ffm':
Metadata:
encoder : Lavf58.24.101
Stream #0:0: Video: mpeg2video (4:2:2), yuv422p, 1280x720, q=2-31, 200 kb/s, 30 fps, 90k tbn, 30 tbc
Metadata:
encoder : Lavc58.42.103 mpeg2video
Side data:
cpb: bitrate max/min/avg: 0/0/200000 buffer size: 0 vbv_delay: -1
av_interleaved_write_frame(): Unknown error
Error writing trailer of http://95.183.11.180:8090/feed1.ffm: Error number -10054 occurred
frame= 3 fps=0.0 q=1.6 Lsize= 46kB time=00:00:00.00 bitrate=34318545.5kbits/s speed=9.07e-05x
video:84kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown
[http @ 06dd5c00] URL read error: -10054
Conversion failed!
FFserver log:
Fri Feb 8 03:14:58 2019 - [POST] "/feed1.ffm HTTP/1.1" 200 4096
@BakytzhanAkzhol I've met same error when publishing webcam to ffserver on windows 10. Did you solve this?
Is the source code of ffserver still available ?
@YasirKubarah Yes, in commit 2ca65fc or the 3.4 release branch, as noted on https://trac.ffmpeg.org/wiki/ffserver
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
I can't get audio to work. There is some noise for about 1 second and then it stops. And video does have a huge delay (30sec+?)
Device is an raspberry pi with an external logitech webcam.
Would be very thankful for any idea why.
I try to play it via VLC player
arecord -l
**** Liste der Hardware-Geräte (CAPTURE) **** Karte 1: U0x46d0x825 [USB Device 0x46d:0x825], Gerät 0: USB Audio [USB Audio] Sub-Geräte: 1/1 Sub-Gerät #0: subdevice #0
ffmpeg call
ffmpeg -f alsa -ac 1 -i hw:1,0 -f v4l2 -s 1280x720 -i /dev/video0 http://localhost:8090/camera.ffm
ffserver.conf