博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【ffmpeg】ffserver搭建流媒体服务
阅读量:2041 次
发布时间:2019-04-28

本文共 9075 字,大约阅读时间需要 30 分钟。

Date: 2018.11.11


1、参考

2、实现过程

推流:encode

拉流: decode

下载ffmpeg,ffsever和ffplay:

ffserver.conf配置demo:

在这里插入图片描述

在这里插入图片描述

整体结构就如上图所示,

ffmpeg进行推流,把服务器上的源媒体文件转换(编码encode)成要发送出去的流媒体文件,
ffserver则负责响应客户端的流媒体请求,把流媒体数据发送给客户端。
ffserver.conf,ffserver启动时的配置文件,在这个文件中主要是对网络协议,缓存文件feed1.ffm和要发送的流媒体文件的格式参数做具体的设定。
feed1.ffm,可以看成是一个流媒体数据的缓存文件,ffmpeg把转码好的数据发送给ffserver,如果没有客户端连接请求,ffserver把数据缓存到该文件中。

示例如下:

  1. ffserver先启动起来,
ffserver -f ffserver.conf
  1. 启动ffmpeg推流:
ffmpeg  -i output.ts http://localhost:8090/feed1.ffm
  1. 可以采用ffplay作为客户端播放流媒体文件:
ffplay http://localhost:8090/test.mpg

ffserver.conf:doc/ffserver.conf

