Нестандартный файл MPEG2-PS: как спасти видео ?

Попробую повторить свой вопрос впервые заданный на форуме Убунту.

Несколько лет назад оцифровывал видео, к сожалению, какой-то очень хитрой проприетарной софтиной, прилагавшейся к тюнеру, и тот выдал какой-то очень хитрый результат...

Пример такого файла тут: (45Мб)

На Убунте до сих пор показывает "серый квадрат", здесь, в Арче, картинка вроде есть, но прерывистая, mplayer отбрыкивается так:
$ mplayer 'RCA-IN 100215-015655.mpg'
MPlayer2 UNKNOWN (C) 2000-2012 MPlayer Team
[ass] FcFreeTypeQueryFace failed
Cannot open file '/home/mylogin/.mplayer/input.conf': No such file or directory
Failed to open /home/mylogin/.mplayer/input.conf.
Can't open joystick device /dev/input/js0: No such file or directory
Can't init input joystick
Playing /run/media/mylogin/15 фев 2010/RCA-IN 100215-015655.mpg.
Detected file format: MPEG-PS (MPEG-2 Program Stream) (libavformat)
[mpeg2video @ 0x7f3b66947e20]interlaced frame in progressive sequence, ignoring
[mpeg2video @ 0x7f3b66947e20]invalid frame_pred_frame_dct
[mpeg @ 0x7f3b6607a380]max_analyze_duration 5000000 reached at 5016000 microseconds
[lavf] stream 0: video (mpeg2video), -vid 0
[lavf] stream 1: audio (mp2), -aid 0
Load subtitles in /run/media/mylogin/15 фев 2010/
[gl] using extended formats. Use -vo gl:nomanyfmts if playback fails.
Selected video codec: MPEG-2 video [libavcodec]
Selected audio codec: MPEG 1.0/2.0/2.5 layers I, II, III [mpg123]
AUDIO: 48000 Hz, 2 ch, s16le, 128.0 kbit/8.33% (ratio: 16000->192000)
AO: [pulse] 48000Hz 2ch s16le (2 bytes per sample)
Starting playback...
[mpeg2video @ 0x7f3b66947e20]interlaced frame in progressive sequence, ignoring
[mpeg2video @ 0x7f3b66947e20]invalid frame_pred_frame_dct
[mpeg2video @ 0x7f3b66947e20]interlaced frame in progressive sequence, ignoring
[mpeg2video @ 0x7f3b66947e20]invalid frame_pred_frame_dct
VIDEO:  704x576  50.000 fps    0.0 kbps ( 0.0 kB/s)
Aspect ratio is 1.33:1 - scaling to correct movie aspect.
VO: [gl] 704x576 => 768x576 Planar YV12
A:  -0.0 V:   0.0 A-V: -0.043 ct:  0.000   0/  0 ??% ??% ??,?% 0 0
[mpeg2video @ 0x7f3b66947e20]interlaced frame in progressive sequence, ignoring
[mpeg2video @ 0x7f3b66947e20]invalid frame_pred_frame_dct
A:   0.0 V:   0.0 A-V: -0.019 ct: -0.003   0/  0 ??% ??% ??,?% 0 0
[mpeg2video @ 0x7f3b66947e20]interlaced frame in progressive sequence, ignoring
[mpeg2video @ 0x7f3b66947e20]invalid frame_pred_frame_dct
A:   0.1 V:   0.1 A-V: -0.025 ct: -0.005   0/  0 ??% ??% ??,?% 0 0
[mpeg2video @ 0x7f3b66947e20]interlaced frame in progressive sequence, ignoring
[mpeg2video @ 0x7f3b66947e20]invalid frame_pred_frame_dct
A:   0.1 V:   0.1 A-V: -0.015 ct: -0.007   0/  0 ??% ??% ??,?% 0 0
[mpeg2video @ 0x7f3b66947e20]interlaced frame in progressive sequence, ignoring
[mpeg2video @ 0x7f3b66947e20]invalid frame_pred_frame_dct
A:   0.1 V:   0.2 A-V: -0.022 ct: -0.009   0/  0 ??% ??% ??,?% 0 0
[mpeg2video @ 0x7f3b66947e20]interlaced frame in progressive sequence, ignoring
[mpeg2video @ 0x7f3b66947e20]invalid frame_pred_frame_dct
A:   0.2 V:   0.2 A-V: -0.012 ct: -0.011   0/  0 ??% ??% ??,?% 0 0
[mpeg2video @ 0x7f3b66947e20]interlaced frame in progressive sequence, ignoring
[mpeg2video @ 0x7f3b66947e20]invalid frame_pred_frame_dct
A:   0.2 V:   0.2 A-V: -0.018 ct: -0.012   0/  0 ??% ??% ??,?% 0 0
[mpeg2video @ 0x7f3b66947e20]interlaced frame in progressive sequence, ignoring
[mpeg2video @ 0x7f3b66947e20]invalid frame_pred_frame_dct
A:   0.3 V:   0.3 A-V: -0.008 ct: -0.014   0/  0 ??% ??% ??,?% 0 0
[mpeg2video @ 0x7f3b66947e20]interlaced frame in progressive sequence, ignoring
[mpeg2video @ 0x7f3b66947e20]invalid frame_pred_frame_dct
A:   0.3 V:   0.3 A-V: -0.014 ct: -0.015   0/  0 ??% ??% ??,?% 0 0
[mpeg2video @ 0x7f3b66947e20]interlaced frame in progressive sequence, ignoring
[mpeg2video @ 0x7f3b66947e20]invalid frame_pred_frame_dct
A:   0.4 V:   0.4 A-V: -0.004 ct: -0.016   0/  0 ??% ??% ??,?% 0 0
[mpeg2video @ 0x7f3b66947e20]interlaced frame in progressive sequence, ignoring
[mpeg2video @ 0x7f3b66947e20]invalid frame_pred_frame_dct
A:   0.4 V:   0.4 A-V: -0.011 ct: -0.017   0/  0 ??% ??% ??,?% 0 0
[mpeg2video @ 0x7f3b66947e20]interlaced frame in progressive sequence, ignoring
[mpeg2video @ 0x7f3b66947e20]invalid frame_pred_frame_dct
A:   0.4 V:   0.4 A-V: -0.017 ct: -0.018   0/  0 ??% ??% ??,?% 0 0
[mpeg2video @ 0x7f3b66947e20]interlaced frame in progressive sequence, ignoring
[mpeg2video @ 0x7f3b66947e20]invalid frame_pred_frame_dct
A:   0.5 V:   0.5 A-V: -0.015 ct: -0.020   0/  0 17% 29%  2.1% 0 0
[mpeg2video @ 0x7f3b66947e20]interlaced frame in progressive sequence, ignoring
[mpeg2video @ 0x7f3b66947e20]invalid frame_pred_frame_dct
Decreasing video pts: 0.040000 < 0.520889
A:   0.5 V:   0.5 A-V: -0.000 ct: -0.020   0/  0 18% 30%  2.7% 0 0
[mpeg2video @ 0x7f3b66947e20]interlaced frame in progressive sequence, ignoring
[mpeg2video @ 0x7f3b66947e20]invalid frame_pred_frame_dct
Decreasing video pts: 0.080000 < 0.520889
A:   0.5 V:   0.5 A-V:  0.022 ct: -0.020   0/  0 18% 34%  2.7% 0 0
[mpeg2video @ 0x7f3b66947e20]interlaced frame in progressive sequence, ignoring
[mpeg2video @ 0x7f3b66947e20]invalid frame_pred_frame_dct
A:   0.6 V:   0.5 A-V:  0.032 ct: -0.020   0/  0 19% 35%  2.7% 0 0
[mpeg2video @ 0x7f3b66947e20]interlaced frame in progressive sequence, ignoring
[mpeg2video @ 0x7f3b66947e20]invalid frame_pred_frame_dct
A:   0.6 V:   0.6 A-V:  0.014 ct: -0.021   0/  0 18% 36%  2.5% 0 0
[mpeg2video @ 0x7f3b66947e20]interlaced frame in progressive sequence, ignoring
[mpeg2video @ 0x7f3b66947e20]invalid frame_pred_frame_dct
A:   0.6 V:   0.6 A-V: -0.014 ct: -0.022   0/  0 17% 34%  2.4% 0 0
[mpeg2video @ 0x7f3b66947e20]interlaced frame in progressive sequence, ignoring
[mpeg2video @ 0x7f3b66947e20]invalid frame_pred_frame_dct
A:   0.6 V:   0.6 A-V: -0.005 ct: -0.023   0/  0 16% 35%  2.2% 0 0
[mpeg2video @ 0x7f3b66947e20]interlaced frame in progressive sequence, ignoring
[mpeg2video @ 0x7f3b66947e20]invalid frame_pred_frame_dct

