Skenario
Saya memiliki perpustakaan film yang ingin saya streamable ke tablet Android saya menggunakan VLC untuk pemutaran. Saya ingin menggunakan H264 + AAC untuk kualitas visual terbaik melalui koneksi internet seluler. Saya juga ingin menggunakan wadah Matroska yang mendukung teks terjemahan yang bertentangan dengan subtitle bitmap yang didukung MPEG2TS.
Saya telah menginstal Mediatomb dan UPnP berfungsi sebagaimana mestinya, saya dapat melakukan streaming video dan audio dengan baik tanpa transcoding.
Masalah
Saya bisa transcode dan downsample ke MPEG2. Tetapi pemutaran H264 berhenti setelah 10-40 detik di tempat yang persis sama setiap kali untuk satu video tetapi tempat yang berbeda untuk setiap video. Pemutaran bahkan tidak dimulai pada VLC pada PC (berhenti setelah frame pertama).
Konfigurasi
Saya menggunakan skrip ini
#!/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
Konfigurasi mediatomb saya dengan bagian yang relevan:
<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>
Jika aku melakukan tail -f /store/tmp/log
Saya dapat melihat bahwa proses FFMPEG masih melakukan penyandian bahkan setelah pemutaran berhenti pada tablet. Infact, itu cukup senang mengunyah. Dan itu juga pengkodean pada tingkat yang lebih cepat dari bahan sumber sehingga tidak tertinggal. Pemutaran pada tablet halus sampai tiba-tiba berhenti.
Saya sudah mencoba menggunakan parameter preset, profil dan tune yang berbeda tetapi tidak berhasil, waktu hingga membeku tampaknya berbanding terbalik dengan seberapa cepat encoder berjalan (kecepatan encoding tinggi, waktu singkat untuk membekukan)