Получение «неспособности декодировать поля APP» при воспроизведении потока через веб-камеру USB через ffplay - PullRequest
1 голос
/ 31 марта 2019

Я пытаюсь воспроизвести поток USB-веб-камеры (не уверен, в каком формате это ..), используя ffplay в Windows.Я могу смотреть видео без каких-либо проблем, но я продолжаю получать ошибку ниже в консоли.

ffplay.exe -f dshow -i video = "Logitech HD Webcam C615" -loglevel debug

[mjpeg @ 97a118cc80] не удается декодировать поля приложения: неверные данныенайдено при обработке ввода проверка журналов для получения более подробной информации

Неужели мне действительно нужно беспокоиться об этой ошибке?Или любой фильтр, который мне нужно указать в команде, чтобы получить эту ошибку.

Примечание. Я попытался сохранить поток в файл, используя ffmpeg, получив ту же проблему.

Заранее спасибо.

1 Ответ

1 голос
/ 01 июня 2019

Эти полевые сообщения APP не являются ошибками.То, что вы видите, это запатентованный Logitech формат motion-jpeg, который они используют во многих своих веб-камерах.Я видел это в C270 и более новом c922, например.Поток mjpeg содержит последовательность изображений jpeg, некоторые являются ключевыми кадрами, полным изображением, а некоторые являются другими кадрами, такими как дельта-кадры, описывающими различия между кадрами.Logitech встраивает поток H264 в поток mjpeg, прикрепляя данные H264 к фреймам jpeg в виде вложений APP, то есть это поток внутри потока.Когда вы воспроизводите или транскодируете данные из потока mjpeg, ffmpeg работает с этими приложениями APP и не знает, что с ними делать.Я считаю, что такие программы, как Skype, могут читать как внешний поток mjpeg, так и внутренний поток H264.

Если вы хотите убедиться в этом сами, вы можете кодировать небольшое видео из потока mjpeg вашей камеры,затем извлеките изображения jpeg, затем просмотрите структуру изображений jpeg, и вы увидите встроенное видео.

# create a small mp4, copying mjpeg stream off the cam for a second or two
$ ffmpeg -f v4l2 -input_format mjpeg -i /dev/video0 -c:v copy test.mp4

# extract the unaltered jpeg files inside the stream
$ ffmpeg -i test.mp4 -vcodec copy %03d.jpg

# view any of the jpeg files for APP attachments
$ exiv2 -pS 001.jpg

STRUCTURE OF JPEG FILE: 001.jpg address | marker       |  length | data
   0 | 0xffd8 SOI  
   2 | 0xffe0 APP0  |      33 | AVI1.....x.x....................
  37 | 0xffdb DQT   |      67 
 106 | 0xffdb DQT   |      67 
 175 | 0xffdd DRI   |       4 
 181 | 0xffe0 APP0  |       4 | ....
 187 | 0xffc0 SOF0  |      17 
 206 | 0xffda SOS  

См. эти вложения APP0 на jpeg?Это встроенные данные H264, на которые жалуются декодеры / проигрыватели.

...