LINUX.ORG.RU

DVD to AVI способом LOR FAQ


0

0

Всем доброго времени суток.
Перекодировал фильм из DVD в AVI для КПК:
http://www.linux.org.ru/books/lor-faq/lorFAQ-21.html#ss21.19
, но в результате звук разъезжается с изображением.
Кто с этим сталкивался и как проблема решается?
Спасибо за помощь.
anonymous

Действительно, mencoder иногда делает такие "разъезжающиеся" файлы.

План 1: "вылечить" avi-файл с помощью ffmpeg.

ffmpeg -i broken.avi -acodec copy -vcodec copy should-be-good.avi

Если не помогло, есть план 2: обойти mencoder, закодировать фильм через ffmpeg.

1) делаешь mplayer -dumpstream dvd://, в результате получаешь stream.dump (это mpeg2-файл)

2) используешь ffmpeg для перекодирования stream.dump во что надо. Если надо просто "вылечить" длительность, ffmpeg -i stream.dump -vcodec copy -acodec copy stream.mpg. Если закодировать (параметры не полностью соответствуют LOR FAQ!):

ffmpeg -i stream.dump -vcodec mpeg4 -acodec libmp3lame -ab 128k -ac 2 -s 320x176 -b 300k -qmin 3 -qmax 5 -g 300 -me full -flags +4mv+qpel+trell out.avi

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

Огромное спасибо за совет.
Второй способ сработал на отлично.
Хорошо бы это в FAQ внести.

anonymous
()
Ответ на: комментарий от AEP

Позже присмотрелся а получившемуся фильму и на движущихся сценах
заметил распадание на квадратики.
Это битрейт маловат? Или я не прав?

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

Битрейт маловат, или, что то же самое, q велико. Кроме того, кодировать полагается в два прохода, а я привел пример для однопроходного кодирования.

И еще, если устройство поддерживает H.264, имеет смысл использовать этот кодек (-vcodec libx264, разумный диапазон q от 20 до 30) вместо mpeg4.

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

Прощу прощения за назойливость, но я просто не разбираюсь во всех
этих тонкостях и стандартах. У меня КПК HP с Windows Mobile 5 и
проигрывателем tcpmp.
Судя по инфе в интернете tcpmp поддерживает H.264:
http://offline.computerra.ru/2007/688/320820/ (последний абзац).
Вопросы:

1) прав ли я, что мой tcpmp будет играть H.264?

2) В приведенном выше примере я должен был делать 2 прохода?
Как делать второй проход? Той же самой командой ffmpeg....., или
какой-то другой? Если той же самой, то как это вообще работает?
Ведь он в этом случае будет опять брать информацию из dump-а и
класть ее в out.avi. В чем тут разница между первым и вторым проходами?

3) Какой все-таки способ предпочтительнее при возможности пользоваться
и тем и другим?

4) Способ с H.264 должен быть за один проход или за два? Если за два,
то какими командами.

PS: давно не мог на форуме добиться на эти мои вопросы настолько
четких и вразумительных ответов.

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

> 1) прав ли я, что мой tcpmp будет играть H.264?

Не знаю. У меня iPod Video 80 GB, который h.264 играет, но для которого mencoder не может сделать читаемый mp4-файл (т.е. использование ffmpeg - вынужденная мера). Так что попробуй :) только кодироваться будет намного медленнее.

> 2) В приведенном выше примере я должен был делать 2 прохода?

Да, вот так (mpeg4, 600..800 kbps, q=3..7):

ffmpeg -i stream.dump -vcodec mpeg4 -passlogfile logfile -an -s 320x176 -pass 1 -b 700k -bt 100k -qmin 3 -qmax 7 -g 300 -me full -flags +4mv+qpel+trell out.avi

(здесь -an говорит, что на кодирование звука время тратить не надо)

rm out.avi

ffmpeg -i stream.dump -vcodec mpeg4 -passlogfile logfile -acodec libmp3lame -ab 128k -ac 2 -s 320x176 -pass 2 -b 700k -bt 100k -qmin 3 -qmax 7 -g 300 -me full -flags +4mv+qpel+trell out.avi

(только с новейшим ffmpeg из SVN это не работает - assertion failed в конце)

> 3) Какой все-таки способ предпочтительнее при возможности пользоваться и тем и другим?

> 4) Способ с H.264 должен быть за один проход или за два? Если за два, то какими командами.

Наилучшее качество при заданном битрейте дает двухпроходное кодирование в H.264 (про snow пока забыли, тем более что его КПК не поддерживают). При кодировании в один проход ключевые кадры кодировщик расставляет как попало. Однако у меня на iPod'е места пока хватает (и это за год использования!), так что я кодирую в H.264 в один проход с фиксированным q. Для двухпроходного кодирования в H.264 надо в командах выше заменить -vcodec mpeg4 на vcodec libx264 и -qmin 3 -qmax 7 на -qmin 24 -qmax 28.

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

Вот теперь фильм получился что надо (способ H.264). Даже короче: 274 Мб против 350 в предыдущем случае.
Еще раз спасибо.

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