LINUX.ORG.RU

mencoder: timebase not supported by mpeg 4 standard


0

1

Пытаюсь пережать видео.

Запускаю:

resolution=1152
bitrate=10000
mencoder "$i" \
        -of mpeg \
        -ovc lavc -mpegopts format=mpeg2:tsaf:vbitrate=$bitrate \
        -vf scale=$resolution:-3 \
        -oac mp3lame \
        -lameopts abr:br=92 \
        -alang rus \
        -o "$i.avi"&

Получаю:

waiting...
MPlayer SVN-r31918 (C) 2000-2010 MPlayer Team

WARNING: OUTPUT FILE FORMAT IS _MPEG_. See -of help.
success: format: 0  data: 0x0 - 0x1933a694
libavformat file format detected.
[lavf] stream 0: video (h264), -vid 0
[lavf] stream 1: audio (aac), -aid 0, -alang jpn
VIDEO:  [H264]  1280x720  24bpp  119.880 fps  2186.5 kbps (266.9 kbyte/s)
[V] filefmt:44  fourcc:0x34363248  size:1280x720  fps:119.880  ftime:=0.0083
==========================================================================
Opening audio decoder: [faad] AAC (MPEG2/4 Advanced Audio Coding)
AUDIO: 48000 Hz, 2 ch, s16le, 159.2 kbit/10.36% (ratio: 19895->192000)
Selected audio codec: [faad] afm: faad (FAAD AAC (MPEG-2/MPEG-4 Audio))
==========================================================================
PACKET SIZE: 2048 bytes, deltascr: 245760
MPEG MUXER, patching bitrate to 10000
Opening video filter: [expand osd=1]
Expand: -1 x -1, -1 ; -1, osd: 1, aspect: 0.000000, round: 1
Opening video filter: [scale w=1152 h=-3]
==========================================================================
Opening video decoder: [ffmpeg] FFmpeg's libavcodec codec family
Selected video codec: [ffh264] vfm: ffmpeg (FFmpeg H.264)
==========================================================================
MP3 audio selected.
Limiting audio preload to 0.4s.
Increasing audio density to 4.
Pos:   0.0s      1f ( 0%)  0.00fps Trem:   0min   0mb  A-V:0.000 [0:0]
Movie-Aspect is undefined - no prescaling applied.
[swscaler @ 0x37dbc20] BICUBIC scaler, from yuv420p to yuv420p using MMX2
videocodec: libavcodec (1152x648 fourcc=34504d46 [FMP4])
[mpeg4 @ 0x34e98b0] timebase not supported by mpeg 4 standard
Could not open codec.
FATAL: Cannot initialize video driver.

Это происходит не со всеми видео, большинство работает. Но мне уже очень хочется посмотреть эту, конкретную анимешку. Куда копать?

Ответ на: комментарий от arsi

ой, стоп, отбой, какие ещё 120000/1001, мпег4 такого не поддерживает… для мпег4 значение в числителе не может быть больше 65535… у вас два варианта: менять фпс или кодек ;)

arsi ★★★★★
()
Ответ на: комментарий от arsi

Менять FPS - это как? Я вроде его и так явно не задаю.

Кодек - пробовал x264, он делает вид, что работает, но в итоге создаёт файл в 2 килобайта размером. При этом сам файл mplayer-ом проигрывается, хоть и тормозит невыносимо на моём железе (потому и пережимаю).

lost_shadow
() автор топика
Ответ на: комментарий от lost_shadow

> Менять FPS - это как?

добавить опцию -ofps. например, можно указать «-ofps 30000/1001».

> Я вроде его и так явно не задаю.

вот именно. в этом случае он пытается кодировать с той же частотой кадров, как в исходном материале. а у вас там 119.880 fps, что равно 120000/1001 fps (частота кадров обычно хранится в виде дроби). mencoder пытается передать ту же дробь мпег4-кодеку, который видит 120000 и паникует, т.к. не может такое число вместить в 2х-байтное поле.

arsi ★★★★★
()
libavformat file format detected.
[lavf] stream 0: video (h264), -vid 0
[lavf] stream 1: audio (aac), -aid 0, -alang jpn
[V] filefmt:44  fourcc:0x34363248  size:1280x720  fps:119.880  ftime:=0.0083

Yuck! Ох и намучаетесь же при перекодировании такого.

Контейнер, как я понимаю, mp4? Вывод mediainfo можно?

В любом случае, видео вероятнее всего имеет переменную частоту кадров aka VFR (variable frame rate), так что про mencoder и контейнеры поддерживающие только CFR (constant frame rate) лучше сразу забыть. Насколько я знаю, «из коробки» VFR поддерживается более менее адекватно только в x264, так что для начала можно попробовать что-то такое:

$ mkvmerge -o input.mkv input.mp4
$ x264 --crf 21 --preset slow --tune animation,fastdecode --vf resize:1024,576 -o video.mkv input.mkv
$ mkvmerge -o output.mkv video.mkv -D input.mkv
Если после этого результат все равно декодируется слишком медленно, то можно поиграться с качеством (--crf) и разрешением, ибо чем больше разрешение и битрейт, тем тяжелее декодирование. Если же не устраивает качество, то следует использовать еще более медленные опции кодирования (--preset) и уменьшать --crf.

Если же проявляется рассинхронизация видео и звука, то скорее всего придется разбираться ручками, что там творится с таймкодами в исходном файле, по возможности исправлять и использовать исправленные таймкоды при муксе в mkv.

Sion
()

>VIDEO: [H264] 1280x720 24bpp 119.880 fps

Мне помогало mencoder -fps 29.970

redgremlin ★★★★★
()

>Но мне уже очень хочется посмотреть эту, конкретную анимешку

Если не секрет, какую? А то вдруг мплеер все правильно делает, что не показывает...

redgremlin ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.