Попытка, конвертнуть отбрыкиваются бесконечными...
    Last message repeated 1 times
[mpeg @ 0x2224ca0] buffer underflow i=0 bufi=50998 size=72925
[mpeg @ 0x2224ca0] buffer underflow i=0 bufi=53039 size=72925
[mpeg @ 0x2224ca0] buffer underflow i=0 bufi=55080 size=72925
[mpeg @ 0x2224ca0] buffer underflow i=0 bufi=57121 size=72925
[mpeg @ 0x2224ca0] buffer underflow i=0 bufi=59162 size=72925
[mpeg @ 0x2224ca0] buffer underflow i=0 bufi=61203 size=72925
Винда недоступна, видео, чтобы оцифровать уже открытыми средстави линукса, тоже нет... Можно-ли такое видео спасти средствами линукса ?
avidemux
Я в видео-форматах не большой знаток, поэтому, не вдаваясь в подробности, сообщу, что
1. Да, в ffplay и mplayer без дополнительных параметров наблюдаются дергания и прерывани, однако
2. в smplayer (фронтенде для mplayer) все ровно и проигрывается с помощью ffmpeg2
RCA-IN 100215-015655.mpg
Основная информация
Файл /home/user/video/RCA-IN 100215-015655.mpg
Размер 44206 КБ (43 МБ)
Продолжительность 00:00:54
Демультиплексор mpegps

