【问题标题】:ffprobe - getting file info from pipeffprobe - 从管道获取文件信息
【发布时间】:2012-11-25 15:05:48
【问题描述】:

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

cat %filename%.ogg | ffprobe -i - 

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

ffprobe -i %filename%

一切正常,我得到文件信息。 有什么问题?文件内容?

【问题讨论】:

  • 我知道它已经 4 年多了,但我最近试图做类似的事情,而你 can't。大多数格式需要读取整个文件才能计算出持续时间,这就是为什么指定直接文件名有效的原因,因为它可以访问它 - 并且 ffprobe 需要更改!很烦人!你可以用ffmpeg 做一些事情,但这意味着阅读整个文件:ffmpeg -i pipe:0 -f null /dev/null < inputfile.mp4
  • 我刚被这个击中。他们为什么在ffmpeg 上关闭票证?

标签: ffmpeg ffprobe


【解决方案1】:

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

ffprobe -v quiet -print_format json -show_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 的 ffprobe。

【讨论】:

  • 他特别要求输入 来自管道 - 不是文件!谢谢,但没用,他说他有文件输入的持续时间......
  • 这是另一个问题的答案。问题:“如何从管道中读取”,答案:“你可以使用 JSON 格式”,很奇怪,不是吗?我检查了编辑历史 - 问题没有改变。 (stackoverflow.com/posts/13763047/revisions)
  • 我无法使用 stdout 1> 或 stderr 2> 将格式正确的 json 发送到另一个文件。 -o output.file.json 作为未知选项被拒绝。有什么想法吗?
【解决方案2】:

简单说明一下,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]

【讨论】:

  • bit_rate 如果输入是管道则不存在,如果输入是文件则存在。对此有什么想法吗?
猜你喜欢
  • 2017-03-26
  • 2012-04-11
  • 1970-01-01
  • 2015-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多