node 視頻服務(wù)器 切片ffmpeg

node 視頻服務(wù)器 切片ffmpeg

第一部分 音視頻相關(guān)概念

1.1 視頻相關(guān)概念

1.1.1 分辨率

分辨率是用于度量圖像內(nèi)數(shù)據(jù)量多少的一個參數(shù)丹擎,通常表示成ppi。通常兼贡,“分辨率”被表示成每一個方向上的像素數(shù)量,比如640x480等岳遥。前者為圖片長度已旧,后者為圖片的寬度,兩者相乘得出的是圖片的像素撒妈,長寬比一般為4:3恢暖。
分辨率越高,越清晰

image.png
1.1.2 比特率[碼率]

在電信和電腦運算領(lǐng)域狰右,比特率(英語:Bit rate杰捂,變量R[1])是單位時間內(nèi)傳輸送或處理的比特的數(shù)量。同樣分辨率下棋蚌,視頻文件的碼流越大嫁佳,壓縮比就越小,畫面質(zhì)量就越高谷暮。

壓縮同一個視頻蒿往,視頻編碼率越大,文件體積越大湿弦。視頻編碼率越大瓤漏,畫質(zhì)越好,馬賽克越少颊埃。

1.1.3 幀數(shù)

一幀就是一副靜止的畫面蔬充,連續(xù)的幀就形成動畫,如電視圖象等班利。每秒鐘播放的圖片數(shù)饥漫,單位 fps(英文:Frames Per Second),每秒的幀數(shù)或者幀率表示視頻文件或者圖形處理器場景時每秒鐘能夠更新的次數(shù)罗标。每秒鐘幀數(shù) (fps) 愈多庸队,所顯示的動作就會愈流暢。

一般情況下馒稍,如果能夠保證游戲畫面的平均FPS能夠達到30幀/秒皿哨,那么畫面已經(jīng)基本流暢;能夠達到50幀/秒纽谒,就基本可以體會到行云流水的感覺了证膨。一般人很難分辨出60 幀/秒與100幀/秒有什么不同。

1.1.4 幀率鼓黔、分辨率央勒、碼率的關(guān)系

摘錄自:幀率分辨率碼流的關(guān)系以及DVR硬盤容量計算方法

幀率是每秒圖像的數(shù)量,分辨率表示每幅圖像的尺寸即像素數(shù)量澳化,碼流是經(jīng)過視頻壓縮后每秒產(chǎn)生的數(shù)據(jù)量崔步,而壓縮是去掉圖像的空間冗余和視頻的時間冗余
所以

  1. 對于靜止的場景缎谷,可以用很低的碼流獲得較好的圖像質(zhì)量井濒,
  2. 對于劇烈運動的場景,可能用很高的碼流也達不到好的圖像質(zhì)量,所以結(jié)論是設(shè)置幀率表示您要的實時性瑞你,設(shè)置分辨率是您要看的圖像尺寸大小酪惭,而碼率的設(shè)置取決于攝像機及場景的情況,通過現(xiàn)場調(diào)試者甲,直到取得一個可以接受的圖像質(zhì)量春感,就可以確定碼流大小。
image.png

1.2 ffmpeg

1.2.1 ffmpeg是什么虏缸?

FFmpeg是一個自由軟件鲫懒,可以運行音頻和視頻多種格式的錄影、轉(zhuǎn)換刽辙、流功能窥岩,包含了libavcodec——這是一個用于多個項目中音頻和視頻的解碼器庫,以及l(fā)ibavformat——一個音頻與視頻格式轉(zhuǎn)換庫扫倡。

“FFmpeg”這個單詞中的“FF”指的是“Fast Forward”

此計劃由幾個組件組成:

ffmpeg——一個命令行工具谦秧,用來對視頻文件轉(zhuǎn)換格式,也支持對電視卡即時編碼
ffserver——一個HTTP多媒體即時廣播流服務(wù)器撵溃,支持時光平移
ffplay——一個簡單的播放器疚鲤,基于SDL與FFmpeg庫
libavcodec——包含全部FFmpeg音頻/視頻編解碼庫
libavformat——包含demuxers和muxer庫
libavutil——包含一些工具庫
libpostproc——對于視頻做前處理的庫
libswscale——對于視頻作縮放的庫
1.2.2 ffmpeg配置

以Mac為例,采用Homebrew下載ffmpeg; 步驟簡單缘挑,就帶過了集歇。

brew info ffmpeg
brew install ffmpeg
1.2.3 ffmpeg常用的命令

這個博客寫的太詳細了ffmpeg命令行參數(shù)中文詳解,作為入門學(xué)習(xí),摘錄相較常用的幾個試試手语淘。

