ffmpeg與ffserver的協同工作
本文轉自:http://www.cnblogs.com/liushunli/p/5303966.html
ffmpeg和ffserver配合使用可以實現實時的流媒體服務,可以實時傳輸來自攝像頭的資料,客戶端可以採用HTTP、RTSP、RTP協議等播放視訊流。
一、概念和流程
ffmpeg和ffserver配合使用涉及到四個概念:
1. ffmpeg,負責媒體檔案的轉碼工作,把你伺服器上的源媒體檔案轉換成要傳送出去的流媒體檔案。
2. ffserver,負責響應客戶端的流媒體請求,把流媒體資料傳送給客戶端。
3. ffserver.conf,ffserver啟動時的配置檔案,在這個檔案中主要是對網路協議,快取檔案feed1.ffm和要傳送的流媒體檔案的格式引數做具體的設定。
4. feed1.ffm,可以看成是一個流媒體資料的快取檔案,ffmpeg把轉碼好的資料傳送給ffserver,如果沒有客戶端連線請求,ffserver把資料快取到該檔案中。
工作流程如下:
1、 啟動ffserver,配置引數
ffserver先於ffmpeg啟動,它在啟動的時候需要加引數-f指定其配置檔案,配置檔案裡包含埠資訊、緩衝檔案配置、傳送流配置(如編碼方式,幀率,取樣率……)。
2、 啟動ffmpeg,輸入流
啟動ffmpeg,向緩衝檔案輸入資料流,資料流可以來自攝像頭,也可以來自本來就存在的檔案。
feed1.ffm是一個緩衝檔案,fserver啟動後,feed1.ffm就會自動被建立,feed1.ffm開始的部分已經寫入向客戶端傳送流的配置資訊,在feed1.ffm做緩衝用的時候,這些資訊是不會被覆蓋掉。
ffmpeg啟動的一個關鍵引數就是“http://ip:port/feed1.ffm”,其中ip是執行ffserver主機的ip,如果ffmpeg和ffserver都在同一系統中執行的話,用localhost或者127.0.0.1也行。ffmpeg啟動後會與ffserver建立一個連線(短暫的連線),通過這第一次的連線,ffmpeg從ffserver那裡獲取了向客戶端輸出流的配置,並把這些配置作為自己編碼輸出的配置,然後ffmpeg斷開了這次連線,再次與ffserver建立連線(長久的連線),利用這個連線ffmpeg會把編碼後的資料傳送給ffserver。如果你觀察ffserver端的輸出就會發現這段時間會出現兩次HTTP的200,這就是兩次連線的過程。
3、連線過程
ffmpeg從攝像頭獲取資料後,按照輸出流的編碼方式編碼,然後傳送給ffserver,ffserver收到ffmpeg的資料後,如果網路上沒有播放的請求,就把資料寫入feed1.ffm中快取,寫入時把資料加上些頭資訊然後分塊,每塊4096B(每塊也有結構),當feed1.ffm的大小到了ffserver.conf中規定的大小後,就會從檔案開始(跳過頭)寫入,覆蓋舊的資料。直到網路上有播放的請求,ffserver從feed1.ffm中讀取資料,傳送給客戶端。
二、配置與應用
ffserver可以配置為帶緩衝或者不帶緩衝,其中不帶緩衝的只需要配置stream的位置,不需要feed和ffmpeg。
ffserver配置檔案可以參考ffmpeg原始碼中的doc/ffserver.conf,裡邊有詳細的註釋。檔案的結構可以分為頭部資訊、實時流資訊、格式資訊。
1、不帶緩衝
最簡單的配置檔案如下
Port 9999
RTSPPort9990
BindAddress0.0.0.0
MaxClients1000
MaxBandwidth100000
CustomLog–
#只需要指定待播放的檔案的路徑以及格式資訊即可
<Streamtest.flv>
File "/home/test.flv"
Format flv
</Stream>
#rtsp應用
<Streamtest.mpg>
File"myfile/testvideo/test.mpg"
Format rtp
</Stream>
命令符:
1. 在終端裡輸入ffserver -f /etc/ffserver.conf
2. 在瀏覽器裡或者相關播放器地址裡輸入 http://ipAddr:port/test.flv
備註:1、Port為配置裡面的9999,檔名直接輸入流的檔名即可。
2、實際測試flv等格式都可以播放。
3、測試需要的test.flv的可以使用ffmpeg錄製,命令是
ffmpeg -f v4l2 -s 320*240 -r 10 -i /dev/video2-vcodec flv /test.flv
2、帶緩衝
配置檔案如下
Port 9999
RTSPPort9990
BindAddress0.0.0.0
MaxClients1000
MaxBandwidth10000
CustomLog–
<Feed feed1.ffm>
File/tmp/feed1.ffm
FileMaxSize40k
ACL allow127.0.0.1
</Feed>
<Stream test.flv>
Feedfeed1.ffm
Formatflv
BitExact
DctFastint
IdctSimple
VideoFrameRate10
VideoSize320x240
VideoBitRate64
VideoGopSize10
NoAudio
PreRoll10
StartSendOnKey
MaxTime100
</Stream>
要點:
1、實時流資料配置,其中注意檔案的位置,可以放到tmp資料夾下面,這樣會被自動清理掉。
2、每個不同的流都來自feed1.ffm,因此配置越多的流,當執行的時候,會逐個轉換,影響速度,一般不建議多配置。
3、ACL allow表示ip的地址範圍,比如ACL allow 192.168.0.0 192.168.255.255
命令符:
1. 在終端裡輸入
ffserver -f/etc/ffserver.conf
2. a.若是檔案方式則輸入
ffmpeg -i/home/test.flv http://127.0.0.1:9999/test.flv
b.若是實時視訊則輸入
3、執行客戶端命令
三、流的格式
檔案的拓展名對應一定的格式,常用的有:
拓展名 |
格式 |
flv |
flv |
mp4 |
mp4 |
mpg |
rtp |
libx264 |
|
.asf |
asf |
.mjpg |
mjpg |
.jpg |
jpeg |
配置例子:
Multipart JPEG
<Stream test.mjpg> Feed feed1.ffm Format mpjpeg VideoFrameRate 2 VideoIntraOnly NoAudio Strict -1 </Stream> |
Single JPEG
<Stream test.jpg> Feed feed1.ffm Format jpeg VideoFrameRate 2 VideoIntraOnly VideoSize 352x240 NoAudio Strict -1 </Stream> |
Flash
<Stream test.swf> Feed feed1.ffm Format swf VideoFrameRate 2 VideoIntraOnly NoAudio </Stream> |
ASF compatible
<Stream test.asf> Feed feed1.ffm Format asf VideoFrameRate 15 VideoSize 352x240 VideoBitRate 256 VideoBufferSize 40 VideoGopSize 30 AudioBitRate 64 StartSendOnKey </Stream> |
MP3 audio
<Stream test.mp3> Feed feed1.ffm Format mp2 AudioCodec mp3 AudioBitRate 64 AudioChannels 1 AudioSampleRate 44100 NoVideo </Stream> |
Ogg Vorbis audio
<Stream test.ogg> Feed feed1.ffm Metadata title "Stream title" AudioBitRate 64 AudioChannels 2 AudioSampleRate 44100 NoVideo </Stream> |
Real with audio only at 32 kbits
<Stream test.ra> Feed feed1.ffm Format rm AudioBitRate 32 NoVideo </Stream> |
Real with audio and video at 64 kbits
<Stream test.rm> Feed feed1.ffm Format rm AudioBitRate 32 VideoBitRate 128 VideoFrameRate 25 VideoGopSize 25 </Stream> |
For stream coming from a file: you onlyneed to set the input filename and optionally a new format.
<Stream file.rm> File "/usr/local/httpd/htdocs/tlive.rm" NoAudio </Stream> |
<Stream file.asf> 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" </Stream> |
實測可行的例子
配置:
<Streammy.mp4>
Formatrtp
File"/home/my.mp4"
</Stream>
客戶端命令 rtsp://192.168.1.230:9990/my.mp4
埠就是rtp的埠。使用http協議不能訪問。
<Streamtest.mp4>
Feedfeed1.ffm
Formatrtp
BitExact
DctFastint
IdctSimple
VideoFrameRate10
VideoSize320x240
VideoBitRate64
VideoGopSize10
NoAudio
PreRoll10
StartSendOnKey
MaxTime100
</Stream>
客戶端命令 rtsp://192.168.1.230:9990/test.mp4
<Streamlive.h264>
Formatrtp
Feedfeed1.ffm
VideoCodeclibx264
VideoFrameRate24
VideoBitRate100
VideoSize480x272
AVPresetVideodefault
AVPresetVideobaseline
AVOptionVideoflags +global_header
AudioCodeclibfaac
AudioBitRate32
AudioChannels2
AudioSampleRate22050
AVOptionAudioflags +global_header
</Stream>
使用H.264編碼時,使用命令
ffmpeg -f v4l2 -s 176*144 -r 2 -i /dev/video0-vcodec libx264 http://192.168.1.6:8090/feed1.ffm
ffmpeg-f v4l2 -s 176*144 -r 2 -vpre libx264-hq.ffpreset
ffmpeg-f v4l2 -s 176*144 -r 10 -vpre libx264-hq.ffpreset-i /dev/video0 -vcodec libx264 -f rtprtp://192.168.1.105:6060 > /tmp/x264.sdp
四、協議
HTTP協議的地址格式為:
http://ffserver_ip_address:http_port/stream_name[options]
RTSP協議的地址格式為:
http://ffserver_ip_address:rtsp_port/stream_name[options]
Sampleffserver configuration file
Port 8090
BindAddress 0.0.0.0
MaxHTTPConnections 2000
MaxClients 1000
MaxBandwidth 1000
CustomLog -
##################################################################
<Feed feed1.ffm>
# ffmpeg http://localhost:8090/feed1.ffm
File /tmp/feed1.ffm
FileMaxSize 200K
ACL allow 127.0.0.1
</Feed>
##################################################################
<Stream test1.mpg>
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.
# 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 = stereo
AudioChannels 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 stream
VideoBitRate 64
# Ratecontrol buffer size
VideoBufferSize 40
# Number of frames per second
VideoFrameRate 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,
# hd1080
VideoSize 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 <first address>
# You can deny ranges of addresses (or single addresses)
#ACL DENY <first address>
# 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.
</Stream>
##################################################################
# Example streams
# Multipart JPEG
#<Stream test.mjpg>
#Feed feed1.ffm
#Format mpjpeg
#VideoFrameRate 2
#VideoIntraOnly
#NoAudio
#Strict -1
#</Stream>
# Single JPEG
#<Stream test.jpg>
#Feed feed1.ffm
#Format jpeg
#VideoFrameRate 2
#VideoIntraOnly
##VideoSize 352x240
#NoAudio
#Strict -1
#</Stream>
# Flash
#<Stream test.swf>
#Feed feed1.ffm
#Format swf
#VideoFrameRate 2
#VideoIntraOnly
#NoAudio
#</Stream>
# ASF compatible
<Stream test.asf>
Feed feed1.ffm
Format asf
VideoFrameRate 15
VideoSize 352x240
VideoBitRate 256
VideoBufferSize 40
VideoGopSize 30
AudioBitRate 64
StartSendOnKey
</Stream>
# MP3 audio
#<Stream test.mp3>
#Feed feed1.ffm
#Format mp2
#AudioCodec mp3
#AudioBitRate 64
#AudioChannels 1
#AudioSampleRate 44100
#NoVideo
#</Stream>
# Ogg Vorbis audio
#<Stream test.ogg>
#Feed feed1.ffm
#Title "Stream title"
#AudioBitRate 64
#AudioChannels 2
#AudioSampleRate 44100
#NoVideo
#</Stream>
# Real with audio only at 32 kbits
#<Stream test.ra>
#Feed feed1.ffm
#Format rm
#AudioBitRate 32
#NoVideo
#NoAudio
#</Stream>
# Real with audio and video at 64 kbits
#<Stream test.rm>
#Feed feed1.ffm
#Format rm
#AudioBitRate 32
#VideoBitRate 128
#VideoFrameRate 25
#VideoGopSize 25
#NoAudio
#</Stream>
##################################################################
# A stream coming from a file: you only need to set the input
# filename and optionally a new format. Supported conversions:
# AVI -> ASF
#<Stream file.rm>
#File "/usr/local/httpd/htdocs/tlive.rm"
#NoAudio
#</Stream>
#<Stream file.asf>
#File "/usr/local/httpd/htdocs/test.asf"
#NoAudio
#Author "Me"
#Copyright "Super MegaCorp"
#Title "Test stream from disk"
#Comment "Test comment"
#</Stream>
##################################################################
# 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
#<Stream test1-rtsp.mpg>
#Format rtp
#File "/usr/local/httpd/htdocs/test1.mpg"
#</Stream>
# Transcode an incoming live feed to another live feed,
# using libx264 and video presets
#<Stream live.h264>
#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
#</Stream>
##################################################################
# 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.
#<Stream test1-sdp.mpg>
#Format rtp
#File "/usr/local/httpd/htdocs/test1.mpg"
#MulticastAddress 224.124.0.1
#MulticastPort 5000
#MulticastTTL 16
#NoLoop
#</Stream>
##################################################################
# Special streams
# Server status
<Stream stat.html>
Format status
# Only allow local people to get the status
ACL allow localhost
ACL allow 192.168.0.0 192.168.255.255
#FaviconURL http://pond1.gladstonefamily.net:8080/favicon.ico
</Stream>
# Redirect index.html to the appropriate site
<Redirect index.html>
URL http://www.ffmpeg.org/
</Redirect>
剛開始學習FFmpeg,很多東西不太瞭解,想看看FFmpeg推流是怎麼回事,試了網上很多網友說的方法:
1. 首先配置ffserver.conf.
其中的引數我也是基本照搬:
HTTPPort 8090 #RTSPPort 9990 HTTPBindAddress 0.0.0.0 MaxClients 1000 MaxBandwidth 100000 CustomLog - <Feed feed1.ffm> File feed1.ffm FileMaxSize 50M ACL allow localhost ACL allow 127.0.0.1 ACL allow 192.168.40.129 ACL allow 192.168.1.85 </Feed> <Stream test.flv> Feed feed1.ffm Format flv VideoFrameRate 25 VideoSize 640x400 VideoBitRate 2000 VideoGopSize 30 PreRoll 5 StartSendOnKey MaxTime 3 </Stream> <Stream teststat.html> Format status
</Stream>
2. ffserver先啟動伺服器端:ffserver -f ./tests/ffserver.conf。
3. 然後ffmpeg開始轉碼推流:ffmpeg -i /home/xxx/Vidoes/testv.mkv http://localhost:8090/feed1.ffm
4. 之後在我的windows上用迅雷播放器播放:http://192.168.40.129:8090/test.flv
看到視訊了,但是視訊播放一段時間後,問題出現了,不是播放不了了就是突然跳到另一個地方播放。從雷驍驊的部落格瞭解到,碼流解碼是非常快的(從列印的資料看是10倍於播放速度),碼流轉碼後推到feed1.ffm,快取滿後重新覆蓋之前的資料,所以播放就有問題了。這裡我有個疑問,ffserver.conf是設定了快取,但是從stat.html看目標視訊test.flv是不限制大小的一直往上漲,可能feed1.ffm才是真正的快取檔案,但是ffserver是怎麼把資料從feed1.ffm轉到test.flv的呢,網路請求播放test.flv檔案時又是從哪播放呢,這其中的邏輯不知道是怎樣的,所以問題可能就出現在這裡。按照雷神的例子,我在碼流輸出的時候限制了時間,讓碼流跟視訊播放速度同步,但是結果還是不行,播放經常斷,或者重複播放,快取顯然已經比較大,但沒播放多久這些問題就會出現。我已經限制了同步了碼流,顯然快取是不會那麼快滿的,但是播放出問題是怎麼導致的呢,我想跟剛才我提的疑問有點關係,資料是快取在feed1.ffm,但播放的檔案是test.flv,顯然中間ffserver還要把資料轉到test.flv,ffserver是怎麼轉資料的呢,客戶端的播放請求又是怎麼迴應的呢,這其中的邏輯將會影響客戶端的播放效果,從測試的結果看,同步碼流也存在問題,不知道雷神當時測試的時候是不是正常的,或者有沒有同學做過相應的測試,結果又是怎樣的呢,我不知道是不是哪個引數的問題還是哪裡的問題,如果有人測試正常的或者異常的歡迎討論一下。
在此我提出一種解決方法,我是看上面轉載的這篇文章想到的,就是不設定快取檔案feed1.ffm,直接推流到test.flv:
1、不帶緩衝
最簡單的配置檔案如下
Port 9999
RTSPPort9990
BindAddress0.0.0.0
MaxClients1000
MaxBandwidth100000
CustomLog–
#只需要指定待播放的檔案的路徑以及格式資訊即可
<Streamtest.flv>
File "/home/test.flv"
Format flv
</Stream>
#rtsp應用
<Streamtest.mpg>
File"myfile/testvideo/test.mpg"
Format rtp
</Stream>
命令符:
1. 在終端裡輸入ffserver -f /etc/ffserver.conf
2. 在瀏覽器裡或者相關播放器地址裡輸入 http://ipAddr:port/test.flv
備註:1、Port為配置裡面的9999,檔名直接輸入流的檔名即可。
2、實際測試flv等格式都可以播放。
3、測試需要的test.flv的可以使用ffmpeg錄製,命令是
ffmpeg -re -i /home/xxx/Videos/test.mkv /test.flv
結果播放的視訊就正常了,謝天謝地,分享知識和經驗的都是好人。
更新一下:
上面提到的問題是由於這幾行字引起的,註釋掉就好了
#PreRoll 5 #StartSendOnKey #MaxTime 3
相關推薦
ffmpeg與ffserver的協同工作
本文轉自:http://www.cnblogs.com/liushunli/p/5303966.html ffmpeg和ffserver配合使用可以實現實時的流媒體服務,可以實時傳輸來自攝像頭的資料,客戶端可以採用HTTP、RTSP、RTP協議等播放視訊流。 一、
DNS與GTM協同工作原理
客戶訪問www.abc.com的dns請求流程如圖:1, 首先向其所在運營商的Local DNS發起www.abc.com域名的DNS請求,步驟1;2, 運營商的Local DNS伺服器從RootDNS得知www.abc.com由DNS-CTC、DNS-CNC、DNS-USA
如何配置 Apache TomCat 與 CE RAS 9 協同工作
本文中的知識涉及:水晶報表,水晶企業報表應用伺服器 9適用於:沒有對其它版本 TomCat 進行測試(譯者注:本文的配置方法同樣適用於 TomCat 5.x,已在 Tomcat 5.0.19 上進行了測試。)Apache TomCat部署 大綱 如何配置 Apache Tom
zookeeper 與 kafka的協同工作
First of all, zookeeper is needed only for high level consumer. SimpleConsumer does not require zookeeper to work. The main reason zookeeper is needed
node.js 與 redis 與 express 和session協同工作
var RedisStore = require('connect-redis')(express); var redis_ip='192.168.238.135', redis_port ='6379' ; app.use(express.sessio
Spark學習筆記:Spark Streaming與Spark SQL協同工作
Spark Streaming與Spark SQL協同工作 Spark Streaming可以和Spark Core,Spark SQL整合在一起使用,這也是它最強大的一個地方。 例項:實時統計搜尋次數大於3次的搜尋詞 package StreamingDemo i
dubbo協議下的單一長連線與多執行緒併發如何協同工作
開發十年,就只剩下這套架構體系了! >>>
FFmpeg總結(十二)用ffmpeg與nginx實現直播多路流並發播放
xxx 開源 conf ref itl rect arc med rtm 圖:撒哈拉沙漠 下載 nginx 和 nginx-rtmp源碼: http://nginx.org/download/nginx-1.5.10.tar.gz https://github.com/a
交換機&路由器&ARP(欺騙與攻擊)工作原理
交換機 路由器 工作原理交換機工作原理(端口MAC----端口MAC) 交換機根據MAC地址表智能轉發數據幀 根據源MAC地址,自動添加到MAC地址表 根據目的MAC地址,在則轉發,不在則泛洪2.路由器工作原理:(ip---端口) 根據路由表轉發數據包,有則轉發,沒有就丟棄3.ARP:將一個已知
Android 音視頻深入 十四 FFmpeg與OpenSL ES 播放mp3音樂,能暫停(附源碼
FFmpeg OpenSL ES 項目地址https://github.com/979451341/FFmpegOpenslES 這次說的是FFmpeg解碼mp3,數據給OpenSL ES播放,並且能夠暫停。1.創建引擎 slCreateEngine(&engineObject,0,NULL,
Gitlab教程2 —— 多人協同工作(清晰)
onf 我們 track ron 分享圖片 自動創建 默認值 產生 文本 gitlab使用 —— 多人協同工作(重要技能) 學習鏈接: http://herry2013git.blog.163.com/blog/static/21956801120134111124075
軟件需求工程與建模 -小組工作總結及成員心得
需求工程 工程 一起 xamarin nbsp 開心 學習生活 有意 可能 一、小組工作總結: 時間總是飛快流逝,為期近兩個月的學習、考試以及項目工作中,這學期又過去了。 而將目光聚集到項目上來,我們小組的項目完成度倒也是差強人意了:前期的需求獲取、分析大家都完成的
FFmpeg 與媒體文件關系
ron 視頻流 使用 tex mpeg 相互 ner 媒體文件 avstream 1. 容器/文件(Container/File):即特定格式的多媒體文件,比如MP4,flv,mov等。 2. 媒體流(Stream):表示在時間軸上的一段連續的數據,比如一段聲音數據、一段視
深入剖析與實戰Activiti6工作流引擎
dea ref for 數據庫 2-2 核心api 流程引擎 簡介 ogg 課程目錄第1篇 教程簡介1-1教程導學; 第2篇 工作流入門:2-1本篇概述2-2工作流簡介2-3工作流引擎技術選型2-4Activiti6.0快速體驗-部署環境簡介2-5Activiti6.0快速
java中類和對象如何協同工作, 這樣工作有什麽好處?
begin enc mark public class htm window對象 tcl 分配 4.object和Class配合工作原理 (視頻下載) (全部書籍) 【新手可忽略不影響繼續學習】 Class是"類"的意思,是抽象的,並沒有具體的說是哪個東西。而objec
使用Git與GitHub協同開發並搭建私有GitLab代碼托管服務器
tlab conflict mixed its ssh 令行 mas windows安裝 emc 目錄 [TOC] Git的發展史 Linus在1991年創建了開源的Linux,從此全世界的工程師參與了Linux的開發,期初Linus是通過手動diff的方式進行代碼審核和合
ping 與 traceroute 的工作原理分析
一、ping ping 程式的主要目的是測試主機是否可達,它傳送 ICMP 回顯請求報文給目的主機,並等待返回 ICMP 回顯應答 ping 程式一般會週期性持續地傳送
辭職之後在家的掙扎與老爸的工作
今天是2018年11月14日,離2018年6月10日,有大概接近5個月吧,這五個月,日子相當不好過啊,可能今年本命年,特別的倒黴,也可能是自己自找的,但是今年發生的事,真的我也是表示很無賴,我也沒有辦法,沒有想到會有這麼多的問題,現在在寫這篇隨筆的時候,我是離職之後,身上已經身無分文了,而且找了近一個月的工作
成功與失敗取決於工作流
記得有一家國內知名的國企,在2013年時整合了各個地區的集團分公司,銷售公司都搬到一塊兒地兒進行集中生產辦公。按理說這是大好事,能集中精力專註產品質量,抓好各個研發、生產、銷售環節。但由於各個分公司協調不到位,就導致了工作流程環節脫序、扯皮的事件發生。因此,國企的管理者就引
SELinux安全模型的核心思想與三種工作模式
enforce 權限 永久 iss linux社區 ive con 生產 調試 什麽是SELinux?在內核2.6版本之前Linux的安全模型叫DAC(Discretionary Access Contorl,即自主訪問控制)。DAC的核心思想:進程想要訪問某資源,只需要擁