H.264'ün (nokta ile) gerçekte ne olduğu konusunda birçok yanlış anlaşılma olduğu görülüyor. Yani, Wikipedia'dan alıntı :
H.264 / MPEG-4 Part 10 veya AVC (Gelişmiş Video Kodlama), video sıkıştırma için bir standarttır ve şu anda en yaygın kullanılan formatlardan biridir [...]
Burada esnetilecek önemli kısım, sadece bir standart olmasıdır . Bu, videolar aslında H.264 ile değil, H.264 standardını karşılayan bir kodlayıcıyla kodlanmış demektir. En yaygın olanlardan biri x264'tür (küçük harf x, nokta yok):
x264, video akışlarını H.264 / MPEG-4 AVC formatına kodlamak için ücretsiz bir yazılım kütüphanesidir .
[...]
x264, diğer H.264 kodlayıcılara kıyasla çok sayıda özellik uygulamaktadır.
Dolayısıyla, H.264 bir Arayüz türüdür ve x264 bu arayüzün bir Uygulamasıdır (gerçek işlevselliği ile).
Böylece, Pi iyi x264 kodlanmış dosyaları oynayacak.
Öyleyse neden x264 kodlu bazı dosyalar düzgün çalınmıyor, ancak her 4-6 saniyede bir duruyor (GPU-Ram miktarına bağlı olarak)?
Çoğu zaman ses budur . X264, HD video dosyaları için bir kodlayıcı olduğundan, bu dosyaların çoğu, DTS kodeğini kullanan dijital yüksek kaliteli bir ses parçasıyla gelir .
Pi (şu anda) DTS parçasının donanım kodunu çözemiyor ve CPU'su yeterince güçlü değil. Bununla ilgili resmi forumlarda bununla ilgili bir tartışma var .
Bunun sizin için geçerli olup olmadığını mediainfo
anlamak için -tool kullanabilirsiniz (yüklü olmalı, paket adları dağıtımınıza göre değişir):
[tv@raspberry]$ mediainfo some_random_movie.mkv
# Shortened output!
Audio #2
ID : 3
Format : DTS
Format/Info : Digital Theater Systems
Codec ID : A_DTS
Artık iki seçeneğiniz var:
- DTS özellikli bir alıcı satın alın (belki TV'niz de yapabilir mi?) Ve Xbmc'de (ya da hangi oyuncuyu kullanıyorsanız) "geçiş" (son nokta) özelliğini etkinleştirin .
- DTS-Tracks'i AC3'e dönüştürün (daha hızlı) veya CPU kodu çözülebilir.
Alıcınızın (HDMI-kabloyu taktığınız şeyin) neler yapabileceğini bulmak için, tvservice
-tool'u kullanın ( PATH'de değil, bu nedenle tam yola ihtiyacınız olacak):
[tv@raspberry ~]$ /opt/vc/bin/tvservice -a
PCM supported: Max channels: 2, Max samplerate: 48kHz, Max samplesize 24 bits.
AC3 supported: Max channels: 6, Max samplerate: 48kHz, Max rate 640 kb/s.
Gördüğünüz gibi, şu anki alıcım PCM ve AC3'ü çözebiliyor (DTS değil).
Bu soruna olan çözümüm, DTS olan Ses Parçalarını AC3'e dönüştürmektir. İşte tüm ses akışlarını infile.mkv
AC3'e dönüştüren ve videoya dokunmayan küçük bir tek astar :
ffmpeg :
ffmpeg -i infile.mkv -map 0 -codec:v copy -codec:s copy -codec:a ac3 outfile.mkv
avconv :
avconv -i infile.mkv -map 0 -vcodec copy -acodec ac3 -ab 256k outfile.mkv
Not: Yukarıdaki komut , sonuçta elde edilen AC3 kodlu ses akışı için bit hızını da ayarlar(bu gerekli görünüyor). 256kbps oldukça iyi olsa da (çoğu DVD 192kbps kullanır), onu azaltmak / azaltmak isteyebilirsiniz.
Neyse ki, bu sadece yaklaşık 5 dakika sürer (elbette donanımınıza bağlı olarak). Küçük bir bonus olarak, dosyanız daha küçük olur ve eğer bir Audiophile değilseniz, bir fark duymazsınız.
Yine de, 1080p FullHD Filmler kekemelik yapıyor , ekran hiç ses çıkarmadan birkaç saniye kararıyor, ancak video kayıttan yürütme devam ediyor gibi görünüyor. Film, AC3 izli bir MKV kabına kodlanmış H.264'tür. Sorun nedir?
Büyük olasılıkla, film dosyasında yanlış bir şey yoktur, ancak Xbmc ayarlarınızla. Benim durumumda sorun Xbmc'nin "yenileme hızı" idi . Bu, varsayılan olarak 60Hz olarak ayarlanmıştır. 720p ve diğer herhangi bir küçük video dosyası için bu Pi için bir sorun gibi görünmüyor, ancak 1080p dosyaları yukarıdaki sorunla sonuçlanıyor.
Yenileme hızını 60Hz'den daha düşük bir şeye düşürün (Filmler için en az 24Hz yeterlidir). Burada iki seçenek var:
- Global Xbmc (Xbmc'nin kendisi dahil):
System -> Settings -> System -> Video output -> Refresh rate
- Yalnızca filmler (video dosyası tarafından belirlenir):
System -> Settings -> Video -> Playback -> Adjust display refresh rate to match video
Yenileme oranını düşürdükten sonra, 1080p filmler de gayet iyi çalmalı.