好的,我得到了视频格式的基础知识 - 有一些容器格式,然后你有核心视频/音频格式.我想编写一个基于Web的应用程序来确定文件使用的视频/音频编解码器.
我如何以编程方式确定视频编解码器?是否最好通过系统调用使用标准库并解析其输出?(例如ffmpeg,转码等?)
mplayer -identify
会做的.只需调用ffmpeg
一个文件也可以 - 它会在开始时自动打印一组关于输入文件的信息,无论你告诉ffmpeg实际做什么.
当然,如果你想在没有exec调用外部程序的情况下从你的程序中执行它,你可以直接包含avcodec库并运行它自己的识别例程.
虽然你可以实现自己的检测,但鉴于libav*支持的绝对数量的格式,它肯定不如现有的例程.重新发明轮子将是一个相当愚蠢的案例.
Linux的"文件"命令也可以解决问题,但打印出的数据量取决于视频格式.例如,在AVI上,它提供了有关分辨率,FOURCC,fps等的各种数据,而对于MKV文件,它只是说"Matroska数据",不会告诉您内部,甚至是所使用的视频和音频格式.