使用ffmpeg获取文件信息,对象文件被识别为音频? 我正在测试一个C++程序,它应该在一个目录中迭代并找到所有的多媒体文件。我使用了一个迭代例程,对于每个文件,我都尝试使用libav函数打开文件,例如av\u find\u stream\u info,以查找流信息。它适用于多媒体文件,如视频和图像,但问题是它将某些文件识别为音频或视频,例如,它在.o文件中看到音频流!我也尝试过使用av读取帧,效果很好,没有错误!我想避免按扩展名过滤,是否有其他解决方案来查找“可播放”文件

使用ffmpeg获取文件信息,对象文件被识别为音频? 我正在测试一个C++程序,它应该在一个目录中迭代并找到所有的多媒体文件。我使用了一个迭代例程,对于每个文件,我都尝试使用libav函数打开文件,例如av\u find\u stream\u info,以查找流信息。它适用于多媒体文件,如视频和图像,但问题是它将某些文件识别为音频或视频,例如,它在.o文件中看到音频流!我也尝试过使用av读取帧,效果很好,没有错误!我想避免按扩展名过滤,是否有其他解决方案来查找“可播放”文件,c++,ffmpeg,C++,Ffmpeg,谢谢这是一门黑暗的艺术。您必须排除某些常见的文件类型,它们可以伪装成媒体文件。您需要一个已经为您完成了所有工作的包,这就是包及其libmagic组件。(您的平台可能已经有了它。如果它是UNIXy,请尝试man 3 libmagic或查看您是否有file-devel软件包。)必须切换回基于扩展名的过滤,然后仅对通过此过滤的文件(avi、mpeg等)使用ffmpeg。无论如何,谢谢你的建议!

谢谢

这是一门黑暗的艺术。您必须排除某些常见的文件类型,它们可以伪装成媒体文件。您需要一个已经为您完成了所有工作的包,这就是包及其
libmagic
组件。(您的平台可能已经有了它。如果它是UNIXy,请尝试
man 3 libmagic
或查看您是否有
file-devel
软件包。)

必须切换回基于扩展名的过滤,然后仅对通过此过滤的文件(avi、mpeg等)使用ffmpeg。无论如何,谢谢你的建议!