mencoder нарезка видео (Не по ключевому кадру.)

Обсудить вопросы и проблемы с видео

Модератор: Модераторы разделов

ekkl
Сообщения: 139
ОС: 3.17.3-300.fc21.x86_64

mencoder нарезка видео

Сообщение ekkl »

Итак, суть проблемы: нужно хотелось бы менкодером точно нарезать видео, но кодировщик выбирает не ту позицию, которою я указываю, а "округляет" ее до ближайшего ключевого кадра.

Код: Выделить всё

mencoder file.mp4 -ovc copy -oac mp3lame -of lavf -ss 2:02 -o out.mp4
mencoder file.mp4 -ovc copy -oac mp3lame -of lavf -ss 2:07 -o out.mp4

нарезают с ОДНОЙ и той же поции, захватывая секунду того, что не нужно, а

Код: Выделить всё

mencoder file.mp4 -ovc copy -oac mp3lame -of lavf -ss 2:08 -o out.mp4

нарезает немного дальше, чем нужно; несколько нужных секунд не попадают в выводной файл.
Авидемукс с опцими стримкопи делает то же самое, но именно благодаря ему увидел что они режут точо по infra-frames.
Тот же авидемукс при перекодировке видео режет так как нужно.
---
Вопрос в том, что нельзя ли с помощью менкодера все-таки нарезать резать между ключевими кадрами без перекодировки?
Ну и сюда же: можно ли указывать -ss 0.5 и т.д. вырезая полсекунды? дело в том, что при работе с авишкой и стримкопи и -ss 0.5 ужасно растроилась синхронизация видео с аудио. (ну и в силу вышеизложенного, так ничего и вырезало)
dd if=/dev/zero of=/dev/null bs=1M
И пусть весь мир подождет.....
Спасибо сказали:

Аватара пользователя
Bizdelnick
Модератор
Сообщения: 18483
Статус: grammatikführer
ОС: Debian GNU/Linux

Re: mencoder нарезка видео

Сообщение Bizdelnick »

ekkl писал(а):
26.11.2014 15:29
Вопрос в том, что нельзя ли с помощью менкодера все-таки нарезать резать между ключевими кадрами без перекодировки?

А смысл? До первого ключевого кадра всё равно ничего толком видно не будет. Надо перекодировать, чтобы первый кадр сделать ключевым.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:

ekkl
Сообщения: 139
ОС: 3.17.3-300.fc21.x86_64

Re: mencoder нарезка видео

Сообщение ekkl »

Bizdelnick, скажите пожалуйста как?
dd if=/dev/zero of=/dev/null bs=1M
И пусть весь мир подождет.....
Спасибо сказали:

Аватара пользователя
Bizdelnick
Модератор
Сообщения: 18483
Статус: grammatikführer
ОС: Debian GNU/Linux

Re: mencoder нарезка видео

Сообщение Bizdelnick »

Вместо -ovc copy задавать какой надо кодек, параметры к нему... Всё как обычно, в общем.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:

ekkl
Сообщения: 139
ОС: 3.17.3-300.fc21.x86_64

Re: mencoder нарезка видео

Сообщение ekkl »

Bizdelnick, да я это прекрасно понимаю. Но дело в том, что любая перекодировка — это потеря качества. Ведь кодеку достаточно создать один ключевой кадр в нужной позиции и кодировать только фрегмент до следующего. Для xVid есть специальная фича: быстрый рекомпресс, специально для подобных целей.
--
Кстати с опциями перекодировки то же самое....

Код: Выделить всё

mencoder file.mp4 -ss 2:08 -noskip -mc 0 -endpos 10 -oac mp3lame -ovc xvid -xvidencopts fixed_quant3 -of avi -o o.avi
dd if=/dev/zero of=/dev/null bs=1M
И пусть весь мир подождет.....
Спасибо сказали:

Аватара пользователя
Hephaestus
Сообщения: 3729
Статус: Многоуважаемый джинн...
ОС: Slackware64-14.1/14.2

