ffprobe 或 avprobe 在 JSON 输出中返回纯文本错误
Posted
技术标签:
【中文标题】ffprobe 或 avprobe 在 JSON 输出中返回纯文本错误【英文标题】:ffprobe or avprobe returning plain text errors in JSON output 【发布时间】:2013-04-01 15:31:05 【问题描述】:我正在运行avprobe
以获取有关JSON
中视频的流信息...
avprobe -loglevel quiet -show_format -show_streams file.m4v -of json
这基本上与ffprobe
或ffmpeg -i
完全相同(我得到同样的错误。)
ffprobe -loglevel quiet -show_format -show_streams file.m4v -print_format json
该命令大部分时间都有效......但是,有时我会有一个视频,其中有一个“不受支持”的奇怪流,我会得到这样的东西(缩写)。
Unsupported codec with id 94213 for input stream 2
"format" :
"filename" : "file.m4v",
"nb_streams" : 3,
"format_name" : "mov,mp4,m4a,3gp,3g2,mj2" ...
当我运行命令时,我返回 JSON
+ plain text
中的一个错误,这使得结果无效 JSON
并且我必须稍后“清理它”。
我正在抑制输出 -loglevel quiet
中的错误,但错误仍然出现。
我如何告诉avprobe/ffprobe
不显示此错误,从而取回正确的JSON
对象?
更长的输出示例
ffprobe
,来自源代码,MacOS
ffprobe version 0.9.1-subsplash, Copyright (c) 2007-2012 the FFmpeg developers
built on Feb 5 2012 01:35:36 with gcc 4.2.1 (Apple Inc. build 5664)
configuration: --prefix=/Volumes/Ramdisk/sw --as=yasm --extra-version=subsplash --disable-shared --enable-static --disable-ffplay --disable-ffserver --enable-gpl --enable-pthreads --enable-version3 --enable-libspeex --enable-libvpx --disable-decoder=libvpx --enable-libmp3lame --enable-libfaac --enable-libvorbis --enable-libtheora --enable-libx264 --enable-avfilter --enable-libopencore_amrwb --enable-libopencore_amrnb --enable-filters --arch=x86_64 --enable-runtime-cpudetect --enable-nonfree
libavutil 51. 32. 0 / 51. 32. 0
libavcodec 53. 42. 4 / 53. 42. 4
libavformat 53. 24. 2 / 53. 24. 2
libavdevice 53. 4. 0 / 53. 4. 0
libavfilter 2. 53. 0 / 2. 53. 0
libswscale 2. 1. 0 / 2. 1. 0
libpostproc 51. 2. 0 / 51. 2. 0
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'file.m4v':
Metadata:
major_brand : mp42
minor_version : 0
compatible_brands: mp42isomavc1
creation_time : 2012-01-01 06:38:43
encoder : HandBrake 0.9.5 2011010300
Duration: 00:30:47.53, start: 0.000000, bitrate: 1558 kb/s
Chapter #0.0: start -0.066733, end 17.784433
Metadata:
title : Chapter 1
...
Stream #0:2(und): Subtitle: mov_text (text / 0x74786574)
Metadata:
creation_time : 2012-01-01 06:38:43
handler_name :
Unsupported codec with id 94213 for input stream 2
...
avprobe
,来自源代码,Ubuntu Linux
avprobe version 10_alpha1-6:10~~git20130307.4be368b-1~quantal1, Copyright (c) 2007-2013 the Libav developers
built on Mar 7 2013 22:12:44 with gcc 4.7 (Ubuntu/Linaro 4.7.2-2ubuntu1)
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'file.m4v':
Metadata:
major_brand : mp42
minor_version : 0
compatible_brands: mp42isomavc1
creation_time : 2012-01-01 06:38:43
encoder : HandBrake 0.9.5 2011010300
Duration: 00:30:47.53, start: 0.000000, bitrate: 1558 kb/s
Chapter #0.0: start -0.066733, end 17.784433
Metadata:
title : Chapter 1
...
Stream #0.2(und): Subtitle: text / 0x74786574
Metadata:
creation_time : 2012-01-01 06:38:43
Unsupported codec with id 94213 for input stream 2
...
【问题讨论】:
选项放在输入文件之前,尽管它不会对您的情况产生影响。请显示提供Unsupported codec
消息的文件的完整ffprobe
控制台输出,不包含-loglevel quiet
。
“完整”输出与没有此“问题”的文件完全相同...唯一的区别是Metadata:
部分和@ 987654343@(显示在帖子中)即使我抑制了错误,也会引发错误Unsupported codec with id 94213 for input stream 2
。
我对应该出现在完整输出中的版本信息更感兴趣。
我更新了帖子...
那么@JustinJenkins 你找到解决方案了吗?显然 2 年后我遇到了同样的问题***.com/questions/30590234/…
【参考方案1】:
您看到的是 STDOUT 和 STDERR 的输出。如果你想过滤掉Unsupported codec with id 94213 for input stream 2
,你可以过滤掉STDERR输出,比如在bash中像这样重定向到/dev/null:
avprobe -loglevel quiet -show_format -show_streams file.m4v -of json 2>/dev/null
【讨论】:
以上是关于ffprobe 或 avprobe 在 JSON 输出中返回纯文本错误的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 avprobe / ffprobe 检测音频采样率?
Mac 上 ffprobe/avprobe 和 youtube_dl 的 Python 问题