您能通过检查文件结构来检测 mp4 中的静音部分吗?

您能通过检查文件结构来检测 mp4 中的静音部分吗?

所以我仔细研究了一下 mp4 文件结构,发现它似乎有很多内容。据我了解,内容的布局如下。

video.mp4
├───general file metadata
├───movie data
├───tracks
│   ├───video
│   │   ├───video metadata
│   │   └───video sample data
│   └───audio
│       ├───audio metadata
│       └───audio sample data
└───more metadata

我想知道的是,我能否检测 mp4 中的“静音”部分?(不使用 ffmpeg 而仅使用文件结构)例如设置一个变量,表示“任何低于 20dB 的内容都被视为静音。文件结构内是否有块?如果有,它们以毫秒为单位有多大?如果这就是它的工作原理。

答案1

我可以检测 mp4 中的“静音”部分吗?

您可以使用ffmpeg使用https://ffmpeg.org/使用过滤器检测静音silencedetect

检测音频流中的静音。

当此过滤器检测到输入音频音量小于或等于噪声容忍值,并且持续时间大于或等于检测到的最小噪声持续时间时,它会记录一条消息。

打印的时间和持续时间以秒为单位。 lavfi.silence_startlavfi.silence_start.X元数据键设置在时间戳等于或超过检测持续时间的第一帧上,它包含静音第一帧的时间戳。

lavfi.silence_durationlavfi.silence_duration.Xlavfi.silence_end或元数据键lavfi.silence_end.X在静音后的第一帧上设置。如果启用了单声道,并且分别评估每个通道,则.X使用后缀键,X 对应于通道号。

该过滤器接受以下选项:

noise, n

mono, m

  • 单独处理每个通道,而不是合并处理。默认情况下禁用。

8.103.1 示例

检测 5 秒的静默,噪声容差为 -50dB:

silencedetect=n=-50dB:d=5

使用 ffmpeg 的完整示例,在 silent.mp3 中检测具有 0.0001 噪声容忍度的静默:

ffmpeg -i silence.mp3 -af silencedetect=noise=0.0001 -f null -

来源:FFmpeg 过滤器文档

根据您的使用情况替换mp3为适当的mp4值。dB

相关内容