ffprobe - 从管道获取文件信息

And*_*kov 7 ffmpeg ffprobe

我有一个oog文件(它由来自pbx Asterisk记录的两个audiostreams的sox混合)我正在尝试用ffprobe获取文件信息.当我使用像

cat %filename%.ogg | ffprobe -i - 
Run Code Online (Sandbox Code Playgroud)

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

ffprobe -i %filename%
Run Code Online (Sandbox Code Playgroud)

一切正常,我得到文件信息.可能有什么不对?文件内容?

Pau*_*lgo 7

从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"
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我想你可以用cat获取探针,你有没有要求捕获文件内容?如果不是只使用没有猫的ffprobe.

  • 他特意要求输入*来自管道* - 而不是文件!谢谢,但没用,他说他有文件输入的持续时间...... (7认同)

小智 5

只是简单说明一下,管道输入ffprobe似乎工作得很好。使用连字符代替输入文件,您就可以开始比赛了。以下是我的系统上的随机视频文件的示例:

cat 01.mp4 | ffprobe -show_format -pretty -loglevel quiet -
Run Code Online (Sandbox Code Playgroud)

返回:

[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]
Run Code Online (Sandbox Code Playgroud)