FFmpeg:检查 aac 比特流是否格式错误

FFmpeg : Check if the aac bitstream is malformed or not

我想在我的服务器上上传几组视频,稍后在 HTML5 视频标签中播放。但是有的不玩了。

我检查了视频的音频流和视频流,他们有AACH264编解码器respectively.So似乎没有我错了。

然后我尝试重新编码,我收到以下消息:

malformated aac bitstream, use -absf aac_adtstoasc
av_interleaved_write_frame(): Operation not permitted

但是我不想在上传前对视频进行编码,只需要检查视频是否有格式错误的 aac 或 h264 比特流。

PS. Users are limited and will be provided with videos h264 and aac encoded for the upload.

malformated aac bitstream, use -absf aac_adtstoasc 并不意味着输入流无效。而是 re-encoding 无效。这个想法是您使用 MPEG-2 传输流作为输入,其中的 AAC 流使用 ADTS 格式。

如果您想 re-encode 文件并将容器更改为 FLV 或 MP4,例如您必须使用比特流过滤器 aac_adtstoasc 删除 ADTS header:

-bsf:a aac_adtstoasc

要查看输入流,您可以使用 ffprobe。例如:

ffprobe -v quiet -print_format json -show_streams [input]

验证文件完整性是另一回事。

如果输入是 MPEG-TS,它将不会在 HTML5 中播放。检查上传的格式并 re-encode 为 HTML5 支持的格式。