2014-01-07 60 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