сценарий
У меня есть библиотека фильмов, которую я хочу сделать для моего планшета Android с помощью VLC для воспроизведения. Я хочу использовать H264+AAC для наилучшего визуального качества через мобильное интернет-соединение. Я также хочу использовать контейнер Matroska, который поддерживает текстовые субтитры, а не растровые субтитры, которые поддерживает MPEG2TS.
У меня установлен Mediatomb и UPnP работает как надо, я могу нормально транслировать видео и аудио без транскодирования.
проблема
Я могу нормально транскодировать и преобразовывать в MPEG2. Но воспроизведение H264 останавливается через 10-40 секунд в одном и том же месте каждый раз для любого видео, но в разных местах для каждого видео. Воспроизведение даже не начинается на VLC на ПК (останавливается после первого кадра).
Configs
Я использую этот скрипт
#!/bin/bash
LINES=720
PRESET=veryfast
PROFILE=main
TUNE=zerolatency
AUDIO="-c:a libfaac -b:a 128k -ar 48000 -ac 2 -async 1"
# Works well
VIDEO="-c:v mpeg2video -b 8192k"
# Freezes after a few seconds seconds.
#VIDEO="-c:v libx264 -preset ${PRESET} -tune ${TUNE} -profile ${PROFILE}"
SUBTITLES="-c:s copy"
exec /usr/bin/ffmpeg -threads 2 -i "${1}" -filter:v scale=-1:720 $VIDEO \
$AUDIO $SUBTITLES -f matroska -y "${2}" &> /store/tmp/log
Мой конфиг mediatomb с соответствующим разделом:
<profile name="h264stream" enabled="yes" type="external">
<mimetype>video/x-matroska</mimetype>
<accept-url>no</accept-url>
<first-resource>yes</first-resource>
<hide-original-resource>yes</hide-original-resource>
<accept-ogg-theora>yes</accept-ogg-theora>
<sample-frequency>48000</sample-frequency>
<audio-channels>2</audio-channels>
<agent command="/etc/mediatomb/ffmpeg.sh" arguments="%in %out"/>
<buffer size="104857600" chunk-size="262144" fill-size="524288"/>
</profile>
Если я выполню команду tail -f /store/tmp/log
я вижу, что процесс FFMPEG все еще кодируется даже после остановки воспроизведения на планшете. Фактически, это довольно счастливо жует. И это также кодирование со скоростью, которая быстрее, чем исходный материал, поэтому он не отстает. Воспроизведение на планшете происходит плавно до внезапной остановки.
Я пытался использовать разные параметры пресета, профиля и настройки, но безрезультатно, время до его зависания кажется обратно пропорциональным скорости работы кодера (высокая скорость кодирования, короткое время остановки)