Непонятное поведение видео энкодеров (ffmpeg и mencoder портят кровь :()

Разные проблемы звука, видео, обсуждение разных устройств и т.д.

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

Аватара пользователя
fatboy
Сообщения: 156
ОС: Zenwalk Linux, Windows XP

Непонятное поведение видео энкодеров

Сообщение fatboy »

Добрый день. Сегодня нужно было порезать видео файл (wmv) на куски, но ни ffmpeg ни mencoder не захотели сотрудничать "ваще". Суть операции довольно проста: seek на нужную позицию, начиная с этой позиции, скопировать несколько секунд видео и аудио в новый файл.
Вот как я делал это с помощью ffmpeg:

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

ffmpeg -ss 20 -t 10 -i input.wmv -acodec copy -vcodec copy -y output.wmv

и с помощь mencoder:

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

mencoder -ss 20 -endPos 10 -oac copy -ovc copy input.wmv -o output.wmv


Результаты получились, если можно так это описать, диаметрально противоположные, но ниодин не сделал того что ожидалось (как описано выше). ffmpeg начал точно с указанной позиции но не остановился через 10 секунд, а продолжил сливать видео в выходной файл. Получилось что выходной файл был точной копией входного но без начальных 20-ти секунд.
mencoder сделал видео в выходном файле ровно 10 секунд - как я и просил - но начал черт знает откуда! Точнее не с 20-й а секунды с 23-й. Как показали экперименты, это смещение не константно а увеличивается в зависимости от переметра -ss. Так при -ss 40 первая секунда в выходном файле соответствует примерно 80-й во входном.

Долго искал в Интернете как с этим бороться, но ничего толком не нашел. Либо люди не получают ответа на подобные вопросы, либо решают проблему чуть-ли не простой перестановкой параметров, а когда я пробую точную копию их команды все равно ничего не получается.

Не мог бы кто-нибудь помочь мне с этой проблемой?
Zenwalk 4.0
TOSHIBA Satellite A100
Спасибо сказали:
Аватара пользователя
Maverik
Сообщения: 498
ОС: Росинка mint 8

Re: Непонятное поведение видео энкодеров

Сообщение Maverik »

На счет менкодера давно известно, что он некорректно режет! На счет FFmpeg не знаю. Отлично режется Avidemux, а также Mkvmerge!
Dragon_Lord@jabber.org
Спасибо сказали:
Аватара пользователя
fatboy
Сообщения: 156
ОС: Zenwalk Linux, Windows XP

Re: Непонятное поведение видео энкодеров

Сообщение fatboy »

Maverik писал(а):
18.01.2009 10:14
Отлично режется Avidemux, а также Mkvmerge!

Спасибо за наводку. Обязательно присмотрюсь к этим программам.
Однако, хотелось бы прояснить ситуацию с ffmpeg. Кто-нибудь резал фильмы ffmpeg?
Zenwalk 4.0
TOSHIBA Satellite A100
Спасибо сказали:
Аватара пользователя
Maverik
Сообщения: 498
ОС: Росинка mint 8

Re: Непонятное поведение видео энкодеров

Сообщение Maverik »

Получилось порезать, вот код:

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

ffmpeg -i input.avi -f avi -ss 00:00:20 -t 00:00:10 -vcodec libxvid -b 5000k -acodec copy output.avi

-ss position'
Установить поиск позиции в секундах. hh:mm:ss[.xxx] синтаксис также поддерживает

-t duration(продолжительность)'
Ограничить перекодированную/захваченную video последовательность продолжительностью указанной в секундах. hh:mm:ss[.xxx] синтаксис также поддерживает

Если делать -vcodec copy -acodec copy видео получается с черным экраном вначале + звук опережает видео. Вообще заметил что FFmpeg работает корректно только когда вводишь все данные: кодек битрет рейт итд
ЗЫ вот тебе в помощь FFmpeg
Dragon_Lord@jabber.org
Спасибо сказали:
Аватара пользователя
fatboy
Сообщения: 156
ОС: Zenwalk Linux, Windows XP

Re: Непонятное поведение видео энкодеров

Сообщение fatboy »

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

Вот моя команда, которая дает результат наиболее приближенный к желаемому:

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

ffmpeg -ss 20 -t 10 -i input.wmv -f asf -vcodec wmv2 -b 200k -acodec wmav2 output.avi


-acodec copy в моем случае приводит к созданию видео с черным экраном, которое не начинает проигрываться пока его не перемотать на секунду вперед. После перемотки видео и звук синхронизированы.
Zenwalk 4.0
TOSHIBA Satellite A100
Спасибо сказали:
Аватара пользователя
Maverik
Сообщения: 498
ОС: Росинка mint 8

Re: Непонятное поведение видео энкодеров

Сообщение Maverik »

У меня все синхронно.
Вероятно дело в команде - тызадаешь -ss 20 -t 10 -i input.wmv а я задаю -i input.avi -f avi -ss 00:00:20 -t 00:00:10
Т,е,
1 попробуй изменить формат времени на чч:мм:сс
2 Все что ты вводишь перед -i относится к входному файлу, все что после -i но перед output.avi относится к выходному файлу. Команды преобразования входного (указанные перед -i) файла применяются при захвате видео или для преобразования сырых raw файлов.
Т,е командам -ss и -t место после -i тк они относятся к выходному файлу!
ЗЫ Почему у тебя в комманде указан -f asf а выходной файл *.avi ? Получается конфликт который также может привести к некорректной обрезке! Командой -f ты задаешь контейнер и выходной файл должен соответствовать!
Dragon_Lord@jabber.org
Спасибо сказали:
Аватара пользователя
fatboy
Сообщения: 156
ОС: Zenwalk Linux, Windows XP

Re: Непонятное поведение видео энкодеров

Сообщение fatboy »

Maverik писал(а):
19.01.2009 10:44
ЗЫ Почему у тебя в комманде указан -f asf а выходной файл *.avi ?

Это опечатка. В фактической команде стоит output.wmv
Формат времени пробовал менять - результат тот же.
Ключи -ss и -t тоже пробовал переставлять за входной файл - ничего не изменилось. Исключительно теоретический вопрос: почему они должны применяться к выходному файлу а не к входному? Я думал, что сам выходной файл - результат применения этих ключей к входному.
Zenwalk 4.0
TOSHIBA Satellite A100
Спасибо сказали:
Аватара пользователя
Maverik
Сообщения: 498
ОС: Росинка mint 8

Re: Непонятное поведение видео энкодеров

Сообщение Maverik »

fatboy писал(а):
19.01.2009 19:48
почему они должны применяться к выходному файлу а не к входному? Я думал, что сам выходной файл - результат применения этих ключей к входному.

По тому что:
Общий синтаксис:
ffmpeg [[infile options][`-i' infile]]... {[outfile options] outfile}...

Как основное правило, опции добавляются к следующему указанному файлу. По этому, порядок очень важен, и вы можете использовать те же самые комманды несколько раз. Каждое новое появление комманды добавляется к следующему входному или выходному файлу.

Я думаю что все таки следует привести к общему знаменателю -f * и output.* и обновить ffmpeg и ffmpegdevel
Dragon_Lord@jabber.org
Спасибо сказали:
Аватара пользователя
Rodegast
Сообщения: 337
ОС: Linux

Re: Непонятное поведение видео энкодеров

Сообщение Rodegast »

Проблема может быть связана с контейнером. Сначала перегони исходник в Avi, а потом реж.
Спасибо сказали: