【问题标题】:How to optimize the FFMPEG h264/aac conversion while generating HLS segments too如何在生成 HLS 段的同时优化 FFMPEG h264/aac 转换
【发布时间】:2014-01-24 19:16:38
【问题描述】:

我正在使用 FFMPEG 生成 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/mp​​eg-4 aac 转换造成的,但如果不进行转换,它将无法在 Ios 和 android 设备上播放。

所以请给我建议任何解决方案。如何在移动设备上流畅播放并节省 CPU 使用率。

请帮帮我,我在这方面已经快 10 天了。

任何帮助将不胜感激。

【问题讨论】:

    标签: ffmpeg red5 http-streaming


    【解决方案1】:

    我找到了 FFMPEG 使用 100% 的 CPU 以及为什么设备上显示的视频不流畅的原因。因为我没有提到帧率。

    -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 更少。

    【讨论】:

    • 您通常不需要声明输出帧速率:输出将简单地使用与输入相同的帧速率。 ffmpeg 将简单地丢弃或复制帧以达到您想要的输出帧速率。
    • 是的,你是对的,但是如果通过 RED5 进行流式传输,如果我们在将 RTMP 流式视频转换为 H264/MPEG-4 Aac 时没有设置帧速率,那么视频的播放就会很不稳定。这就是为什么需要在 FFMPEG 中定义输出帧率。
    • 我测试了你的命令。它的输出在文件上。有没有办法将 hls 输出作为提要发送到网络广播服务器?
    • @sajad 刚刚放入您的网络服务器公用文件夹示例“/var/www/html”
    猜你喜欢
    • 2015-05-08
    • 1970-01-01
    • 2020-09-02
    • 2016-01-11
    • 2015-09-03
    • 2018-05-03
    • 2011-08-16
    • 1970-01-01
    • 2017-07-15
    相关资源
    最近更新 更多