PDA

Показать полную графическую версию : Проблемы при декодировании mpeg2 потока (ffmpeg, libavcodec)


urello
11-09-2009, 18:22
Добрый день!
Дома имеется тарелка и ресивер Dreambox 500s
Есть желание смотреть тв с работы.
Дома поднял сервер для ужатия видео, так как Dreambox отдаёт с битрейтом 30 Мб/с, что накладно.
При сжатии видео периодически выскакивают сообщения такого плана.

[mpeg2video @ 0x80370c010]ac-tex damaged at 23
[mpeg2video @ 0x80370c010]invalid cbp at 4 25
[mpeg2video @ 0x80370c010]mb incr damaged
[mpeg2video @ 0x80370c010]ac-tex damaged at 1 27
[mpeg2video @ 0x80370c010]invalid cbp at 7 28
[mpeg2video @ 0x80370c010]ac-tex damaged at 23 30
[mpeg2video @ 0x80370c010]slice mismatch
[mpeg2video @ 0x80370c010]invalid mb type in P Frame at 10 31
[mpeg2video @ 0x80370c010]ac-tex damaged at 8 32
[mpeg2video @ 0x80370c010]ac-tex damaged at 17 33
[mpeg2video @ 0x80370c010]ac-tex damaged at 11 34
[mpeg2video @ 0x80370c010]invalid cbp at 3 35
[mpeg2video @ 0x80370c010]Warning MVs not available
[mpeg2video @ 0x80370c010]concealing 484 DC, 484 AC, 484 MV errors


При этом на клиенте картинка замирает, появляются дефекты.
При передаче потока без сжатия картинка отличная.
Можно ли решить проблему?
Можно ли сказать ffmpeg'y использовать другой mpeg2 декодер (не из библиотеки libavcodec), если проблема именно в декодере?
Заранее спасибо.

DJ Mogarych
11-09-2009, 23:42
Предположу, что проблемы связаны с тем, что MPEG-сжатие разделяет кадры на ключевые и неключевые. Если возникает ошибка, то кадры, следующие за сбойным, искажаются, так как зависят от кадров, идущих ранее.

При несжатом потоке все кадры передаются отдельно, поэтому сбой одного кадра незаметен.

В связи с этим можно попробовать сжимать не в MPEG-2, а в кодеки, которые кодируют каждый кадр отдельно. Например, M-JPEG. Поток будет меньшим, чем при несжатом потоке, где-то раза в четыре.

Если я что-то не так понял, поясните.

urello
12-09-2009, 17:34
Дело в том, что я приминаю поток в mpeg-2 и перекодирую его в flv. То есть, проблема возникает на стадии декодирования, а не кодирования.

DJ Mogarych
12-09-2009, 22:47
Ну, попробуйте кодек Intervideo.




© OSzone.net 2001-2012