2014-01-07 95 views
3

我生成使用FFMPEG HLS段如何優化FFMPEG H264/AAC轉換。這裏是我正在使用的命令:同時產生HLS段太

ffmpeg -i「rtmp:// localhost/oflaDemo/33/hlsopt3 live = 1」-y -c:v libx264 -b:v 1000k -vprofile baseline -preset medium -x264opts level = 41 -threads 4 -s 480x360 -map 0:v -c:a libfaac -b:a 160000 -ac 1 -hls_time 3 -hls_list_size 3 -hls_wrap 10 -start_number 1 hlsopt3.m3u8

我是在Ubuntu 12.04上工作,並使用RED5 1.0.2作爲流媒體服務器,並且我想在android和ios設備上流式傳輸視頻。但是設備上的回放非常乾淨,他們不能流暢播放視頻。另外我的服務器的CPU利用率超過100%。

這麼多的研究後,我發現,CPU使用率是由於H264/MPEG-4 AAC轉換,但沒有做轉換,它不會對iOS和Android設備上播放。

所以,請給我建議任何解決方案。我如何在移動設備上流暢播放,並節省CPU利用率。

請幫助我,我幾乎高腰在該10天。

任何幫助將非常感激。

+0

你應該總是包括完整的'ffmpeg'控制檯輸出。請突出顯示您的命令和控制檯輸出,然後按'ctrl' +'k'格式化。問題**不**關於編程在這裏是偏離主題的。你的問題可以遷移到[su]。 – LordNeckbeard

回答

3

我發現爲什麼ffmpeg的使用CPU的100%,爲什麼在設備上顛簸視頻顯示的原因。這是因爲我沒有提到幀速率。

-r 24

ffmpeg -i "rtmp://localhost/oflaDemo/33/hlsopt6 live=1" -y -c:v libx264 \ 
-b:v 1000k -r 24 -vprofile baseline -preset medium -x264opts level=41 \ 
-threads 4 -s 480x360 -map 0:v -c:a libfaac -b:a 160000 -ac 1 -hls_time 3 \ 
-hls_list_size 2 -hls_wrap 10 -start_number 1 hlsopt6.m3u8 

現在是播放順利上的所有設備,並且還FFMPEG採取較少的CPU。

+0

您通常不需要聲明輸出幀速率:輸出將簡單地使用與輸入相同的幀速率。 'ffmpeg'將簡單地刪除或複製幀以達到您想要的輸出幀速率。 – LordNeckbeard

+0

是的,你是對的但是在通過RED5流式傳輸的情況下如果我們在將RTMP流式傳輸視頻轉換爲H264/MPEG-4 Aac時沒有放置幀速率,那麼視頻的播放就會變得不穩定。這就是爲什麼需要在FFMPEG中定義輸出幀速率的原因。 –

+0

我測試了你的命令。它的輸出在文件上。有沒有辦法將hls輸出作爲feed發送給webcaster服務器? – sajad