2012-12-07 53 views
4

我有一个OOG文件(它是由SOX由PBX Asterisk的两个audiostreams混合),我试图让与ffprobe文件信息。 当我使用类似ffprobe - 获取文件信息从管

cat %filename%.ogg | ffprobe -i - 

我得到无效的文件信息(时间:N/A,错误的比特率等) 当我试图

ffprobe -i %filename% 

一切正常,我获取文件信息。 什么可能是错的?文件内容?

+2

我知道它在4年之后,但我想最近做同样的事情,你[不可以](https://trac.ffmpeg.org/ticket/4358)。大多数格式需要读取整个文件来计算持续时间,这就是为什么指定直接文件名的原因,因为它可以访问它 - 并且ffprobe需要更改!很烦人!你可以用'ffmpeg'做一些事情,但这意味着读取整个文件:'ffmpeg -i pipe:0 -f null/dev/null Rich

回答

5

由于ffprobe的版本1.0.7,你甚至可以得到一个JSON格式输出的输出:

ffprobe -v安静-print_format JSON -show_format斜坡\ - \ Apathy.mp3

它产生follwing输出:

{ 
    "format": { 
     "filename": "Ramp - Apathy.mp3", 
     "nb_streams": 2, 
     "format_name": "mp3", 
     "format_long_name": "MP2/3 (MPEG audio layer 2/3)", 
     "start_time": "0.000000", 
     "duration": "203.638856", 
     "size": "4072777", 
     "bit_rate": "159999", 
     "tags": { 
      "title": "Apathy", 
      "artist": "Ramp", 
      "album": "Evolution Devolution Revolution", 
      "date": "1999", 
      "genre": "Metal" 
     } 
    } 
} 

我认为你可以使用猫探头,你有猫的文件内容有任何要求?如果不是只使用ffprobe没有猫。

+6

他特别要求从管道输入* *不是文件!谢谢,但没用,他说他有时间与文件输入... – Rich

+0

这是回答其他问题。问:“如何从管道读”,回答:“你可以使用JSON格式”,奇怪,不是吗?我检查了编辑的历史 - 问题没有改变。 (https://stackoverflow.com/posts/13763047/revisions) – maxkoryukov

1

只是一个快速照会说,输入到ffprobe管道似乎工作就好了。在地方输入文件的使用连字符,你是去比赛。下面是我的系统上的随机视频文件的例子:

cat 01.mp4 | ffprobe -show_format -pretty -loglevel quiet - 

返回:

[FORMAT] 
filename=pipe: 
nb_streams=2 
nb_programs=0 
format_name=mov,mp4,m4a,3gp,3g2,mj2 
format_long_name=QuickTime/MOV 
start_time=N/A 
duration=0:02:56.400000 
size=N/A 
bit_rate=N/A 
probe_score=100 
TAG:major_brand=isom 
TAG:minor_version=512 
TAG:compatible_brands=isomiso2mp41 
TAG:creation_time=1970-01-01T00:00:00.000000Z 
TAG:title=yy.mp4 
TAG:encoder=Lavf52.78.3 
[/FORMAT]