如何解決播放FLV視頻卡住不動(dòng)玻熙?試試FFmpeg將FLV轉(zhuǎn)MP4

最近在下載直播視頻時(shí),大器發(fā)現(xiàn)下載的視頻是FLV格式疯攒,在快進(jìn)或者拖動(dòng)播放進(jìn)度條時(shí)嗦随,視頻圖像會(huì)卡住不動(dòng)很長(zhǎng)時(shí)間,極大影響觀看體驗(yàn)敬尺。解決FLV播放問(wèn)題的方法是將FLV轉(zhuǎn)換為大部分設(shè)備都支持的MP4格式枚尼。雖然本文是以FLV轉(zhuǎn)MP4為例,但同樣適用于其他類型視頻文件的轉(zhuǎn)換砂吞,包括WebM署恍、AVI和WMV。

編碼簡(jiǎn)介

FLV格式發(fā)布于2002年蜻直,一經(jīng)推出便迅速成為了網(wǎng)頁(yè)默認(rèn)的視頻格式锭汛,是第一個(gè)在互聯(lián)網(wǎng)上被廣泛使用的視頻格式。

隨著移動(dòng)設(shè)備成為互聯(lián)網(wǎng)的主力軍袭蝗,HTML5取代了大多數(shù)網(wǎng)頁(yè)中的Flash唤殴,MP4取代了FLV容器,MP4成為視頻的事實(shí)標(biāo)準(zhǔn)到腥。由于FLV文件只能在基于Flash的視頻播放器中播放朵逝,F(xiàn)lash被淘汰后,F(xiàn)LV文件要想在移動(dòng)設(shè)備或者不帶Flash的瀏覽器中播放的話乡范,需要將FLV轉(zhuǎn)為MP4格式配名。

要對(duì)視頻進(jìn)行格式轉(zhuǎn)換有非常多的工具,比較常用的是格式工廠(FormatFactory)晋辆,但絕大部分工具都基于FFmpeg或者使用了FFmpeg的編解碼庫(kù)渠脉。直接使用FFmpeg可以更靈活地實(shí)現(xiàn)我們的需求。

在使用FFmpeg工具前需要先下載并在電腦中配置好瓶佳,具體操作方法可以查看大器之前的文章《FFmpeg安裝配置指南》芋膘。

目前常見(jiàn)的MP4文件的視頻和音頻編碼方式分別為H.264和AAC。H.264與MPEG-2和MPEG-4編碼相比霸饲,在同等圖像質(zhì)量條件下壓縮率更高为朋,還能提供連續(xù)、流暢的高質(zhì)量圖像(相當(dāng)于DVD質(zhì)量)厚脉。AAC編碼能夠保證完美的音質(zhì)习寸,極高的壓縮比。AAC與MP3相比傻工,增加了對(duì)立體聲的完美再現(xiàn)霞溪、降噪等特性孵滞,再現(xiàn)CD的音質(zhì)。

flv01.png

FLV容器可以存儲(chǔ)多種視頻和音頻編碼鸯匹,視頻編碼主要有Sorenson Spark坊饶、VP6、H.264忽你,音頻編碼主要有Nellymoser Asao幼东、Speex、MP3科雳「罚可以通過(guò)以下命令查看FLV文件的視頻和音頻編碼:

ffmpeg -i video.flv

然后可以在輸出信息中找到以下信息:

Input #0, flv, from 'video.flv':
  Duration: 02:02:07.46, start: 3758.107000, bitrate: 1007 kb/s
    Stream #0:0: Audio: aac (HE-AAC), 44100 Hz, stereo, fltp
    Stream #0:1: Video: h264 (High), yuv420p(tv, smpte170m/unknown/unknown, progressive), 720x1280, 2000 kb/s, 15 fps, 15 tbr, 1k tbn

編碼轉(zhuǎn)換

實(shí)際上編碼轉(zhuǎn)換可以只用下面的第四種命令,但是對(duì)相同編碼的流重新編碼會(huì)損失數(shù)據(jù)糟秘,并且花費(fèi)更長(zhǎng)的時(shí)間简逮。根據(jù)FLV源文件的編碼格式,F(xiàn)LV轉(zhuǎn)MP4可分為以下四種情況:

1. H.264視頻編碼和AAC音頻編碼

如果FLV文件的編碼分別為H.264和AAC尿赚,直接將視頻和音頻流復(fù)制到MP4即可散庶。此命令僅僅改變數(shù)據(jù)流的容器而無(wú)需重新編碼,視頻和音頻質(zhì)量相同凌净,文件大小基本保持不變悲龟,并且處理速度最快。

ffmpeg -i video.flv -codec copy video.mp4

2. H.264視頻編碼和非AAC音頻編碼

直接復(fù)制視頻流冰寻,音頻流會(huì)自動(dòng)按MP4的標(biāo)準(zhǔn)重新編碼须教。此命令會(huì)對(duì)音頻質(zhì)量造成損失,文件大小可能有一些差異斩芭,處理速度一般轻腺。

ffmpeg -i video.flv -vcodec copy video.mp4

對(duì)于音頻流可以使用-ar指定采樣率(kHz),-ac指定聲道數(shù)量(1:單聲道划乖,2:雙聲道)

