Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon s3 如何从媒体文件判断它是否为';是视频还是音频?_Amazon S3_Audio_Video_Ffmpeg_Aws Media Convert - Fatal编程技术网

Amazon s3 如何从媒体文件判断它是否为';是视频还是音频?

Amazon s3 如何从媒体文件判断它是否为';是视频还是音频?,amazon-s3,audio,video,ffmpeg,aws-media-convert,Amazon S3,Audio,Video,Ffmpeg,Aws Media Convert,我有一些文件-音频和视频文件-存储在aws s3存储桶中,可以有不同的容器和内容,我想将它们发送到aws mediaConvert(MC)。我的问题是,我需要知道文件是音频文件还是视频文件,因为我需要相应地配置MC。服务器上的主应用程序是基于php的,但是这些信息可能没有那么有趣 我有ffmpeg,并且我已经使用ffprobe来获取文件的持续时间,但是我无法从返回的数据中判断它是视频还是音频文件。有人说也许我可以通过使用ffmpeg获得这些信息,但据我所知,这需要我将文件从s3下载到服务器。 还

我有一些文件-音频和视频文件-存储在aws s3存储桶中,可以有不同的容器和内容,我想将它们发送到aws mediaConvert(MC)。我的问题是,我需要知道文件是音频文件还是视频文件,因为我需要相应地配置MC。服务器上的主应用程序是基于php的,但是这些信息可能没有那么有趣

我有ffmpeg,并且我已经使用ffprobe来获取文件的持续时间,但是我无法从返回的数据中判断它是视频还是音频文件。有人说也许我可以通过使用ffmpeg获得这些信息,但据我所知,这需要我将文件从s3下载到服务器。 还有一个s3函数,我可以使用它来获取特定对象的头,该对象包含文件的mime类型,但是它有时返回为视频文件的音频/mpeg,然后错误地配置MC

我还可以检查来自MC的第一个作业创建的错误消息,然后它会告诉我有关问题的信息,我可以使用正确的配置重新发送该文件,但随后该作业被标记为失败并出现错误,这是不正确的

所以我的问题是,如果媒体文件仅为视频或音频,那么最好的方法是什么?ffmpeg或ffprobe可能可以远程执行,但我对工具的了解不够深入,因此我不能完全确定它是否只能以我描述的方式工作。

您可以使用

ffprobe -v quiet -print_format json -show_format -show_streams sample.mp4
上面的命令输出输入文件的参数(此处:
sample.mp4
)以及音频和视频流的详细信息。您可以看到示例输出

您感兴趣的是
.streams[].codec\u键入
,以确定输入文件是否仅包含音频、视频或两个流。您可以为此使用,例如:

ffprobe -v quiet -print_format json -show_format -show_streams sample.mp4 | jq .streams[].codec_type
"video"
"audio"

或者以任何其他方式解析输出JSON。

我明白了,我认为这是我需要的,但我会先检查它,然后再回来使用重复链接。不需要
jq
或下面答案中所示的其他解析工具,因为您可以让
ffprobe
只输出您需要的信息。是的,它看起来像是重复的。然而,我想指出的是,当我发布这个问题时,我无法用上面的信息找到这个问题,我花了几次时间搜索它。虽然我不知道ffprobe能够做到这一点,但我知道如果可能的话,我希望在不将文件下载到服务器的情况下完成这项工作。最后我也没有试过jq,只是从回复中得到了信息。