Re: mencoder нарезка видео

Сообщение Hephaestus »

ekkl писал(а):
26.11.2014 15:29
Вопрос в том, что нельзя ли с помощью менкодера все-таки нарезать резать между ключевими кадрами без перекодировки?
Нельзя. Просто потому, что между ключевыми кадрами находятся кадры неполные.
И mencoder тут совершенно ни при чём.
Это примерно то же самое, что распаковывать многотомный архив, не имея первого тома. Оно, может, и распакуется, но информация будет неполной и толку в этом мало.

Кстати, обратите внимание, любой видеоредактор или другая программа для "нарезки" разжимает видео в сырой поток, делая все кадры полными.
Одна из причин - невозможность нарезки по произвольному кадру.

ekkl писал(а):
26.11.2014 16:03
Но дело в том, что любая перекодировка — это потеря качества.
Увы. Но при правильных настройках потери будут минимальны и незаметны на глаз.

ekkl писал(а):
26.11.2014 16:03
Ведь кодеку достаточно создать один ключевой кадр в нужной позиции и кодировать только фрегмент до следующего.
Вы знаете хоть одну программу-кодировщик, которая это умеет?
Я нигде упоминания о такой фиче не встречал, даже в рекламных описаниях.
Пускай скрипят мои конечности.
Я - повелитель бесконечности...
Мой блог
Спасибо сказали:

ekkl
Сообщения: 139
ОС: 3.17.3-300.fc21.x86_64

Re: mencoder нарезка видео

Сообщение ekkl »

Hephaestus, все же вопрос приобретает немного другой оттенок, но не отпадает. Даже при перекодировке менкодер режет по ключевим кадрам. Повторюсь

Код: Выделить всё

mencoder file.mp4 -ss 2:08 -noskip -mc 0 -endpos 10 -oac mp3lame -ovc xvid -xvidencopts fixed_quant=3 -of avi -o o.avi

все равно не могу нарезать там, где нужно.
dd if=/dev/zero of=/dev/null bs=1M
И пусть весь мир подождет.....
Спасибо сказали:

NickLion
Сообщения: 3408
Статус: аватар-невидимка
ОС: openSUSE Tumbleweed x86_64

Re: mencoder нарезка видео

Сообщение NickLion »

Привожу идею, как єто в mencoder делается не знаю, надо смотреть man. А если сделать так:

Код: Выделить всё

IPPPPPPPIPPPPPPPIPPPPPPPIPPPPPPPIPPPPPPPIPPPPPPPIPPPPPPPIPPPPPPP
   |---------------X------------------|
|==Y===||--------------Z--------------|

Нужен участок X, вместо этого вырезать 2 участка: Y и Z. Участок Y перекодировать в формат без сжатия, выбрать нужную часть и закодировать тем же кодеком, что и Z, а после объединить. Получится то, что Вы хотите — участок Z не будет перекодирован, хоть и больше работы для Вас будет.
Спасибо сказали:

ekkl
Сообщения: 139
ОС: 3.17.3-300.fc21.x86_64

Re: mencoder нарезка видео

Сообщение ekkl »

НУ так и я том же. Просто интересует как это сделать в менкодер, если можно. К сведению Hephaestus опцией быстрого рекомпресса обладает VirtualDub (может, конечно, ошибаюсь, но кажется он действует как раз по такому принципу.)
----------
Насколько удалось найти по менкодеру, он таки не может резать видео между ключевыми кадрами как с рекомпрессом так и без него. Рекомендовали, например, melt (mlt-melt), скорее редактор, чем кодек.
Если никому точно не удалось резать менкодером между ключевими кадрами (независимо с перекодировкой или без нее) думаю, что эта программка на такое не способна и вопрос можно считать исчерпанным.
dd if=/dev/zero of=/dev/null bs=1M
И пусть весь мир подождет.....
Спасибо сказали:

Аватара пользователя
Bizdelnick
Модератор
Сообщения: 18483
Статус: grammatikführer
ОС: Debian GNU/Linux