ffmpeg -i video.flv -ar 44100 -ac 2 -vcodec copy video.mp4

3. 非H.264視頻編碼和AAC音頻編碼

直接復(fù)制音頻流贬养,視頻流會(huì)自動(dòng)按MP4的標(biāo)準(zhǔn)重新編碼。此命令會(huì)對(duì)視頻質(zhì)量造成損失琴庵,文件大小可能有較大差異误算,處理速度較慢。實(shí)際上這種規(guī)格的文件是非常罕見(jiàn)的细卧。

ffmpeg -i video.flv -acodec copy video.mp4

4. 非H.264視頻編碼和非AAC音頻編碼

如果FLV文件的視頻編碼不是H.264并且音頻編碼不是AAC尉桩,那么視頻和音頻需要按MP4的標(biāo)準(zhǔn)重新編碼。此命令會(huì)對(duì)視頻和音頻質(zhì)量造成損失贪庙,文件大小可能有很大差異,處理速度最慢翰苫。

ffmpeg -i video.flv video.mp4

MOOV放到文件開(kāi)頭

所有的MP4文件都包含MOOV元數(shù)據(jù)止邮。MOOV中記錄了視頻的時(shí)長(zhǎng)和可用音軌的信息这橙,在播放時(shí)可以作為視頻數(shù)據(jù)的索引。

FFmpeg默認(rèn)是將MOOV放在MP4文件的末尾导披。如果是在網(wǎng)頁(yè)中打開(kāi)視頻屈扎,瀏覽器需要下載完整個(gè)文件后才能播放。因此為了節(jié)省網(wǎng)絡(luò)帶寬和加速視頻播放撩匕,有必要將MOOV放在MP4文件的開(kāi)頭鹰晨,使用-movflags faststart選項(xiàng)即可。

ffmpeg -i video.flv -movflags faststart video.mp4

了解FFmpeg的輸出信息

FFmpeg在運(yùn)行過(guò)程中會(huì)輸出以下信息:

  • FFmpeg的版本號(hào)和詳細(xì)的構(gòu)建命令
  • 輸入流的信息 (類型止毕,碼率模蜡,幀率,采樣率扁凛,聲道數(shù))
  • 輸出流的信息
  • 輸入輸出流的對(duì)應(yīng)關(guān)系 (復(fù)制和轉(zhuǎn)碼的情況)
  • 轉(zhuǎn)換的統(tǒng)計(jì)數(shù)據(jù) (時(shí)間忍疾,碼率等)
flv02.png

我是大器,正在建立自己的知識(shí)庫(kù)谨朝,并將這些經(jīng)驗(yàn)分享給你卤妒,請(qǐng)關(guān)注我,一起交流學(xué)習(xí)字币。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末则披,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子洗出,更是在濱河造成了極大的恐慌士复,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,919評(píng)論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件共苛,死亡現(xiàn)場(chǎng)離奇詭異判没,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)隅茎,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,567評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén)澄峰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人辟犀,你說(shuō)我怎么就攤上這事俏竞。” “怎么了堂竟?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,316評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵魂毁,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我出嘹,道長(zhǎng)席楚,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,294評(píng)論 1 292
  • 正文 為了忘掉前任税稼,我火速辦了婚禮烦秩,結(jié)果婚禮上垮斯,老公的妹妹穿的比我還像新娘。我一直安慰自己只祠,他們只是感情好兜蠕,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,318評(píng)論 6 390
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著抛寝,像睡著了一般熊杨。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上盗舰,一...
    開(kāi)封第一講書(shū)人閱讀 51,245評(píng)論 1 299
  • 那天晶府,我揣著相機(jī)與錄音,去河邊找鬼岭皂。 笑死郊霎,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的爷绘。 我是一名探鬼主播书劝,決...
    沈念sama閱讀 40,120評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼土至!你這毒婦竟也來(lái)了购对?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 38,964評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤陶因,失蹤者是張志新(化名)和其女友劉穎骡苞,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體楷扬,經(jīng)...
    沈念sama閱讀 45,376評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡解幽,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,592評(píng)論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了烘苹。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片躲株。...
    茶點(diǎn)故事閱讀 39,764評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖镣衡,靈堂內(nèi)的尸體忽然破棺而出霜定,到底是詐尸還是另有隱情,我是刑警寧澤廊鸥,帶...
    沈念sama閱讀 35,460評(píng)論 5 344
  • 正文 年R本政府宣布望浩,位于F島的核電站,受9級(jí)特大地震影響惰说,放射性物質(zhì)發(fā)生泄漏磨德。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,070評(píng)論 3 327
  • 文/蒙蒙 一吆视、第九天 我趴在偏房一處隱蔽的房頂上張望剖张。 院中可真熱鬧切诀,春花似錦揩环、人聲如沸搔弄。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,697評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)顾犹。三九已至,卻和暖如春褒墨,著一層夾襖步出監(jiān)牢的瞬間炫刷,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,846評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工郁妈, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留浑玛,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,819評(píng)論 2 370
  • 正文 我出身青樓噩咪,卻偏偏與公主長(zhǎng)得像顾彰,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子胃碾,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,665評(píng)論 2 354