Как я могу объединить субтитры с фильмом для воспроизведения на моем Android TV?
Я искал долго, но почти программа больше не работает в Ubuntu, или я не могу найти репозиторий. Здесь есть некоторый ответ, но я думаю, что он больше не поддерживается 16.04
I use Hand Brake on my ubuntu 16.04 great application and very simple to use . https://launchpad.net/~stebbins/+archive/ubuntu/handbrake-releases
Installation:
sudo add-apt-repository ppa:stebbins/handbrake-releases
sudo apt-get update
sudo apt-get install handbrake
How it work:
Если Ваше ТВ может проигрывать фильмы, которые имеют подзаголовки , мультиплексировал в тот же файл как видео, существует много преимуществ для добавления подзаголовков как дорожка подзаголовка, вместо того, чтобы записать их в видео.
mkvmerge -o movie_with_subs.mkv movie.mp4 subs.srt
, Который будет включать все дорожки от mp4 (видео, аудио, главы), и нижние индексы от srt как текстовая дорожка подзаголовка. Это сопровождает пока копирование файла, так как это не имеет к decode/re-encode видео.
пакеты Ubuntu mkvmerge в mkvtoolnix
. Существует mkvtoolnix-gui
пакет, с gui frontend. Это имеет много опций позволить Вам управлять вещами как смещение подзаголовка.
главное преимущество для этого состоит в том, что Вы стараетесь не ухудшаться, качество с другим декодируют/кодируют цикл потеря при перезаписи . Невозможно постараться не терять качество при транскодировании, и требуется много процессорного времени, чтобы даже близко подойти к качеству на размер файла хорошо закодированного источника. (например, x264 с -preset slower
, или если Ваш плеер поддерживает его, x265, если Вы готовы потратить огромную сумму процессорного времени для создания меньших файлов, которые все еще выглядят хорошими). Если Вы не заботитесь о размере файла, потому что Вы просто передаете его потоком к своему ТВ, транскодирование с x264 с -preset veryfast -crf15
может работать быстро и потерять минимальное качество.
Другое преимущество для мультиплексирования нижних индексов состоит в том, что можно затем переключить нижние индексы вкл\выкл, или сделать, чтобы плеер показал им в другой позиции по экрану.
можно также извлечь их позже и искать их, при попытке помнить строку из фильма.
можно даже извлечь их, зафиксировать опечатки и мультиплексировать их, въезжают задним ходом.
Я думаю, что MKVToolNix является самым простым и легким к использованию бесплатным инструментом, доступным для Вас для слияния видеофайла с файлом подзаголовков. Просто установите его, например, выполнение команды терминала/оболочки, такой как:
sudo apt-get install mkvtoolnix mkvtoolnix-gui -y
... и затем выполненный это, щелкните правой кнопкой по области Исходных файлов, чтобы добавить Ваш видеофайл и Ваш файл подзаголовков (шаг 1, в изображении ниже), указать местоположение целевого видеофайла MKV (шаг 2) и затем нажать кнопку Старт, мультиплексировав (шаг 3).Готово.
Мультиплексоры/мультиплексирование MKVToolNix подзаголовки отслеживают/передают потоком наряду с видеотреком / поток. Это означает что вывод файл MKV (например. /tmp/output.mkv
) будет видеофайл, который содержит подзаголовки, встроенные в него, и Вы сможете включить и выключить подзаголовки, в то время как такое видео MKV играет.
PS: если Ваше ТВ Android не играет видеофайлы MKV, используйте Плеер MX, Плеер Kodi или VLC Media Player для добавления поддержки воспроизведения MKV.
В таком случае подход laborious-yet-rewarding состоит из (1) преобразования Вашего файла подзаголовков к формату SSA, (2) редактирования строки Стиля SSA и затем (3) использование avconv
/ffmpeg
к merge/hardcode такие стилизованные подзаголовки в видеотрек / поток (символы подзаголовков будут затем преобразованы в пиктограммы или графические символы, т.е. пиксели, не только "положенные по" изображениям/кадрам видео, но и заменяющий некоторые из таких пикселей).
Вот то, как сделать это:
sudo apt-get install gnome-subtitles -y
) преобразовать Ваш файл подзаголовков (например. input.srt
) к формату SSA (например. input.ssa
) и затем сохраните файл SSA в /tmp
(Вы будете таким образом иметь /tmp/input.ssa
).sudo apt-get install gedit -y
) открыть Ваш файл SSA и затем заменить все Style
строка этим:Style: Default,Arial,16,&H00FFFF,&H00FFFF,&H00FFFF,&H77000000,2,0,3,2,1,2,10,10,10,0,0
После замены Style
строка, сохраните файл SSA и затем закройте текстовый редактор. Строка конфигурации выше глобально задаст подзаголовки с желтым шрифтом Arial на 16 ПБ и добавит полупрозрачный черный фон позади подзаголовков (для создания чтения их легче).
Теперь пора использовать avconv
:
3.1. Установите avconv
и ffmpeg
пакеты путем выполнения этой команды оболочки:
sudo apt-get install ffmpeg libav-tools -y
3.2. Переместите свой видеофайл (например. input.avi
) к /tmp
папка, чтобы закончить тем, что имел, например. /tmp/input.avi
и /tmp/input.ssa
3.3. Выполните команду оболочки cd /tmp
для порождения оболочки Linux к доступу /tmp
каталог
3.4. Hardcode подзаголовки SSA в видеофайл путем выполнения этой команды оболочки:
avconv -i input.avi -map 0:0 -map 0:1 -c:v libx264 -aspect 16:9 -q:v 1 -b:v 512k -strict -2 -c:a aac -ac 2 -filter:v subtitles=input.ssa output.mp4
Вывод команды выше будет /tmp/output.mp4
и Вы заметите, что такой видеофайл MP4 будет иметь растровые подзаголовки hardcoded.
Если Вы хотите уменьшиться, качество объединилось/произвело видео, чтобы сделать его файл меньшим и возможно ожидать меньше времени процесса слияния, чтобы закончиться, уменьшиться 512k
к меньшему значению (например. 256k
). Если Вы решаете увеличиться, качество объединилось/произвело видео за счет получения большего размера файла и возможно ожидания больше чтобы процесс слияния конец, увеличение 512k
к большему значению (например. 768k
).
Теперь он работает без преобразования в .ass
в Ubuntu 20.10
Недавно они включили поддержку libass, похоже, в пакете, так что теперь вы можете просто сделать:
ffmpeg -i hello.mp4 -vf "subtitles=hello2.srt" hello-sub.mp4
Прежде чем он был включен, вам нужно было:
ffmpeg -i hello2.srt hello.ass
ffmpeg -i hello.mp4 -vf ass=hello.ass hello-sub.mp4
Вы можете проверить поддержку libsass с помощью:
ffmpeg --version
, который теперь содержит:
--enable-libass
Сгенерированный вывод можно увидеть по адресу: https://www.youtube.com /watch?v=Q0nVA3mYXLU
Тестовые файлы можно получить с помощью:
wget -O hello.mp4 https://github.com/cirosantilli/media/blob/master/Top_Down_2D_Continuous_Game_with_Urho3D_C++_SDL_and_Box2D_for_Reinforcement_Learning_first_8_seconds.mp4?raw=true
wget -O hello2.srt https://github.com/cirosantilli/media/blob/master/Top_Down_2D_Continuous_Game_with_Urho3D_C++_SDL_and_Box2D_for_Reinforcement_Learning_first_8_seconds.srt?raw=true
где:
Связано:
Проверено на Ubuntu 20.04, ffmpeg 4.2.4.