Ffmpeg ffprobe-从管道获取文件信息

Ffmpeg ffprobe-从管道获取文件信息,ffmpeg,ffprobe,Ffmpeg,Ffprobe,我有一个oog文件(它由sox从pbx Asterisk录制的两个音频流中混合而成),我正在尝试使用ffprobe获取文件信息。 当我使用类似 cat %filename%.ogg | ffprobe -i - 我得到无效的文件信息(持续时间:N/A、错误的比特率等) 当我尝试 ffprobe -i %filename% 一切正常,我得到文件信息。 有什么不对劲吗?文件内容?从ffprobe的1.0.7版开始,您甚至可以在JSON格式的输出中获得输出: ffprobe-v quiet-pr

我有一个oog文件(它由sox从pbx Asterisk录制的两个音频流中混合而成),我正在尝试使用ffprobe获取文件信息。 当我使用类似

cat %filename%.ogg | ffprobe -i - 
我得到无效的文件信息(持续时间:N/A、错误的比特率等) 当我尝试

ffprobe -i %filename%
一切正常,我得到文件信息。
有什么不对劲吗?文件内容?

从ffprobe的1.0.7版开始,您甚至可以在JSON格式的输出中获得输出:

ffprobe-v quiet-print\u format json-show\u format Ramp\-\Apathy.mp3

生成以下输出:

{
    "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"
        }
    }
}

我想你可以使用cat获取探针,你对cat文件内容有什么要求吗?如果不使用不带cat的ffprobe。

只需简单说明一下,管道输入到
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]

他特别要求管道输入,而不是文件!谢谢,但是没用,他说他有文件输入的持续时间…这是另一个问题的答案。问题:“如何从管道中读取”,回答:“您可以使用JSON格式”,很奇怪,不是吗?我已经检查了编辑的历史记录-问题没有改变。()我无法使用stdout
1>或stderr
2>将格式良好的json发送到另一个文件
-o output.file.json作为未知选项被拒绝。有什么想法吗?我知道已经过去4年了,但我最近试着做一些类似的事情,而你。大多数格式都需要读取整个文件以计算持续时间,这就是为什么指定直接文件名有效,因为它可以访问该文件-而ffprobe需要更改!非常讨厌!您可以使用
ffmpeg
执行某些操作,但这意味着要读取整个文件:
ffmpeg-i管道:0-f null/dev/null
我刚刚被它击中。为什么他们在
ffmpeg
上关闭票据?
如果输入是管道,则比特率
不存在,如果输入是文件,则存在。有什么想法吗?