# Port on which the server is listening. You must select a different# port from your standard HTTP web server if it is running on the same# computer.HTTPPort 8090# Address on which the server is bound. Only useful if you have# several network interfaces.HTTPBindAddress 0.0.0.0# Number of simultaneous HTTP connections that can be handled. It has# to be defined *before* the MaxClients parameter, since it defines the# MaxClients maximum limit.MaxHTTPConnections 2000# Number of simultaneous requests that can be handled. Since FFServer# is very fast, it is more likely that you will want to leave this high# and use MaxBandwidth, below.MaxClients 1000# This the maximum amount of kbit/sec that you are prepared to# consume when streaming to clients.MaxBandwidth 1000# Access log file (uses standard Apache log file format)# '-' is the standard output.CustomLog -################################################################### Definition of the live feeds. Each live feed contains one video# and/or audio sequence coming from an ffmpeg encoder or another# ffserver. This sequence may be encoded simultaneously with several# codecs at several resolutions.
# You must use 'ffmpeg' to send a live feed to ffserver. In this# example, you can type:## ffmpeg http://localhost:8090/feed1.ffm# ffserver can also do time shifting. It means that it can stream any# previously recorded live stream. The request should contain:# "http://xxxx?date=[YYYY-MM-DDT][[HH:]MM:]SS[.m...]".You must specify# a path where the feed is stored on disk. You also specify the# maximum size of the feed, where zero means unlimited. Default:# File=/tmp/feed_name.ffm FileMaxSize=5MFile /tmp/feed1.ffmFileMaxSize 200K# You could specify# ReadOnlyFile /saved/specialvideo.ffm# This marks the file as readonly and it will not be deleted or updated.# Specify launch in order to start ffmpeg automatically.# First ffmpeg must be defined with an appropriate path if needed,# after that options can follow, but avoid adding the http:// field#Launch ffmpeg# Only allow connections from localhost to the feed.ACL allow 127.0.0.1
################################################################### Now you can define each stream which will be generated from the# original audio and video stream. Each format has a filename (here# 'test1.mpg'). FFServer will send this stream when answering a# request containing this filename.
# coming from live feed 'feed1'Feed feed1.ffm# Format of the stream : you can choose among:# mpeg : MPEG-1 multiplexed video and audio# mpegvideo : only MPEG-1 video# mp2 : MPEG-2 audio (use AudioCodec to select layer 2 and 3 codec)# ogg : Ogg format (Vorbis audio codec)# rm : RealNetworks-compatible stream. Multiplexed audio and video.# ra : RealNetworks-compatible stream. Audio only.# mpjpeg : Multipart JPEG (works with Netscape without any plugin)# jpeg : Generate a single JPEG image.# mjpeg : Generate a M-JPEG stream.# asf : ASF compatible streaming (Windows Media Player format).# swf : Macromedia Flash compatible stream# avi : AVI format (MPEG-4 video, MPEG audio sound)Format mpeg# Bitrate for the audio stream. Codecs usually support only a few# different bitrates.AudioBitRate 32# Number of audio channels: 1 = mono, 2 = stereoAudioChannels 1# Sampling frequency for audio. When using low bitrates, you should# lower this frequency to 22050 or 11025. The supported frequencies# depend on the selected audio codec.AudioSampleRate 44100# Bitrate for the video streamVideoBitRate 64# Ratecontrol buffer sizeVideoBufferSize 40# Number of frames per secondVideoFrameRate 3# Size of the video frame: WxH (default: 160x128)# The following abbreviations are defined: sqcif, qcif, cif, 4cif, qqvga,# qvga, vga, svga, xga, uxga, qxga, sxga, qsxga, hsxga, wvga, wxga, wsxga,# wuxga, woxga, wqsxga, wquxga, whsxga, whuxga, cga, ega, hd480, hd720,# hd1080VideoSize 160x128# Transmit only intra frames (useful for low bitrates, but kills frame rate).#VideoIntraOnly# If non-intra only, an intra frame is transmitted every VideoGopSize# frames. Video synchronization can only begin at an intra frame.VideoGopSize 12# More MPEG-4 parameters# VideoHighQuality# Video4MotionVector# Choose your codecs:#AudioCodec mp2#VideoCodec mpeg1video# Suppress audio#NoAudio# Suppress video#NoVideo#VideoQMin 3#VideoQMax 31# Set this to the number of seconds backwards in time to start. Note that# most players will buffer 5-10 seconds of video, and also you need to allow# for a keyframe to appear in the data stream.#Preroll 15# ACL:# You can allow ranges of addresses (or single addresses)#ACL ALLOW
# You can deny ranges of addresses (or single addresses)#ACL DENY
# You can repeat the ACL allow/deny as often as you like. It is on a per# stream basis. The first match defines the action. If there are no matches,# then the default is the inverse of the last ACL statement.## Thus 'ACL allow localhost' only allows access from localhost.# 'ACL deny 1.0.0.0 1.255.255.255' would deny the whole of network 1 and# allow everybody else.
################################################################### Example streams# Multipart JPEG#
#Feed feed1.ffm#Format mpjpeg#VideoFrameRate 2#VideoIntraOnly#NoAudio#Strict -1#
# Single JPEG#
#Feed feed1.ffm#Format jpeg#VideoFrameRate 2#VideoIntraOnly##VideoSize 352x240#NoAudio#Strict -1#
# Flash#
#Feed feed1.ffm#Format swf#VideoFrameRate 2#VideoIntraOnly#NoAudio#
# ASF compatible
Feed feed1.ffmFormat asfVideoFrameRate 15VideoSize 352x240VideoBitRate 256VideoBufferSize 40VideoGopSize 30AudioBitRate 64StartSendOnKey
# MP3 audio#
#Feed feed1.ffm#Format mp2#AudioCodec mp3#AudioBitRate 64#AudioChannels 1#AudioSampleRate 44100#NoVideo#
# Ogg Vorbis audio#
#Feed feed1.ffm#Metadata title "Stream title"#AudioBitRate 64#AudioChannels 2#AudioSampleRate 44100#NoVideo#
# Real with audio only at 32 kbits#
#Feed feed1.ffm#Format rm#AudioBitRate 32#NoVideo#NoAudio#
# Real with audio and video at 64 kbits#
#Feed feed1.ffm#Format rm#AudioBitRate 32#VideoBitRate 128#VideoFrameRate 25#VideoGopSize 25#NoAudio#
################################################################### A stream coming from a file: you only need to set the input# filename and optionally a new format. Supported conversions:# AVI -> ASF#
#File "/usr/local/httpd/htdocs/tlive.rm"#NoAudio#
#
#File "/usr/local/httpd/htdocs/test.asf"#NoAudio#Metadata author "Me"#Metadata copyright "Super MegaCorp"#Metadata title "Test stream from disk"#Metadata comment "Test comment"#
################################################################### RTSP examples## You can access this stream with the RTSP URL:# rtsp://localhost:5454/test1-rtsp.mpg## A non-standard RTSP redirector is also created. Its URL is:# http://localhost:8090/test1-rtsp.rtsp#
#Format rtp#File "/usr/local/httpd/htdocs/test1.mpg"#
# Transcode an incoming live feed to another live feed,# using libx264 and video presets#
#Format rtp#Feed feed1.ffm#VideoCodec libx264#VideoFrameRate 24#VideoBitRate 100#VideoSize 480x272#AVPresetVideo default#AVPresetVideo baseline#AVOptionVideo flags +global_header##AudioCodec libfaac#AudioBitRate 32#AudioChannels 2#AudioSampleRate 22050#AVOptionAudio flags +global_header#
################################################################### SDP/multicast examples## If you want to send your stream in multicast, you must set the# multicast address with MulticastAddress. The port and the TTL can# also be set.## An SDP file is automatically generated by ffserver by adding the# 'sdp' extension to the stream name (here# http://localhost:8090/test1-sdp.sdp). You should usually give this# file to your player to play the stream.## The 'NoLoop' option can be used to avoid looping when the stream is# terminated.#
#Format rtp#File "/usr/local/httpd/htdocs/test1.mpg"#MulticastAddress 224.124.0.1#MulticastPort 5000#MulticastTTL 16#NoLoop#
################################################################### Special streams# Server status
Format status# Only allow local people to get the statusACL allow localhostACL allow 192.168.0.0 192.168.255.255#FaviconURL http://pond1.gladstonefamily.net:8080/favicon.ico
# Redirect index.html to the appropriate site
URL http://www.ffmpeg.org/

Linux平台下ffmpeg的安装:


THE END!

转载地址:http://gfnof.baihongyu.com/

你可能感兴趣的文章
剑指offer 26. 数组中出现次数超过一半的数字
查看>>
剑指offer 27.二叉树的深度
查看>>
剑指offer 29.字符串的排列
查看>>
剑指offer 31.最小的k个树
查看>>
剑指offer 32.整数中1出现的次数
查看>>
剑指offer 33.第一个只出现一次的字符
查看>>
剑指offer 34.把数组排成最小的数
查看>>
剑指offer 35.数组中只出现一次的数字
查看>>
剑指offer 36.数字在排序数组中出现的次数
查看>>
剑指offer 37.数组中重复的数字
查看>>
剑指offer 38.丑数
查看>>
剑指offer 39.构建乘积数组
查看>>
剑指offer 57. 删除链表中重复的结点
查看>>
剑指offer 58. 链表中环的入口结点
查看>>
剑指offer 59. 把字符串转换成整数
查看>>
剑指offer 60. 不用加减乘除做加法
查看>>
剑指offer 61. 求1+2+3+...+n
查看>>
剑指offer 62. 孩子们的游戏
查看>>
剑指offer 63.扑克牌顺子
查看>>
剑指offer 64. 翻转单词顺序列
查看>>