Summary
Nginx is a lightweight Web server/reverse proxy server and email (IMAP/POP3) proxy server.
nginx-rmtp-module is a streaming media plug-in for Nginx server.
Nginx provides rtmp service through rtmp module, ffmpeg pushes a rtmp stream to nginx, and then the client accesses nginx to watch real-time video stream.
First, introduce how to build nginx + rtmp under windows
There are two options:
(1)
1. Download nginx: http://nginx.org/
2. Download nginx-rmtp-module: https://github.com/arut/nginx-rtmp-module
3. Configure nginx.conf
#nginx.conf rtmp { server { listen 1935; chunk_size 4000; # TV mode: one publisher, many subscribers application wstv{ # enable live streaming live on; # record first 1K of stream record all; record_path /tmp/av; record_max_size 1K; # append current timestamp to each flv record_unique on; # publish only from localhost allow publish 127.0.0.1; deny publish all; #allow play all; }
4. compilation
./configure --add-module=/path/to/nginx-rtmp-module make make install
Note that the configuration command for nginx version in nginx (1.3.14-1.5.0) is as follows:
./configure –add-module=/path/to/nginx-rtmp-module –with-http_ssl_module
5. Open the server, test
Browser input localhost:80
(two)
The first one needs us to inherit the rtmp module, and the second one is relatively simple.
We can be at http://nginx-win.ecsds.eu/ Download the integrated nginx. You can refer to it here. http://blog.csdn.net/lishimin1012/article/details/52130683
Nginx Start, Stop, etc.
1. Start up:
C:\nginx-1.10.2>start nginx
or
C:\nginx-1.10.2>nginx.exe
Note: The first one is recommended, and the second one keeps your cmd window in execution and cannot perform other command operations.
2. Stop:
C:\nginx-1.10.2>nginx.exe -s stop
or
C:\nginx-1.10.2>nginx.exe -s quit
Note: stop is to stop nginx quickly, and may not save relevant information; quit is to stop nginx completely and orderly, and save relevant information.
3. Reload Nginx:
C:\nginx-1.10.2>nginx.exe -s reload
Use this command when configuration information is modified and these configurations need to be reloaded.
FFmpeg push flow
Push-flow and pull-flow address: rtmp://localhost:1935/wstv/home
Place a video file named ws2.avi on the desktop
cd to desktop input:
ffmpeg -re -i ws2.avi -vcodec libx264 -acodec aac -f flv rtmp://localhost:1935/wstv/home
Pull flow
Open the vlc player
Enter pull-in address:
rtmp://localhost:1935/wstv/home
Then return from the command line and click the play button of vlc.
Of course, you can also write some js code on the web ports, and also support playback. If your mobile player supports rtmp streaming protocol, it can also play.
If you feel that pushing a stream, pulling a stream is not addictive, but there are more than n streams pushing and pulling at the same time, then you can open another cmd, pushing one is also possible.
Here are some common commands for ffmpeg.
1. If you want to record or share your desktop, you can use the command line as follows:
ffmpeg -f avfoundation -i "1" -vcodec libx264 -preset ultrafast -acodec libfaac -f flv rtmp://localhost:1935/wstv/homeThis can only push the desktop.
2. If desktop + microphone is needed, for example, the command line for distance education sharing is as follows:
ffmpeg -f avfoundation -i "1:0" -vcodec libx264 -preset ultrafast -acodec libmp3lame -ar 44100 -ac 1 -f flv rtmp://localhost:1935/wstv/homeThis can push desktop + microphone.
3. If you need a desktop + microphone, and you need a camera to take pictures of yourself, such as interactive anchor, game anchor, the command line is as follows
ffmpeg -f avfoundation -framerate 30 -i "1:0" \-f avfoundation -framerate 30 -video_size 640x480 -i "0" \-c:v libx264 -preset ultrafast \-filter_complex 'overlay=main_w-overlay_w-10:main_h-overlay_h-10' -acodec libmp3lame -ar 44100 -ac 1 -f flv rtmp://localhost:1935/wstv/homeThis can push the desktop + microphone, and the camera puts the human head under the interface.
Common basic commands of FFmpeg
1. Separation of video and audio streams
ffmpeg -i input_file -vcodec copy -an output_file_video //Separation of video streams ffmpeg -i input_file -acodec copy -vn output_file_audio //Separation of audio streams
2. Video Demultiplexing
ffmpeg –i test.mp4 –vcodec copy –an –f m4v test.264ffmpeg –i test.avi –vcodec copy –an –f m4v test.264
3. Video transcoding
ffmpeg –i test.mp4 –vcodec h264 –s 352*278 –an –f m4v test.264 //Transcoding to the original stream file ffmpeg –i test.mp4 –vcodec h264 –bf 0 –g 25 –s 352*278 –an –f m4v test.264 //Transcoding to the original stream file ffmpeg –i test.avi -vcodec mpeg4 –vtag xvid –qsame test_xvid.avi //Transcoding to encapsulated file-bf B Frame Number Control -g key frame interval control -s resolution control
4. Video Encapsulation
ffmpeg –i video_file –i audio_file –vcodec copy –acodec copy output_file
5. Video clipping
ffmpeg –i test.avi –r 1 –f image2 image-%3d.jpeg //Extract pictures ffmpeg -ss 0:1:30 -t 0:0:20 -i input.avi -vcodec copy -acodec copy output.avi //Clip video-r Extraction Frequency of Image -ss start time - t duration
6. Video recording
ffmpeg –i rtsp://192.168.3.205:5555/test –vcodec copy out.avi
7.YUV Sequence Play
ffplay -f rawvideo -video_size 1920x1080 input.yuv
8.YUV sequence to AVI
ffmpeg –s w*h –pix_fmt yuv420p –i input.yuv –vcodec mpeg4 output.avi
9. Description of common parameters:
Main parameters:
i Set Input Flow
f Setting Output Format
ss start time
Video parameters:
b Set video traffic, default frame rate for 200Kbit/s-r, default 25
s Setting Screen Width and Height-aspect Setting Screen Ratio
vn does not process video-vcodec to set the video codec, and when not set, it uses the same codec as the input stream.
Audio parameters:
ar set sampling rate
ac Sets Channel Number of Sounds
acodec sets the audio codec, and when not set, uses the same codec an as the input stream to not process the audio.