Видео
Разрешение экрана 704 x 576
Соотношение сторон 1.3333
Формат 0x10000002
Битрейт 7000 кб/с
Кадров в секунду 25.000
Выбранный кодек ffmpeg2

3. Обычно я все неудобоваримое видео перекодирую с помощью этой штуки (GUI или консольная версия)
community/handbrake 0.9.9-1
Multithreaded video transcoder
community/handbrake-cli 0.9.9-1
Multithreaded video transcoder (CLI)
До сих пор отрицательных результатов не получал.
У меня mplayer ругается, но воспроизводит это видео плавно. Smplayer - также, только вся ругань находится в логе mplayer'а. Другое дело, что в видео неверно указан флаг чересстрочности:
$ mediainfo RCA-IN\ 100215-015655.mpg |grep "Scan type"
Scan type                                : Progressive
Там невооруженным взглядом видно чересстрочную развертку, поэтому смотреть видео нужно с фильтром деинтерлейсинга.

По результатам конвертирования ffmpeg не справился с задачей (есть прерывания), а вот mencoder со включенной индексацией при той же ругани создал видео, практически не отличающееся по качеству от входного:
$ mencoder RCA-IN\ 100215-015655.mpg -forceidx -vf pp=lb,dsize=704:528,scale=704:528 -ofps 25 -ovc xvid -xvidencopts quant_type=h263:fixed_quant=4:aspect=4/3:threads=2 -oac mp3lame -lameopts cbr:br=128 -o movie_out.avi
Так же с аналогичными фильтрами нормально отработал Avidemux.

А вот VLC, действительно, дергает исходное видео...
У меня в VLC воспроизводится, еще и со звуком... (может я не понял вопроса???)
У меня кажет прекрасно, если чем-то это поможет то вот вывод консоли:

