LinuxForum.Fans
Тема

Mkv to avi

Автор: Peter 28 сообщений 12469 просмотров
#181184

Здравствуйте!

Пожалуйста, подскажите команду перекодирования mkv -> avi
с помощью mencoder или ffmpeg. Я сейчас пробую mencoder,
но пока не получается даже сформировать команду.
С ffmpeg тоже сразу не получлось.

И ещё желательно avi с видеокодеком DX50 перекодировать
с кодеком xvid.

Пётр.

#181190

Уже искал, но того чего мне надо, не нашёл. Конкретно сейчас не получается
задать требуемую опцию для mencoder.

Пётр.

#181300

если перекодировка не нужна, то проще воспользоваться avimerge из transcode

#181317
Fat-Zer написал:
если перекодировка не нужна, то проще воспользоваться avimerge из transcode

Там нужна именно перекодировка, т.к. в mkv - H264, а для avi надо, например, xvid.
Вчера я нашёл в Интернете несколько вариантов с mencoder, ссегодня попробую.
Когда я пытался до этого, у меня неправильно выбиралась одна опция,
я это подозревал, но хотел найти полноценное решение.

Пётр.

#181517

А вот ещё есть вопрос по mencoder: mkv с кодеком H264 имеет
размер кадра 1200x720, 1104x624 и mplayer не сообщает, какой
там bps, пишет нули, а для avi сообщает.
Для mencoder для xvid какой надо указать bitrate?
И что такое fixed_quant, в одном примере вместо bitrate
задано fixed_quant=4, пределы - 1-31.

Нашёл, что чем больше, тем хуже, т.е. больше какого не следует задавать?

Пётр.

#181951
Peter написал:

Пожалуйста, подскажите команду перекодирования mkv -> avi
с помощью mencoder или ffmpeg.

И ещё желательно avi с видеокодеком DX50 перекодировать
с кодеком xvid.

Для ffmpeg это будет выглядеть так:

text

ffmpeg -i in_file.mkv -vcodec mpeg4 -vb 1600k -acodec libmp3lame -ab 160k out_file.avi

ffmpeg -i in_file.avi -vcodec libxvid -vb 1600k -acodec libmp3lame -ab 160k out_file.avi

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

Peter написал:

Для mencoder для xvid какой надо указать bitrate?

Это не такой вопрос, на который можно запросто ответить.
Например, предел битрейт-а может ограничить устройство, на котором этот файл будете смотреть. (Встречал в сети рекомендации не ставить битрейт больше 2000k для просмотра на DVD-player-ax.)

Для начальной оценки требуемого битрейта, можно воспользоваться соотношением:

text

bits/(pixel*frame) = k, где k > 0.15
Взяв для примера k=0.25 и видео 1200х720 24fps:
(1200*720*25)*0.25 ~ 5200к
#181962
Peter написал:

И что такое fixed_quant, в одном примере вместо bitrate
задано fixed_quant=4, пределы - 1-31.

Нашёл, что чем больше, тем хуже, т.е. больше какого не следует задавать?

q < 10 (даже может быть q<8). Рекомендуемый вариант находится в диапазоне: q = 3...6.

И опять же, наиболее подходящий quantizer сильно зависит от содержания видео, и лучший способ определить его - сделать несколько семплов видео, и сравнить их между собой. Тоже самое относится и к битрейту.

Вырезать кусок видео-файла можно так:

text

ffmpeg -i input_file -t 120 -ss 600 -vcodec copy -acodec copy output_file
-t длина семпла, в секундах
-ss смещение в видео-файле, в секундах
для указанных опций - вырежется 2-х минутный ролик начиная с 10-й минуты видео. Смещение можно указать и так:
-ss 01:10:24 (1 час 10 мин 24 сек)
copy - скопирует указаный поток без изменений (video,audio)
#182063

Благодарю за пример, я уже сделал с помощью mencoder.
На глаз различие при близких значениях fixed_quant не будет заметно.
Я задал 2, при этом исходный mkv имел размер 1659M, а получившийся
avi оказался размером 3957M, переделывать было уже некогда.

Я бы предпочёл указать bitrate, но для mkv mplayer его не сообщал,
а как его оценить, исходя из размера кадра и выбранного кодека, я не знаю.

Пётр.

#182658

Обнаружилась неприятность - при проигрывании в mplayer перекодированного
файла, полученного как из mkv, так и из avi с другим видеокодеком, при
попытке продвинуться по файлу с помощью клавиш звук начинает идти
с начала файла.
Сейчас я пытаюсь это проверять на перекодированном avi, т.к. там
исходный файл меньше, чем mkv и результа получается быстрее.

Пробовал "-oac faac", без параметров,
-oac lavc -lavcopts acodec=libfaac
-oac lavc -lavcopts acodec=ac3 - звук сильно хрипит,

Попробовал "-oac twolame -twolameopts br=160" - вот в этом варианте
неприятности нет, звук следует за изображением при перемещении
по файлу. В исходном avi аудиокодек был mp3,
на mkv ещё не экспериментировал.

Правильно было бы с libfaac, тогда в выводе mplayer в терминал
аудиокодек указывается такой же, как в других avi.

Т.е. вопрос - в чём причина неприятности и как связать звуковй поток
с видеопотоком? Т.е. чтобы это не зависело от выбора аудиокодека.

Или, более конкретно - как добиться, чтобы при
-oac lavc -lavcopts acodec=libfaac
звуковой поток не отделялся от видео при перемещении по файлу?

Пётр.

