首页 > 解决方案 > ffmpeg - 在输出到 rtmp 之前正确处理未对齐的音频/视频输入流

问题描述

我使用名为 MPV 的视频播放器对媒体文件的动态播放列表进行转码。

我将 MPV 的编码输出通过管道传输到 FFMPEG 并将其格式化以用于 rtmp 传输。

但是,播放列表可能包含音频和视频未对齐的媒体,即 - 音频轨道可能比视频轨道短/长。

不管是什么MPV,都只会输出给定的东西。因此,如果我的媒体文件有 1 秒长的音频和 2 秒长的视频,它将输出具有完全相同未对齐的媒体流,而不是在第一次遇到时生成空音频或跳到播放列表中的下一个项目活动流结束 (eof)。

例如,假设我的播放列表中充满了问题媒体,其中每个文件的音频和视频都未对齐:

在此处输入图像描述

如果我将此媒体流输出到流行的流媒体服务的服务器,它可能会导致卡顿和/或 A/V 同步丢失。同样,如果我将此媒体流输出到文件并在 MPV 或其他视频播放器中播放,结果似乎更像这样:

在此处输入图像描述

我尝试以各种方式在 MPV 中解决此问题,尝试了所有可用的相关命令行选项。我什至编写了一个用户脚本来检测“eof”音频并跳到播放列表中的下一个项目,但它不够快并且仍然会导致音频的小间隙。

所以我唯一的希望是在 ffmpeg 中纠正它。在空音频/视频的情况下,我需要一个后备或生成过滤器,可以用静音(音频)或颜色/图像(视频)填充这些空白。

我对任何想法都持开放态度,如果我对 a/v 编码的理解有点偏离,请教育我。

标签: audiovideoffmpegvideo-encodingmpv

解决方案


推荐阅读