Java Jave从文件中读取视频/音频编解码器

Java Jave从文件中读取视频/音频编解码器,java,file,video,io,Java,File,Video,Io,我有一个混合视频文件的文件夹(用于web显示mp4、ogv、webm的多种格式)。在Java中检索这些文件时,我可以通过从文件名中提取扩展名来验证格式是否有方法从文件中检索其他信息,如视频和音频编解码器数据? 为了创建文件,我在Java中使用ffmpeg将视频文件转换为所需的格式和大小,因此在创建文件时,我确实知道编解码器信息如果它不是自动存储在文件中的某个位置,是否有办法设置元数据或其他内容并手动存储信息,以便我以后检索?我没有使用数据库存储文件位置或其他数据,只需从文件系统中扫描和检索即可。

我有一个混合视频文件的文件夹(用于web显示mp4、ogv、webm的多种格式)。在Java中检索这些文件时,我可以通过从文件名中提取扩展名来验证格式是否有方法从文件中检索其他信息,如视频和音频编解码器数据?


为了创建文件,我在Java中使用ffmpeg将视频文件转换为所需的格式和大小,因此在创建文件时,我确实知道编解码器信息如果它不是自动存储在文件中的某个位置,是否有办法设置元数据或其他内容并手动存储信息,以便我以后检索?我没有使用数据库存储文件位置或其他数据,只需从文件系统中扫描和检索即可。

据我所知,按内容确定文件类型并不容易。您必须做出假设,然后用代码测试这些假设(例如,我认为它是X类型的,因此我将检查X类型文件中始终存在的模式的前Y字节)。

据我所知,根据内容确定文件类型并不容易。您必须做出假设,然后用代码测试这些假设(例如,我认为它是X类型的,因此我将检查X类型文件中始终存在的模式的前Y字节)。

据我所知,根据内容确定文件类型并不容易。您必须做出假设,然后用代码测试这些假设(例如,我认为它是X类型的,因此我将检查X类型文件中始终存在的模式的前Y字节)。

据我所知,根据内容确定文件类型并不容易。您必须做出假设,然后用代码测试这些假设(例如,我认为它是X类型的,所以我将检查X类型文件中始终存在的模式的第一个Y字节)。

视频和音频数据流(例如H.264/AVC视频、AAC、杜比数字音频等)被多路复用(或“多路复用”)在一起的文件格式称为容器格式。MP4就是这样的一种容器格式,它被设计成能够容纳许多不同类型的视频和音频流(参见一些官方注册的类型)

不同的容器格式具有标识所包含的不同媒体流的元数据,以便帮助确定应该使用什么类型的解码器来解码特定媒体流


如果可以(您说您正在使用Java),请尝试使用来确定媒体文件中使用的容器、视频和音频格式(以及其他元数据)。对于所有媒体类型,它可能不是100%可靠的(因为它可能无法识别某些媒体),但考虑到您使用ffmpeg编码(ffprobe是ffmpeg衍生工具),它应该可以完成这项工作。

视频和音频数据流(例如H.264/AVC视频、AAC、杜比数字音频等)是多路复用的(或“多路复用”)在一起的文件格式称为容器格式。MP4就是这样的一种容器格式,它被设计成能够容纳许多不同类型的视频和音频流(参见一些官方注册的类型)

不同的容器格式具有标识所包含的不同媒体流的元数据,以便帮助确定应该使用什么类型的解码器来解码特定媒体流


如果可以(您说您正在使用Java),请尝试使用来确定媒体文件中使用的容器、视频和音频格式(以及其他元数据)。对于所有媒体类型,它可能不是100%可靠的(因为它可能无法识别某些媒体),但考虑到您使用ffmpeg编码(ffprobe是ffmpeg衍生工具),它应该可以完成这项工作。

视频和音频数据流(例如H.264/AVC视频、AAC、杜比数字音频等)是多路复用的(或“多路复用”)在一起的文件格式称为容器格式。MP4就是这样的一种容器格式,它被设计成能够容纳许多不同类型的视频和音频流(参见一些官方注册的类型)

不同的容器格式具有标识所包含的不同媒体流的元数据,以便帮助确定应该使用什么类型的解码器来解码特定媒体流


如果可以(您说您正在使用Java),请尝试使用来确定媒体文件中使用的容器、视频和音频格式(以及其他元数据)。对于所有媒体类型,它可能不是100%可靠的(因为它可能无法识别某些媒体),但考虑到您使用ffmpeg编码(ffprobe是ffmpeg衍生工具),它应该可以完成这项工作。

视频和音频数据流(例如H.264/AVC视频、AAC、杜比数字音频等)是多路复用的(或“多路复用”)在一起的文件格式称为容器格式。MP4就是这样的一种容器格式,它被设计成能够容纳许多不同类型的视频和音频流(参见一些官方注册的类型)

不同的容器格式具有标识所包含的不同媒体流的元数据,以便帮助确定应该使用什么类型的解码器来解码特定媒体流


如果可以(您说您正在使用Java),请尝试使用来确定媒体文件中使用的容器、视频和音频格式(以及其他元数据)。对于所有媒体类型,它可能不是100%可靠的(因为它可能无法识别某些媒体),但考虑到您使用ffmpeg编码(ffprobe是ffmpeg衍生工具),它应该可以完成这项工作。

我认为
ffmpeg
可以从指定为
ffmpeg
实用程序源的文件中自动获取视频和音频格式

如果出于其他目的需要元数据,那么可以尝试使用Red5服务器源代码(java)。有很多读卡器(包括
MP4Reader
)可用于获取元数据

例如,对于mp4文件
mp4
reader = new org.red5.io.mp4.impl.MP4Reader(myFile)
String v = reader.getVideoCodecId();  // e.g. "avc1" (for h.254), "VP6F"
String a = reader.getAudioCodecId();  // e.g. "mp4a" (for aac), ".mp3" (for mp3)
...