ffprobe или avprobe возвращают ошибки простого текста в выводе JSON

Я запускаю 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
{

...

person Justin Jenkins    schedule 10.04.2013    source источник
comment
Параметры идут перед входным файлом, хотя в вашем случае это не имеет значения. Пожалуйста, покажите полный ffprobe вывод консоли без -loglevel quiet файла, который выдает сообщение Unsupported codec.   -  person llogan    schedule 10.04.2013
comment
Полный вывод точно такой же, как и у файла, не имеющего этой проблемы ... единственная разница в том, что между разделом Metadata: и разделом JSON (показанным в посте) выдается ошибка Unsupported codec with id 94213 for input stream 2, хотя я подавленные ошибки.   -  person Justin Jenkins    schedule 10.04.2013
comment
Меня больше интересует информация о версии, которая должна присутствовать в полном выводе.   -  person llogan    schedule 10.04.2013
comment
Я обновил пост...   -  person Justin Jenkins    schedule 10.04.2013
comment
Подтвердите, что использование последней сборки работает должным образом. Статические сборки для Linux, OS X и Windows доступны по ссылкам на странице загрузки FFmpeg. Используйте самую последнюю доступную сборку. Или скомпилируйте из заголовка Git, если предпочитаете [руководство по компиляции Ubuntu].   -  person llogan    schedule 10.04.2013
comment
Я столкнулся с той же проблемой с двоичными файлами, созданными из исходного кода git...   -  person Justin Jenkins    schedule 11.04.2013
comment
Я не могу воспроизвести проблему, даже с образцом, который обычно дает такое сообщение в ffmpeg. Возможно, вы можете предоставить один.   -  person llogan    schedule 11.04.2013
comment
В заголовке опечатка: команда должна быть avprobe, а НЕ avprove. Исправьте, что вы можете раскрыть свой вопрос большему количеству людей, чтобы ответить на него :)   -  person Devy    schedule 08.08.2013
comment
Итак, @JustinJenkins, ты нашел решение? По-видимому, 2 года спустя у меня возникла та же проблема поток не работает на Android iphone"> stackoverflow.com/questions/30590234/   -  person DivinesLight    schedule 04.06.2015


Ответы (1)


То, что вы видите, является выводом STDOUT и STDERR. Если вы хотите отфильтровать Unsupported codec with id 94213 for input stream 2, вы можете, например, отфильтровать вывод STDERR, перенаправив его на /dev/null следующим образом в bash:

avprobe -loglevel quiet -show_format -show_streams file.m4v -of json 2>/dev/null

person Don Nguyen    schedule 19.04.2018