Я хочу конвертировать все файлы .mkv в папке в .mp4 с VLC.
Он должен использовать исходный видео- / аудиопоток и, если возможно, субтитры .ass .mkv. На самом деле это не конверсия, это больше похоже на смену контейнера - мой плеер не может читать видео MKV.
Если я выполняю это преобразование вручную (вручную), оно работает, но у меня есть много MKV-файлов для преобразования, так что это займет много времени.
Я искал в интернете пакетный файл, чтобы сделать это, и я нашел несколько. Я попытался изменить их по своему желанию, но все попытки, которые я пытался, просто создали файл .mp4, который не содержит аудиопоток и видеопоток, также не может быть воспроизведен всеми моими медиаплеерами на ПК.
Так может кто-нибудь сказать мне, как должна выглядеть партия, чтобы она работала с оригинальным видео и аудио потоком (и, может быть, .ass субтитрами)?
Ответы:
mkvtomp4
Похоже
mkvtomp4
это то, что вы хотите?Вы можете скачать версии для Windows и Linux на странице кода Google. Вам понадобится дополнительное программное обеспечение, хотя.
Проверьте сайты для загрузки для Windows или Linux. На OS X вам нужно только
brew install mkvtoolnix mp4box
если у вас есть Homebrew .Это не будет копировать ваши субтитры, хотя. Вам понадобится дополнительный шаг.
Партия FFmpeg
Если mkvtomp4 не работает для вас, может подойти и простой командный файл FFmpeg . Для Windows вы можете скачать сборки Zeranoe . В Linux проверьте FFmpeg из источников пакетов. В OS X используйте
brew install ffmpeg
.Тогда просто позвоните:
Это создаст допустимый контейнер MP4 без перекодирования. Зацикливайте файлы, когда это необходимо и доступно вашей операционной системе. Однако эта партия не будет копировать субтитры.
В * nix вы можете сделать следующее. Просто создайте файл
convert.sh
:Замените путь к вашей папке с видео здесь. Сделайте его исполняемым с
chmod +x convert.sh
, затем запустите его с./convert.sh
.В Windows вам, вероятно, понадобятся два пакетных файла ( отсюда бесстыдный плагин ), один из которых
startconvert.bat
:И тот, который выполняет преобразование:
Сохраните оба в папке с видео. Просто запустите
startconvert.bat
из папки, из которой вы хотите начать конвертацию.Субтитры
Если вы хотите добавить субтитры, вам может потребоваться ручная процедура, если следующее не работает для вас:
Чтобы извлечь субтитры, используйте:
Это предполагает, что ваш файл действительно содержит субтитры с номером дорожки с номером 3, и они могут быть экспортированы в формат SRT. Чтобы проверить, действительно ли файл содержит субтитры на дорожке 3, используйте
mkvmerge -i input.mkv
.Затем используйте MP4Box для повторного добавления субтитров в файл MP4.
источник
Это небольшая часть ответа, который дал slhck (и спасибо, slhck!), Потому что я обнаружил, что команда не работает для последней (на момент написания) ffmpeg - может быть, параметры изменились между версиями?
В Windows 7, используя ffmpeg v.20130103-git-9e36d9e-win64-static (распакуйте его с помощью утилиты 7zip), найденную через http://ffmpeg.zeranoe.com/builds/ по очереди через http://ffmpeg.org /download.html , следующая команда преобразовала файл .mov (взятый из iPhone) в файл .mp4:
Я обнаружил, что изменение части .mp4 этого на .avi также работает, чтобы изменить его на контейнер .avi. В любом целевом контейнере использование этих параметров «-vcodec copy -acodec copy», по-видимому, копирует только исходные потоки в новый контейнер (в целевой), так что это преобразование без потерь (и я предполагаю, что это будет в случае с разнообразие целевых контейнеров тоже).
Эти настройки пакетов, которые дал slhck, также сработали для меня:
callConvert.bat:
convert.bat:
источник
-c:a
и-acodec
, или-c:v
и-vcodec
. Фактически, я все еще использую первый сегодня, так как это рекомендуемый синтаксис, и оба упомянуты в документации FFmpeg . Обратите внимание, что преобразование контейнера в AVI может нарушить работу многих видео- и аудиокодеков, поскольку в файлах AVI отсутствует поддержка интеллектуального кодирования (которое использует видео H.264 - то, что дает вам iPhone). Если вы не используете контейнер MP4 или MOV в качестве цели, всегда лучше перекодировать.Старый вопрос, но вот мой ответ, для протокола. MP4 не может делать субтитры, если они не являются частью видеокадра, но вот как я конвертирую файлы .mkv в .mp4:
Сохраните его как mkv2mp4.ps1 и поместите в папку, с которой вы работаете. Щелкните правой кнопкой мыши и «Открыть в Powershell», и он сделает свое дело.
Это первый раз, когда я даже смотрю на Powershell (и последнее, на что я надеюсь - почему MS не может просто портировать Bash ?!), но он работает для меня и основан на коде, который я нашел здесь: https: // wiki .videolan.org / How_to_Batch_Encode / # Powershell
источник
Makefile
- чтобы иметь возможность перезапускать ее и конвертировать только новые источники, а также чтобы иметь возможность запускать несколько преобразований параллельно (чтобы использовать все ваши процессоры ).