H.264 ve x264 arasındaki fark ve nasıl oynanır


23

Feragatname : Bu gerçek bir soru değil, "bilginizi, Soru-Cevap stilinizi paylaşın" değil.

Bu yüzden Ahbap Pi'mde Xbmc kullanıyorum ve gerçekte neyle oynayabileceğimi ve neyle oynayamayacağımı anlamakta güçlük çekiyorum.

RPi'nin H.264 kodlu videoları oynatabildiğini okudum , ancak yalnızca x264 kodlu videoları bulabiliyorum . Bu da işe yarar mı? Ve eğer öyleyse, neden bazı dosyalar muhtemelen çalışmayacak?

Yanıtlar:


41

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ı mediainfoanlamak 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:

  1. 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 .
  2. 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.mkvAC3'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:

  1. Global Xbmc (Xbmc'nin kendisi dahil): System -> Settings -> System -> Video output -> Refresh rate
  2. 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ı.


7
RaspberryPi.stackexchange.com'da büyük olasılıkla en iyi cevap.
Vincent P,

Ayrıca ffmpeg'in RPI için bile uygun olduğunu görüyorum. sudo apt-get install ffmpeg. Bunu RPI'da denedin mi? İyi çalışıyor mu?
Vincent P,

3
@Raphael hayır, öyle değil: stackoverflow.com/a/9477756/717341
Lukas Knuth

1
@Raphael bu senin dağıtımına bağlıdır. ArchLinux'ta bu sorunu görmüyorum.
Lukas Knuth

1
@LukasKnuth dışında iyi cevap ffmpegyok edilmedi. avconvbir çatal.
aergistal 19:15
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.