iphone - 转码段文件无卡顿,用于 http 直播

标签 iphone ios ffmpeg http-live-streaming transcode

我将一个多播视频流分割成小的 ts 文件,用于我的 HTTP 实时流媒体服务,并且效果很好。然后我发现源的比特率太高(1.5mbps),所以我设置了一个后台作业,使用 FFmpeg 将 ts 文件转码为较小的比特率(500kbps)。问题是 500k .m3u8 播放卡顿(在每个新文件加载时)并且不如 1.5mbps 播放流畅。

我的转码命令行如下:

ffmpeg -i /home/rca/tst.ts -f mpegts -acodec libmp3lame -ar 48000 -ab 64k -vcodec libx264 -b 500k /home/rca/tst.ts

对此有什么想法吗?谢谢!

最佳答案

降低分辨率和/或丢帧。这是您换取较低带宽连接的空间。

幸运的是,一位同事 (@enobrev) 刚刚在审查降低带宽的各种方法方面做了一些出色的工作:

最好从原始未编码格式开始,否则在 ffmpeg 中设置比特率不会有太大作用(尽管会降低分辨率和帧速率)。

ffmpeg -i audio.wav -i "concat:0.avi|1.avi|2.avi"-vcodec libx264 -preset fast -crf 23 -threads 0 -b:v 64000 -r 10 - vf "scale=240:-1"-ab 24k -ar 22050 -map 0 -vbsf h264_mp4toannexb -f segment -segment_time 10 -segment_format mpegts -segment_list autoStream.m3u8 -segment_list_type m3u8 out_lowres_64kbps%d.ts

ffmpeg -i audio.wav -i "concat:0.avi|1.avi|2.avi"-vcodec libx264 -preset fast -crf 23 -threads 0 -b:v 300000 -r 24 - vf "scale=480:-1"-ab 96k -ar 22050 -map 0 -vbsf h264_mp4toannexb -f segment -segment_time 10 -segment_format mpegts -segment_list autoStream.m3u8 -segment_list_type m3u8 out_midres_300kbps%d.ts

ffmpeg -i audio.wav -i "concat:0.avi|1.avi|2.avi"-vcodec libx264 -preset fast -crf 23 -threads 0 -b:v 1200000 -r 24 - vf "scale=640:-1"-ab 192k -ar 44100 -map 0 -vbsf h264_mp4toannexb -f segment -segment_time 10 -segment_format mpegts -segment_list autoStream.m3u8 -segment_list_type m3u8 out_hires_1.2mbps%d.ts

您可以调整更多参数,但在上面我设置了比特率 -b:v、帧率 -r、视频分辨率 -vf 和音频比特率 -ab(我认为)和音频采样率-ar

关于iphone - 转码段文件无卡顿,用于 http 直播,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10949319/

相关文章:

ios - iPhone 和 iPad 之间的不同行为

iphone - 应用程序因 SKPSMTPMessage 类而崩溃

iOS:Google Analytics 和 AdMob 的 CocoaPods 问题

ios - 当用户编辑待处理的 Swift 3 时,防止 View 在 splitview 中消失

iPhone 相机使用 AVCaptureSession 拍摄视频并使用 ffmpeg CMSampleBufferRef 更改 h.264 格式是问题所在。请指教

audio - 如何使用 FFmpeg 获得音频峰值?

ios - 使用一个 UIWebView 加载具有不同按钮的多个 URL -- iOS Swift

c# - 不符合键值编码(Monotouch 和 iOS 6)

android - 如何使用 FFMPEG 从 url 录制/下载 m3u steam 视频

iphone - 如何正确使用 insertRowsAtIndexPaths?