Video streaming 修复HLS流的音频丢失

Video streaming 修复HLS流的音频丢失,video-streaming,http-live-streaming,Video Streaming,Http Live Streaming,我有一个HLS流,它在Android和iOS上退出,但在网络浏览器(flash)上运行良好 编码器:Wirecast Pro 5.0.3 编码器设置:输出格式-(视频)闪存,h.264 480x270 24fps,365 kbps,每48个关键帧(音频)AAC单声道96kbps 44.1hz 流地址: 症状:在iOS/Android系统中,首先音频中断,视频继续播放。然后视频可能会退出。最终情况会变得更糟 我的尝试:我降低了编码器的比特率,升级了硬件。我已经做了速度测试和ping测试来验证带宽不

我有一个HLS流,它在Android和iOS上退出,但在网络浏览器(flash)上运行良好

编码器:Wirecast Pro 5.0.3

编码器设置:输出格式-(视频)闪存,h.264 480x270 24fps,365 kbps,每48个关键帧(音频)AAC单声道96kbps 44.1hz

流地址:

症状:在iOS/Android系统中,首先音频中断,视频继续播放。然后视频可能会退出。最终情况会变得更糟

我的尝试:我降低了编码器的比特率,升级了硬件。我已经做了速度测试和ping测试来验证带宽不是问题。我还验证了我的编码器日志,以确保我的流是流畅的。我还试验了CBR和VBR,结果没有变化

我的CDN是scaleengine


由于网络浏览器的播放效果很好,这似乎是一个flash播放器无法解决的问题,只有iOS播放器才能解决

我注意到唯一奇怪的是,您的媒体播放列表中只引用了3个最新的片段。三通常被认为是绝对下限,可能会导致某些播放器出现问题的播放行为。我建议您将媒体播放列表的大小至少增加到10段

我的媒体播放列表,我指的是“chunklist”文件,内容如下:

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-ALLOW-CACHE:NO
#EXT-X-TARGETDURATION:12
#EXT-X-MEDIA-SEQUENCE:560
#EXTINF:10.367,
media_w958035845_560.ts
#EXTINF:10.033,
media_w958035845_561.ts
#EXTINF:10.134,
media_w958035845_562.ts
您需要在其中引用至少10个.ts文件。您应该如何实现这一点取决于您使用的打包软件-在这一点上,我不熟悉Wirecast功能

这可能是不相关的,但我还应该指出,实际上并非每48帧就有一个关键帧-检查片段表明关键帧模式似乎是“自动”的,这让编码器决定并产生相当随机的关键帧距离(可能48被认为是最大距离?)。不过,这不太可能是您遇到问题的原因

我使用各种工具从不同角度分析流,但是,例如,关键帧的位置可以通过以下步骤看到:

  • 使用FFmpeg将段转换为MP4并删除音频:FFmpeg.exe-i segment.ts-an-vcodec copy-segment.MP4
  • 使用mp4info from转储帧列表:mp4info.exe--显示布局段.mp4

  • 这将创建段中所有帧及其大小、计时和类型的列表。在输出帧中,类型为“I”表示关键帧。

    如果这对任何人都有帮助,我的设置存在许多问题,但影响最大的问题与我的firewire源有关


    我所有的视频都是24fps,但因为我是通过firewire摄取的,所以它实际上是60帧交错的。我在源代码处解交错(这是Wirecast中的一个复选框),性能大大提高

    能否添加有关编码器型号、版本和所用设置的详细信息?你能给我们看一下这条流吗?我更新了问题以包含这些细节。谢谢你。我的CDN从我的RTMP流创建HLS,因此我将与他们联系。我可以问一下你用什么工具来分析这个流吗?@crayingdrills我已经更新了我的答案,以反映我用来分析帧的工具。