#182682
Peter написал:
звуковой поток не отделялся от видео при перемещении по файлу?

пересоздать индекс не ???
[console]mencoder input.avi -forceidx -oac copy -ovc copy -o output.avi
[/console]

#182728

Благодарю за совет, попробую.
Я multimedia никогда не занимался и mencoder раньше никогда
не запускал, так что и понятия не имел о -forceidx.

Однако мне всё равно непонятно, почему только что созданный файл
оказался попорченым.
Если уж это бывает, то, мб., лучше сначал по отдельности сохранить
звуковой и видеопоток, а потом их объединить?
И когда в этом случае надёжнее делать перекодировку - до сохранения
или после?

Пётр.

#182731

если вы никогда не занимались этим стоит для начала крепко покурить эту тему , а уж потом лезть в консоль , все опции и фичи описаны в манах достаточно подробно , но .. если вы не знаете (к примеру) что такое bitrate как вы будете применять значения к опциям ???
Для этих целей написано 100500 гуёв , да не все они прямые и понятные , но есть вполне себе профессионально рубленные и достаточно функциональные , как они работают можно подсмотреть в консоли(запускаем командой из терминала и смотрим что пишет программа на то или иное ваше действие) , для ваших целей за глаза хватит функционала того же avidemux ...

#182740

Чтобы чему-то научиться, надо в любом случае начать это делать.
Для меня трудность не в mencoder, а в том, что я не знаю
теоретических основ multimedia, т.к. никогда этим не занимался.
Читал что-то о принципах архивирования, в т.ч. аудио и видео,
но формата самих файлов не знаю.
Вот краткое описание mencoder:
http://www.opennet.ru/tips/info/2174.shtml

Так можно ли сразу построить выходной файл правильно?

Пётр.

#182748
gramozeka написал:
[quote=Peter]звуковой поток не отделялся от видео при перемещении по файлу?

пересоздать индекс не ???
[console]mencoder input.avi -forceidx -oac copy -ovc copy -o output.avi
[/console][/quote]
К сожалению, не помогло, после выполнения этой команды явление
осталось - при перемещении по файлы звук начинает идти сначала.
При перестроении всё время бежало сообщение "Skipping frame",
исходный avi имел размер 2357MB, а перестроенный - 2118MB.

Возможно, попробую по отдельности сохранить звук и видео,
а потом объединить.

Пётр.

#182749
Peter написал:
[quote=gramozeka][quote=Peter]звуковой поток не отделялся от видео при перемещении по файлу?

пересоздать индекс не ???
[console]mencoder input.avi -forceidx -oac copy -ovc copy -o output.avi
[/console][/quote]
К сожалению, не помогло, после выполнения этой команды явление
осталось - при перемещении по файлу звук начинает идти сначала.
При перестроении всё время бежало сообщение "Skipping frame",
исходный avi имел размер 2357MB, а перестроенный - 2118MB.

Возможно, попробую по отдельности сохранить звук и видео,
а потом объединить.

Пётр.[/quote]

#182761

не понятно почему не использовать ffmpeg или Transcode , так же не понятно почему не использовать (хотя бы на первых порах) avidemux , то что вы пытаетесь сделать не понимая сути процесса и приводит к пустопорожним пляскам на ровном месте .
Если со стороны - то это выглядит примерно так :

Показать
[img=http://avto-deva.ru/wp-content/uploads/2011/05/photo1_1218882943.jpg]http://avto-deva.ru/wp-content/uploads/2011/05/photo1_1218882943.jpg[/img]

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

#182793

Я сначал и спросил, чем лучше воспользоваться, mencoder или ffmpeg,
а transcode, как мне тогда показалось из его man, скорее предназначен
для другого случая, чем мой.
Благодарю за ссылки, но Вы всё же не ответили на вопрос -
почему так получилось и что делать. Примеры использования mencoder
я нашёл в Интернете, я не помню, чтобы там рассматривалась такая ситуация.

И что делать с файлом субтитров? mkvextract позволяет его извлечь,
но ни mencoder, ни ffmpeg не предусматривают его подключения.

Пётр.

#182905

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

Вы хотя бы можете предположить, какова причина того, что звук
может отделяться от видеопотока?

Пётр.

#182949
Peter написал:

Правильно было бы с libfaac, тогда в выводе mplayer в терминал
аудиокодек указывается такой же, как в других avi.

Мало ли что там в других авишках используют. Самый беспроблемный путь для AVI - использовать mp3, constant bitrate. Это старая проблемма AVI-контейнера, в более новых версиях формата вроде как исправили; но неизвестно, поддерживает ли mencoder эти нововведения..?

Peter написал:

Т.е. вопрос - в чём причина неприятности и как связать звуковй поток
с видеопотоком? Т.е. чтобы это не зависело от выбора аудиокодека.

Используйте другой контейнер, mkv например.
Почему именно AVI? Для DVD-Player-а? Если смотрите на компьютере, mkv гораздо лучший вариант.

Вообще, странная проблемма. Не похоже это на рассинхронизацию, скорее какой-то баг вылез. Может быть, исходный файл битый. Или, mencoder не умеет толком с AAC работать..

Специально сейчас скачал с ютуба файл, сконвертировал:

text

ffmpeg -i Video.flv -f avi -vcodec libxvid -vb 1000k -acodec libfaac -ab 120k Video.avi

Все нормально воспроизводится mplayer-ом, прокрутка работает. Пробуйте конвертировать ffmpeg-ом.

Войдите или зарегистрируйтесь, чтобы ответить.