第一個需求
1. 輸出視頻诲宇、圖片詳細信息;
2. 采用【默認格式】導(dǎo)出視頻惶翻、圖片姑蓝。

ffmpeg -i [視頻路徑]

沒事注意下相片、視頻
看下一個原視頻包含多少信息B来帧7挠!颅筋!

$ ffmpeg -i iphone.MOV

ffmpeg version 3.3.4 Copyright (c) 2000-2017 the FFmpeg developers
  built with Apple LLVM version 8.1.0 (clang-802.0.42)
  configuration: --prefix=/usr/local/Cellar/ffmpeg/3.3.4 --enable-shared --enable-pthreads --enable-gpl --enable-version3 --enable-hardcoded-tables --enable-avresample --cc=clang --host-cflags= --host-ldflags= --enable-libmp3lame --enable-libx264 --enable-libxvid --enable-opencl --enable-videotoolbox --disable-lzma --enable-vda
  libavutil      55. 58.100 / 55. 58.100
  libavcodec     57. 89.100 / 57. 89.100
  libavformat    57. 71.100 / 57. 71.100
  libavdevice    57.  6.100 / 57.  6.100
  libavfilter     6. 82.100 /  6. 82.100
  libavresample   3.  5.  0 /  3.  5.  0
  libswscale      4.  6.100 /  4.  6.100
  libswresample   2.  7.100 /  2.  7.100
  libpostproc    54.  5.100 / 54.  5.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'iphone.MOV':

-----------手機信息----------------
  Metadata:
    major_brand     : qt
    minor_version   : 0
    compatible_brands: qt
    creation_time   : 2017-10-13T11:05:00.000000Z
-----------地理位置-已暴露位置宙暇。。议泵。-------------
    com.apple.quicktime.location.ISO6709: +31.2388+121.4454+014.240/
    com.apple.quicktime.make: Apple
    com.apple.quicktime.model: iPhone 6s Plus
    com.apple.quicktime.software: 11.0.3
    com.apple.quicktime.creationdate: 2017-10-13T19:04:59+0800
---------------------------
#-----時長03.10----6.1 MB
#-----bitrate:15642 kb/s 
#-----分辨率: 1920x1080
#-----29.98 fps
#-----H.264
  Duration: 00:00:03.10, start: 0.000000, bitrate: 15642 kb/s
    Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709), 1920x1080, 15528 kb/s, 29.98 fps, 29.97 tbr, 600 tbn, 1200 tbc (default)
    Metadata:
      rotate          : 90
      creation_time   : 2017-10-13T11:05:00.000000Z
      handler_name    : Core Media Data Handler
      encoder         : H.264
    Side data:
      displaymatrix: rotation of -90.00 degrees
      
#----- 音頻編碼:Audio: aac    
      
    Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, mono, fltp, 93 kb/s (default)
    Metadata:
      creation_time   : 2017-10-13T11:05:00.000000Z
      handler_name    : Core Media Data Handler
    Stream #0:2(und): Data: none (mebx / 0x7862656D), 0 kb/s (default)
    Metadata:
      creation_time   : 2017-10-13T11:05:00.000000Z
      handler_name    : Core Media Data Handler
    Stream #0:3(und): Data: none (mebx / 0x7862656D), 0 kb/s (default)
    Metadata:
      creation_time   : 2017-10-13T11:05:00.000000Z
      handler_name    : Core Media Data Handler
At least one output file must be specified

采用【默認格式】導(dǎo)出視頻占贫、圖片。

默認將視頻導(dǎo)出out.mp4
$ ffmpeg -i iphone.mp4 out.mp4
.....

$ ffmpeg -i iphone.MOV
先口。型奥。瞳收。。
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'out.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf57.71.100
 ---------------------------
#-----時長03.10----6.1 MB ---> 003.14----2 MB
#-----bitrate:15642 kb/s --> 5228 kb/s
#-----分辨率: 1920x1080 ->1920x1080 
#-----29.98 fps -> 29.97 fps
#-----H.264   
  Duration: 00:00:03.14, start: 0.000000, bitrate: 5228 kb/s
    Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1080x1920, 5198 kb/s, 29.97 fps, 29.97 tbr, 30k tbn, 59.94 tbc (default)
    Metadata:
      handler_name    : VideoHandler
    Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, mono, fltp, 71 kb/s (default)
    Metadata:
      handler_name    : SoundHandler
At least one output file must be specified