Re: mencoder нарезка видео

Сообщение Bizdelnick »

ekkl писал(а):
27.11.2014 16:34
Если никому точно не удалось резать менкодером между ключевими кадрами (независимо с перекодировкой или без нее) думаю, что эта программка на такое не способна и вопрос можно считать исчерпанным.

Из здесь присутствующих, видимо, никто даже не пытался. Люди, хорошо разбирающиеся в mencoder и других конвертерах, здесь бывают, но далеко не каждый день.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:

ekkl
Сообщения: 139
ОС: 3.17.3-300.fc21.x86_64

Re: mencoder нарезка видео

Сообщение ekkl »

Может кто-то даст ссылку на другой ресурс, где такие люди бывают часто?
Поиском видередакторы форум и т.п. ничего приемлемого найти не удалось...
dd if=/dev/zero of=/dev/null bs=1M
И пусть весь мир подождет.....
Спасибо сказали:

Аватара пользователя
Hephaestus
Сообщения: 3729
Статус: Многоуважаемый джинн...
ОС: Slackware64-14.1/14.2

Re: mencoder нарезка видео

Сообщение Hephaestus »

ekkl писал(а):
27.11.2014 13:38
Даже при перекодировке менкодер режет по ключевим кадрам.
Разумеется.
Вы не поняли главного: если Вам нужно отрезать видео, скажем, в точке 0 часов 10 минут 15 секунд, то есть
615 секунд от начала файла, то при частоте 25 кадров в секунду, получаем, что нужная точка - это 615*25=15375 кадр. И при перекодировке необходимо обеспечить, чтобы именно 15375 кадр был бы ключевым. Тогда именно в этом месте можно будет отрезать.
Поскольку это делать достаточно неудобно, то гораздо проще разжать видео в сырой поток (все кадры будут полными), отрезать, и снова сжать тем же кодеком, который был. Для снижения потерь по качеству нужно озаботиться соответствующими настройками. Причем, все три операции: (разжать, отрезать, сжать) можно выполнить, не сохраняя громадных промежуточных файлов на диск, для этого можно воспользоваться, например, fifo.

Я не слишком разбираюсь в опциях mencoder, но в приведённой Вами команде я не увидел опции, касательно ключевых кадров. В лучшем случае все ключевые кадры остались там же, где и были. А Вам нужно добиться, чтобы ключевой кадр получился в точке отреза.
Как отрезать файл с помощью расжатия в сырой поток, мне известно, но для ffmpeg, ибо mencoder не использую.

То, что предложил NickLion - вполне годный вариант, но уж насколько соответствует Вашей задаче - смотрите сами.

ekkl писал(а):
27.11.2014 16:34
К сведению Hephaestus опцией быстрого рекомпресса обладает VirtualDub (может, конечно, ошибаюсь, но кажется он действует как раз по такому принципу.)
Здесь спорить не буду, ибо VirtualDub последний раз видел много лет назад. Скажу только, что тогда (когда я его видел) он именно разжимал файл - создавал огромный временный файл чего-то_там_tmp. Для пользователя это могло быть и незаметно.

ekkl писал(а):
27.11.2014 16:34
Насколько удалось найти по менкодеру, он таки не может резать видео между ключевыми кадрами как с рекомпрессом так и без него.
Ни одна программа не может резать между ключевыми кадрами, в противном случае не было бы разницы между ключевым кадром и любым другим кадром. И рекомпресс тут никак не поможет, если в результате рекомпрессинга не создан ключевой кадр в нужной точке.
Пускай скрипят мои конечности.
Я - повелитель бесконечности...
Мой блог
Спасибо сказали:

Аватара пользователя
Hephaestus
Сообщения: 3729
Статус: Многоуважаемый джинн...
ОС: Slackware64-14.1/14.2

Re: mencoder нарезка видео

Сообщение Hephaestus »

В порядке оффтопа
NickLion писал(а):
27.11.2014 14:19
IPPPPPPPIPPPPPPPIPPPPPPPIPPPPPPPIPPPPPPPIPPPPPPPIPPPPPPPIPPPPPPP