[[email protected] ~]$ mplayer ~/Downloads/RCA-IN\ 100215-015655.mpg
MPlayer SVN-r36285-4.8.0 (C) 2000-2013 MPlayer Team
Cannot test OS support for SSE, disabling to be safe.
205 audio & 424 video codecs
mplayer: could not connect to socket
mplayer: No such file or directory
Failed to open LIRC support. You will not be able to use your remote control.
Playing /home/user0/Downloads/RCA-IN 100215-015655.mpg.
libavformat version 55.7.100 (internal)
MPEG-PS file format detected.
VIDEO:  MPEG2  704x576  (aspect 2)  25.000 fps  7000.0 kbps (875.0 kbyte/s)
Load subtitles in /home/user0/Downloads/
[vdpau] Error when calling vdp_device_create_x11: 1
==========================================================================
Opening video decoder: [ffmpeg] FFmpeg's libavcodec codec family
libavcodec version 55.12.100 (internal)
Selected video codec: [ffmpeg2] vfm: ffmpeg (FFmpeg MPEG-2)
==========================================================================
==========================================================================
Opening audio decoder: [mpg123] MPEG 1.0/2.0/2.5 layers I, II, III
AUDIO: 48000 Hz, 2 ch, s16le, 128.0 kbit/8.33% (ratio: 16000->192000)
Selected audio codec: [mpg123] afm: mpg123 (MPEG 1.0/2.0/2.5 layers I, II, III)
==========================================================================
[AO OSS] audio_setup: Can't open audio device /dev/dsp: No such file or directory
AO: [alsa] 48000Hz 2ch s16le (2 bytes per sample)
Starting playback...
[VD_FFMPEG] Trying pixfmt=0.
[VD_FFMPEG] XVMC-accelerated MPEG-2.
The selected video_out device is incompatible with this codec.
Try appending the scale filter to your filter list,
e.g. -vf spp,scale instead of -vf spp.
[VD_FFMPEG] Trying pixfmt=1.
[VD_FFMPEG] XVMC-accelerated MPEG-2.
The selected video_out device is incompatible with this codec.
Try appending the scale filter to your filter list,
e.g. -vf spp,scale instead of -vf spp.
[VD_FFMPEG] Trying pixfmt=2.
[VD_FFMPEG] XVMC-accelerated MPEG-2.
The selected video_out device is incompatible with this codec.
Try appending the scale filter to your filter list,
e.g. -vf spp,scale instead of -vf spp.
[mpeg2video @ 0xb75bbc00]interlaced frame in progressive sequence, ignoring
[mpeg2video @ 0xb75bbc00]invalid frame_pred_frame_dct
Movie-Aspect is 1.33:1 - prescaling to correct movie aspect.
VO: [xv] 704x576 => 768x576 Planar YV12
[mpeg2video @ 0xb75bbc00]interlaced frame in progressive sequence, ignoring
[mpeg2video @ 0xb75bbc00]invalid frame_pred_frame_dct
Оказывается, если подойти к вопросу с утра, всё банально просто: mplayer сыплет ошибку на уровне декодирования, а именно - не справляется выбранный декодер: ffmpeg2 (FFmpeg MPEG-2 [mpeg2video]).
Если форсированно указать mpeg12 (MPEG-1 or 2 [libmpeg2]), всё работает без шума и пыли:

$ mplayer RCA-IN\ 100215-015655.mpg -vf pp=lb -vc mpeg12
MPlayer SVN-r36285-4.8.0 (C) 2000-2013 MPlayer Team
205 audio & 424 video codecs
mplayer: could not connect to socket
mplayer: No such file or directory
Failed to open LIRC support. You will not be able to use your remote control.
Playing RCA-IN 100215-015655.mpg.
libavformat version 55.7.100 (internal)
MPEG-PS file format detected.
VIDEO:  MPEG2  704x576  (aspect 2)  25.000 fps  7000.0 kbps (875.0 kbyte/s)
Load subtitles in ./
Could not find a UTF-8 locale, some keys will not be handled.
Opening video filter: [pp=lb]
==========================================================================
Forced video codec: mpeg12
Opening video decoder: [libmpeg2] libmpeg2 MPEG 1/2 Video decoder
Selected video codec: [mpeg12] vfm: libmpeg2 (MPEG-1 or 2 (libmpeg2))
==========================================================================
==========================================================================
Opening audio decoder: [mpg123] MPEG 1.0/2.0/2.5 layers I, II, III
AUDIO: 48000 Hz, 2 ch, s16le, 128.0 kbit/8.33% (ratio: 16000->192000)
Selected audio codec: [mpg123] afm: mpg123 (MPEG 1.0/2.0/2.5 layers I, II, III)
==========================================================================
AO: [alsa] 48000Hz 2ch s16le (2 bytes per sample)
Starting playback...
[PP] Using external postprocessing filter, max q = 6.
Movie-Aspect is 1.33:1 - prescaling to correct movie aspect.
VO: [vdpau] 704x576 => 768x576 Planar YV12
A:   4.4 V:   4.4 A-V: -0.001 ct: -0.022 111/111  6%  2%  0.3% 0 0 