第二個需求
----------視頻基本參數(shù)
-b:v bitrate 設(shè)置比特率, 缺省200kb/s(該數(shù)值依據(jù)轉(zhuǎn)發(fā)的文章, 本人未驗證).
-r fps 設(shè)置幀率. 缺省25(該數(shù)值依據(jù)轉(zhuǎn)發(fā)的文章, 本人未驗證)
-s size 設(shè)置幀大小 格式為WXH 缺省160X128. 默認為與源相同大小. 下面的簡寫也可以直接使用: Sqcif 128X96 qcif 176X144 cif 252X288 4cif 704X576
-aspect aspect 設(shè)置橫縱比 4:3 16:9 或 1.3333 1.7777
----------音頻基本參數(shù)
-ab bitrate 設(shè)置音頻碼率. 有些版本是(-b:a bitrate)
-ar freq 設(shè)置音頻采樣率
-ac channels 設(shè)置通道 缺省為與輸入相同.
-an 不使能音頻紀(jì)錄
-acodec codec 使用codec編解碼

設(shè)置幀率


ffmpeg -i test2.mp4  -codec:v libx264 -codec:a mp3 -map 0 -f ssegment -segment_format mpegts -segment_list playlist.m3u8 -segment_time 5 out%03d.ts


ffmpeg -i input.mp4 -c:v libx264 -c:a aac -strict -2 -f hls output.m3u8

time ffmpeg -i test2.mp4 -c:v libx264 -c:a aac -strict -2 -f hls -hls_list_size 0 -hls_time 5 output.m3u8 


#時間
time ffmpeg -i test2.mp4 -strict -2 -f hls -hls_list_size 0 -hls_time 5 output.m3u8 

參考

音視頻相關(guān)參數(shù)總結(jié)
ffmpeg 入門
幀率分辨率碼流的關(guān)系以及DVR硬盤容量計算方法
ffmpeg支持多核操作
在子進程中操作
FFmpeg源代碼簡單分析:avcodec_open2()

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末厢汹,一起剝皮案震驚了整個濱河市缎讼,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌坑匠,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,544評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件卧惜,死亡現(xiàn)場離奇詭異厘灼,居然都是意外死亡,警方通過查閱死者的電腦和手機咽瓷,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評論 3 392
  • 文/潘曉璐 我一進店門设凹,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人茅姜,你說我怎么就攤上這事闪朱。” “怎么了钻洒?”我有些...
    開封第一講書人閱讀 162,764評論 0 353
  • 文/不壞的土叔 我叫張陵奋姿,是天一觀的道長。 經(jīng)常有香客問我素标,道長称诗,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,193評論 1 292
  • 正文 為了忘掉前任头遭,我火速辦了婚禮寓免,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘计维。我一直安慰自己袜香,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,216評論 6 388
  • 文/花漫 我一把揭開白布鲫惶。 她就那樣靜靜地躺著蜈首,像睡著了一般。 火紅的嫁衣襯著肌膚如雪剑按。 梳的紋絲不亂的頭發(fā)上疾就,一...
    開封第一講書人閱讀 51,182評論 1 299
  • 那天,我揣著相機與錄音艺蝴,去河邊找鬼猬腰。 笑死,一個胖子當(dāng)著我的面吹牛猜敢,可吹牛的內(nèi)容都是我干的姑荷。 我是一名探鬼主播盒延,決...
    沈念sama閱讀 40,063評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼鼠冕!你這毒婦竟也來了添寺?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,917評論 0 274
  • 序言:老撾萬榮一對情侶失蹤懈费,失蹤者是張志新(化名)和其女友劉穎计露,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體憎乙,經(jīng)...
    沈念sama閱讀 45,329評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡票罐,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,543評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了泞边。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片该押。...
    茶點故事閱讀 39,722評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖阵谚,靈堂內(nèi)的尸體忽然破棺而出蚕礼,到底是詐尸還是另有隱情,我是刑警寧澤梢什,帶...
    沈念sama閱讀 35,425評論 5 343
  • 正文 年R本政府宣布奠蹬,位于F島的核電站,受9級特大地震影響嗡午,放射性物質(zhì)發(fā)生泄漏罩润。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,019評論 3 326
  • 文/蒙蒙 一翼馆、第九天 我趴在偏房一處隱蔽的房頂上張望割以。 院中可真熱鬧,春花似錦应媚、人聲如沸严沥。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,671評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽消玄。三九已至,卻和暖如春丢胚,著一層夾襖步出監(jiān)牢的瞬間翩瓜,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,825評論 1 269
  • 我被黑心中介騙來泰國打工携龟, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留兔跌,地道東北人。 一個月前我還...
    沈念sama閱讀 47,729評論 2 368
  • 正文 我出身青樓峡蟋,卻偏偏與公主長得像坟桅,于是被迫代替她去往敵國和親华望。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,614評論 2 353