NickLion , а Вы не знаете случайно, как получить такую диаграмму для произвольного видеофайла? Мне где-то попадалось, да не найду.
Пускай скрипят мои конечности.
Я - повелитель бесконечности...
Мой блог
Спасибо сказали:

NickLion
Сообщения: 3408
Статус: аватар-невидимка
ОС: openSUSE Tumbleweed x86_64

Re: mencoder нарезка видео

Сообщение NickLion »

Hephaestus
К сожалению, не знаю. Я с библиотеками ffmpeg работал, а не тулзами, поэтому не особо в курсе параметров mencoder/ffmpeg.
Спасибо сказали:

NickLion
Сообщения: 3408
Статус: аватар-невидимка
ОС: openSUSE Tumbleweed x86_64

Re: mencoder нарезка видео

Сообщение NickLion »

Могу предложить такой очень неэффективный способ:

Код: Выделить всё

ffprobe -show_frames video_file | grep key_frame | perl -e 'while(<>){m/key_frame=(.)/; print $1;}'

На выходе что-то вроде:

Код: Выделить всё

100000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000
Спасибо сказали:

Аватара пользователя
Rodegast
Сообщения: 337
ОС: Linux

Re: mencoder нарезка видео

Сообщение Rodegast »

Для обрезки используй ELD файл с опцией -hr-edl-seek Тогда можно будет резать с любого места, а не только с ключевого кадра.
Спасибо сказали:

Аватара пользователя
Hephaestus
Сообщения: 3729
Статус: Многоуважаемый джинн...
ОС: Slackware64-14.1/14.2

Re: mencoder нарезка видео

Сообщение Hephaestus »

Rodegast писал(а):
02.12.2014 22:14
Для обрезки используй ELD файл
Наверно всё-таки EDL-файл. Только вот где его взять?
Пускай скрипят мои конечности.
Я - повелитель бесконечности...
Мой блог
Спасибо сказали:

Аватара пользователя
Bizdelnick
Модератор
Сообщения: 18483
Статус: grammatikführer
ОС: Debian GNU/Linux

Re: mencoder нарезка видео

Сообщение Bizdelnick »

Hephaestus писал(а):
02.12.2014 22:27
где его взять?

Написать, вероятно?
http://www.mplayerhq.hu/DOCS/HTML/ru/edl.html
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:

Аватара пользователя
Hephaestus
Сообщения: 3729
Статус: Многоуважаемый джинн...
ОС: Slackware64-14.1/14.2

Re: mencoder нарезка видео

Сообщение Hephaestus »

Bizdelnick писал(а):
02.12.2014 22:35
Написать, вероятно?

Само собой.
Я имел в виду, нужно ли весь видеофайл прогнать или достаточно указать отдельные моменты.
Короче, как его написать правильно в контексте данной темы?

Я, правда, не очень понял, как это работает.
Там же всего-навсего временные штампы. И этого достаточно для отреза по произвольному кадру?
При этом просто указать кодировщику место отреза нельзя. Странно как-то.
Пускай скрипят мои конечности.
Я - повелитель бесконечности...
Мой блог
Спасибо сказали:

Аватара пользователя
Rodegast
Сообщения: 337
ОС: Linux

Re: mencoder нарезка видео

Сообщение Rodegast »

> Я имел в виду, нужно ли весь видеофайл прогнать или достаточно указать отдельные моменты.

Отдельные моменты.

> Там же всего-навсего временные штампы. И этого достаточно для отреза по произвольному кадру?

Кусок мана:
-hr-edl-seek
Указывает использовать более точный, но значительно более медленный метод пропуска областей. Области, помеченные для пропуска, в этом случае не перематываются. Вместо этого декодируются все кадры, но кодируются в выходной файл только требуемые. Это позволяет начинать не с ключевого кадра.
ЗАМЕЧАНИЕ: Не гарантируется правильная работа с '-ovc copy'.
Спасибо сказали: