ffprobe或avprobe在JSON输出中返回纯文本错误

3
我正在运行 avprobe 命令,以获取关于视频的流信息,格式为 JSON... avprobe -loglevel quiet -show_format -show_streams file.m4v -of json 这基本上与 ffprobeffmpeg -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和一个纯文本的错误,这使得结果成为无效的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, from source, 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
{

...

“full”输出与没有这个“问题”的文件完全相同……唯一的区别在于Metadata:部分和JSON(如帖子中所示)之间,即使我抑制了错误,也会抛出错误Unsupported codec with id 94213 for input stream 2 - Justin Jenkins
我更感兴趣的是完整输出中应该包含的版本信息。 - llogan
请确认使用最新版本的构建是否符合预期。Linux、OS X和Windows的静态构建可通过FFmpeg下载页面上的链接获取。请使用最新可用的构建版本。或者,如果您愿意,可以从Git head编译[Ubuntu编译指南]。 - llogan
标题有一个拼写错误:命令应该是“avprobe”,而不是“avprove”。修正后,您可以向更多人提出问题并获得答案 :) - Devy
2
@JustinJenkins,你找到解决方案了吗?显然,两年后我也遇到了同样的问题。 https://dev59.com/Fl0a5IYBdhLWcg3wNWXA - DivinesLight
显示剩余3条评论
1个回答

0
你所看到的是标准输出和标准错误输出。如果您想过滤掉“Unsupported codec with id 94213 for input stream 2”这个错误信息,您可以通过将标准错误输出重定向到/dev/null,例如在bash中执行以下命令:
avprobe -loglevel quiet -show_format -show_streams file.m4v -of json 2>/dev/null

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接