То же касается и mencoder'а:
$ mencoder RCA-IN\ 100215-015655.mpg -forceidx -vf pp=lb,dsize=704:528,scale=704:528 -ofps 25 -vc mpeg12 -ovc xvid -xvidencopts quant_type=h263:fixed_quant=4:aspect=4/3:threads=2 -oac mp3lame -lameopts cbr:br=128 -o movie_out.avi
отрабатывает на ура!
Тип матрицы квантизации можно не указывать, она и по дефолту h263. Всё остальное, как то выходные кодеки и их параметры при необходимости можете указывать свои, только не нарушайте пропорции кадра.
Так же, если нужно сохранять видео в mpeg2, необходимо придерживаться стандарта, в данном случае - DVD PAL.
Aivar
всё работает без шума и пыли:
==========================================================================
Forced video codec: mpeg12
Requested video codec family [mpeg12] (vfm=libmpeg2) not available.
Enable it at compilation.
Cannot find codec matching selected -vo and video format 0x10000002.
==========================================================================
Все так-же скачет, и явно в контейнере mpg излишняя информация. Вообщем, вопрос до сих пор актуален :(

ghost
У меня в VLC воспроизводится, еще и со звуком... (может я не понял вопроса???)
в mplayer действительно нормально воспроизводит, а вот в vlc,mpv - "скачет". до сих пор.

Теперь ffmpeg "отбрехается" так:
[mpeg2video @ 0xe13d60] interlaced frame in progressive sequence, ignoring
[mpeg2video @ 0xe13d60] invalid frame_pred_frame_dct
[mpeg2video @ 0xe13d60] interlaced frame in progressive sequence, ignoring
[mpeg2video @ 0xe13d60] invalid frame_pred_frame_dct
[mpeg2video @ 0xe13d60] interlaced frame in progressive sequence, ignoring
[mpeg2video @ 0xe13d60] invalid frame_pred_frame_dct
[mpeg2video @ 0xe13d60] interlaced frame in progressive sequence, ignoring
[mpeg2video @ 0xe13d60] invalid frame_pred_frame_dct
Проблемы с дерганием возможны как из-за неправильного определения порядка полей черезстрочного видео, так и неудачной попытке синхронизации звука с видео во время проигрывания. На первый взгляд в приведенном фрагменте черезстрочное видео было закодировано как прогрессивное. Стоит ли с этим бороться - ну не знаю, в выложенном фрагменте это не напрягает. А вот дергания из-за рассинхрона звука и видео можно побороть.
Не нужно ничего перекодировать. Проще всего пересобрать видео без перекодирования в другой контейнер, например avi или mkv. Тогда все будет нормально. С помощью того же avidemux это займет несколько минут на двухчасовой фильм. И это без потери качества, если этот термин, конечно, применим для данного фрагмента. Единственное нужно посмотреть итоговый файл, будет ли там рассинхрон ближе к концу. По маленькому фрагменту это тоже не ясно. Если будет, то нужно будет разложить фрагмент отдельно на видео и звук, скорректировать в звуковом редакторе частоту дескритезации аудиодорожки, подогнав под длину видео, а потом снова загнать в один контейнер. Любая же попытка работы с видео, на мой взгляд, только ухудшит его качество.
kotnaton, долго же вы отвечали...

kotnaton
Requested video codec family [mpeg12] (vfm=libmpeg2) not available.
На момент написания поста (год назад) изменение декодера работало, а сейчас и автоопределяемый ffmpeg2 нормально воспроизводит ваше видео.


в mplayer действительно нормально воспроизводит
Другим не пользуюсь.
С содержимым контейнера действительно не все в норме, потому что mplayer на этапе декодирования сыплет ошибками. Отключить их можно, добавив опцию -msglevel decvideo=0, но это ошибки кодирования вашего видео, а не плеера.

z-vladimir
На первый взгляд в приведенном фрагменте черезстрочное видео было закодировано как прогрессивное.
См. мой первый пост в этой теме.

z-vladimir
Проще всего пересобрать видео без перекодирования в другой контейнер, например avi или mkv.
mpeg2 в матрешку упаковать нельзя. В avi можно, но это нестандартный подход, с которым это видео не возьмет ни один "железный" плеер. К тому же, в авишке видео снова начинает подтормаживать. Попытка же перепаковать аудио-, видео- потоки в стандартные для mpeg2 контейнеры (mpg, vob, dvd) не устраняет ошибок при воспроизведении. Более того, перепаковка только видео без звука также не меняет ситуацию, что подтверждает, что дело только в ошибках кодирования оригинального видео, а не звука, контейнера и т.д.
 
Зарегистрироваться или войдите чтобы оставить сообщение.