Страница 1 из 1

mencoder: разбиение видеофайлов

Добавлено: 01 ноя 2007, 19:53
U2_STORM
Имеется проблема:
нужно записать на dvd видеофайл размером 4.4GB.
Но насколько мне известно, файлы, размером превосходящим 4 гига записать нельзя. В таком случае я хочу разбить данный на 2 файла.
Делаю так:
mencoder -ovc copy -oac copy -endpos 1:07:00 source.avi -o dest_part1.avi
mencoder -ovc copy -oac copy -ss 1:07:00 source.avi -o dest_part2.avi
Разбил фильм пополам.
Получившиеся части вроде бы и проигрываются, но при попытке перемотать mplayer перестаёт вопроизводить. Может не хватает какой-то опции mencoder'a?

Добавлено: 01 ноя 2007, 20:37
Quantum
Вылятае з памылкай, ці нешта іншае? І што ён піша ў кансолі падчас спробы перамоткі?
Наагул падобна да паламанага індэксу. Якія кадэкі (відэа й аўдыё) скарыстаныя ў фільме, avi-фармат не падтрымлівае некаторых кадэкаў, прыкладам h264, vorbis, etc. У гэтым выпадку можна паспрабаваць прайграваць з опцыяй -forceidx.

Добавлено: 02 ноя 2007, 15:40
myst
Раз сначала всё играло, а после разбиения не играет, значит -- дело не в кодеках. Это факин индекс. Попробуй -of avi или -idx.

Добавлено: 02 ноя 2007, 15:53
Victor Gr.
Да, это индекс. Можно при воспроизведении давать mplayer -idx file.avi, а лучше "вшить" индекс прямо в avi. Как -- не знаю. Подскажите, кто знает.

Добавлено: 02 ноя 2007, 18:24
Llama
Victor Gr., hint - менкодер понимает почти все те же ключи что и mplayer ;)

Добавлено: 02 ноя 2007, 19:10
myst
Llama, спасибо, если б не ты, я бы уже обматерил.

Добавлено: 02 ноя 2007, 19:29
U2_STORM
Кодек ffmpeg h264.
Опции -forceidx -idx -of avi эффекта никакого не дали.
Без принудительного создания индекса попытка перемотки прерывает вопроизведение с ошибкой:
[h264 @ 0x8776b10]reference picture missing during reorder0.7% 0 0
[h264 @ 0x8776b10]reference picture missing during reorder
[h264 @ 0x8776b10]reference picture missing during reorder
[h264 @ 0x8776b10]reference picture missing during reorder
[h264 @ 0x8776b10]reference picture missing during reorder
A: -0.0 V:4020.0 A-V:-4020.011 ct: -0.104 100501/100501 ??% ??% ??,?% 0 0

Принудительное создание индекса при воспроизведении (mplayer -forceidx file.avi) дало возможность перематывать фильм, но с ужасными искажениями изображения с попутными ошибками:
Error while decoding frame!
[h264 @ 0x8776b10]pic->data[0]!=NULL in avcodec_default_get_buffer 0 0
[h264 @ 0x8776b10]get_buffer() failed (-1 2679 2697 0xa63)
[h264 @ 0x8776b10]decode_slice_header error
[h264 @ 0x8776b10]no frame!

Добавлено: 02 ноя 2007, 20:57
myst
H.264 лучше паковать в mp4 контейнер. Только ffmpeg не поддерживает B-frames. Там есть несколько гиморных мест, да и поддержка неavi контейнеров пока beta. Видимо mencoder -idx при copy не срабатывает. Почитай man mencoder, может что найдёшь, да и на сайте у них есть подробнейшая дока.

Добавлено: 02 ноя 2007, 21:30
Quantum
Як я пісаў ужо - avi-кантэйнер не падтрымлівае h264 кадэк. Таму й ідзе збой сынхранізацыі.
Найбольш распаўсюджаныя фарматы кантэйнераў, што падрымліваюць h264 - .mp4, matroska video (.mkv), ogg media (.ogm) i apple .mov. Пакеты mkvtoolnix (дзеля .mkv-файлаў) і oggconvert (дзеля .ogm-файлаў) уваходзяць хіба што ня ў кожны дыстрыбутыў.

Асабіста я выкарыстоўваю .mkv - на мой позірк найбольш перспектыўны з гэтых кантэйнераў.

Добавлено: 02 ноя 2007, 21:37
Quantum
to myst, ёсьць адмысловыя праграмы, што дазваляюць выкарыстоўваць у avi-файлах кадэкі, што не падрымліваюцца avi-кантэйнерам (у прыватнасьці - h264 і vorbis) - але гэта парушэньне стандартаў.

Добавлено: 05 ноя 2007, 17:19
myst
Насколько мне известно, AVI -- это вообще не стандарт, а какая-то шняга. Которую, тем не менее, саппортят все. Что и делает её привлекательной. У меня h.264 из avi проигрывалось mplayer'ом. А больше мне и не надо.

Добавлено: 19 ноя 2007, 16:49
U2_STORM
Так исходная avi'шка нормально проигрывается, а после разбиения уже всё не так хорошо.

Добавлено: 20 ноя 2007, 00:19
Quantum
Я ж і пісаў, што ёсьць праграмы, што дазваляюць запіхаць у .avi неканвенцыйную плыню. А mencoder гэтага ня ўмее.
Таму проста пастаў сябе mkvtoolnix і зрабі mkvmerge --split size:2.2g -o <outfile> <infile>