首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我怎么知道某个文件是视频文件?

我怎么知道某个文件是视频文件?
EN

Stack Overflow用户
提问于 2019-05-31 15:18:04
回答 2查看 1.1K关注 0票数 1

我试图弄清楚某个用户上传的文件是否是视频文件。

我先试了一下,

代码语言:javascript
复制
# a png file

Input #0, png_pipe, from '<file>':
  Duration: N/A, bitrate: N/A
    Stream #0:0: Video: png, rgba(pc), 920x2094 [SAR 4724:4724 DAR 460:1047], 25 tbr, 25 tbn, 25 tbc

# a text file

Input #0, tty, from '<file>':
  Duration: 00:00:00.24, bitrate: 40 kb/s
    Stream #0:0: Video: ansi, pal8, 640x400, 25 fps, 25 tbr, 25 tbn, 25 tbc

# a video file

Input #0, matroska,webm, from '<file>':
  Metadata:
    encoder         : libebml v1.3.5 + libmatroska v1.4.8
    creation_time   : 2017-12-12T20:18:42.000000Z
  <redacted>

但很难弄清楚什么是什么。甚至图像文件和文本文件也算作视频。

我应该将输出matroska,webm,与每个编解码器ffmpeg支持的内容进行比较,还是有更好的方法来做到这一点?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-05-31 18:05:31

使用ffprobe

代码语言:javascript
复制
ffprobe -v error -select_streams v:0 -show_entries stream=codec_type -of csv=p=0 input.mkv

输出video或根本不输出。

问题是ffprobe认为图像是视频,因此您可以另外/或者使用codec_name来帮助确定类型:

代码语言:javascript
复制
ffprobe -v error -select_streams v:0 -show_entries stream=codec_name,codec_type -of default=nw=1 input.png

产出:

代码语言:javascript
复制
codec_name=png
codec_type=video
票数 0
EN

Stack Overflow用户

发布于 2019-05-31 17:35:04

假设您的系统支持file命令,您可以通过-i,--哑剧选项获得文件的mime类型,并在使用ffmpeg进行处理之前隔离它。

代码语言:javascript
复制
# a video file

$ file -i movie.mp4 | cut -d ' ' -f2 | cut -d '/' -f1
--> video

(信用 for cut命令)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56397732

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档