amazon-s3 - 如何从媒体文件中判断它是视频还是音频?

标签 amazon-s3 audio video ffmpeg aws-media-convert

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

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

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

所以我的问题是; 从媒体文件中判断它只是视频还是音频的最佳方法是什么? ffmpeg 或 ffprobe 可能可以远程执行此操作,但我只是对这些工具了解不够深入,所以我不完全确定它只能按照我描述的方式工作。

最佳答案

你可以使用

ffprobe -v quiet -print_format json -show_format -show_streams sample.mp4

上述命令输出输入文件(此处:sample.mp4)的参数以及音频和视频流的详细信息。您可以看到示例输出 here .

您感兴趣的是 .streams[].codec_type 来确定输入文件是否仅包含音频、仅视频或两个流。您可以使用jq就此而言,例如:

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

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

关于amazon-s3 - 如何从媒体文件中判断它是视频还是音频?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66366003/

相关文章:

amazon-web-services - AWS 策略必须包含有效的版本字符串

apache-spark - Amazon s3a 使用 Spark-redshift 库返回 400 错误请求

android - 使用 audioSessionId 值来实例化 AudioFx 类?

audio - 如何处理音频流中的时钟偏差

azure - Azure Blob 存储是否支持服务器端加密

python - 如何使用 Python 将 Amazon Ion 文件转换为 JSON 格式?

android - 放置对象时播放声音Android

video - 为什么在使用 youtube-dl 设置代理参数时无法下载视频标题?

用于输入表面和音频的 Android MediaMuxer

ios - 是否可以将两个视频文件合并为一个文件,iOS 中的一个屏幕?