Здається, існує багато непорозумінь навколо того, що насправді є H.264 (з крапкою). Отже, цитуючи з Вікіпедії :
H.264 / MPEG-4 Part 10 або AVC (Advanced Video Coding) є стандартом для стиснення відео , і в даний час один з найбільш часто використовуваних форматів [...]
Важлива частина, яку слід розтягнути, - це лише стандарт . Це означає, що відео насправді не кодується H.264, а кодеком, який відповідає стандарту H.264. Один з найпоширеніших - x264 (малі регістри х, без крапки):
x264 - це безкоштовна бібліотека програмного забезпечення для кодування відеопотоків у формат AVC H.264 / MPEG-4.
[...]
x264 реалізує велику кількість функцій порівняно з іншими кодерами H.264.
Отже, H.264 - це свого роду інтерфейс, а x264 - це реалізація (з фактичною функціональністю) цього інтерфейсу.
Отже, Pi буде чудово відтворювати закодовані файли x264.
Тоді чому деякі закодовані x264 файли не відтворюються плавно, а зупиняються кожні 4-6 секунд (залежно від кількості GPU-Ram)?
Здебільшого це звук . Оскільки x264 є кодером для відеофайлів HD, більшість цих файлів оснащені високоякісною цифровою звуковою доріжкою, яка використовує DTS-кодек .
Pi (на даний момент) не в змозі апаратно декодувати DTS-трек, і його процесор недостатньо потужний. Про це йдеться на офіційних форумах, на які варто звернути увагу.
Щоб дізнатися, чи це так у вас, ви можете скористатися mediainfo
-tool (має бути встановлено, назви пакетів залежать від вашого дистрибутива):
[tv@raspberry]$ mediainfo some_random_movie.mkv
# Shortened output!
Audio #2
ID : 3
Format : DTS
Format/Info : Digital Theater Systems
Codec ID : A_DTS
Тепер у вас є два варіанти:
- Купіть DTS-сумісний приймач (можливо, ваш телевізор теж може це зробити?) Та ввімкніть "пропуск" (остання точка) в Xbmc (або будь-якому плеєрі, який ви використовуєте).
- Перетворіть DTS-доріжки в AC3, які можна передати (швидше) або розшифрувати процесор.
Щоб дізнатися, на що здатний ваш приймач (те, до чого ви підключили кабель HDMI), використовуйте tvservice
-tool (якого немає в PATH, тому вам знадобиться повний шлях):
[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.
Як бачите, мій поточний приймач здатний декодувати PCM та AC3 (не DTS).
Моє рішення цієї проблеми полягає в перетворенні аудіо-треків, які є DTS, в AC3. Ось невеликий однолінійний перехід, який перетворює всі аудіопотоки в infile.mkv
AC3 і не торкається відео:
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
Примітка . Вищенаведена команда також встановлює швидкість передачі бітів для отриманого аудіопотоку, кодованого AC3 (який необхідний, здається). Хоча 256kbps досить добре (більшість DVD-дисків використовує 192kbps), ви можете зменшити / зменшити.
На щастя, це займає лише близько 5 хвилин (звичайно, залежно від обладнання). Як невеликий бонус, ваш файл стає меншим, і якщо ви не Audiofhile , ви не почуєте різниці.
Тим не менш, фільми FullHD 1080p заїкають , екран замикається на кілька секунд, не чуючи звуку, але відтворення відео, як видається, продовжується. Фільм H.264 закодований у контейнері MKV із треками AC3. В чому проблема?
Швидше за все, немає нічого поганого в файлі фільму, але в налаштуваннях Xbmc. У моєму випадку проблемою була «швидкість оновлення» Xbmc . За замовчуванням встановлено 60 Гц. Для 720p та будь-яких інших невеликих відеофайлів це, здається, не є проблемою для Pi, але файли 1080p призводять до вищезгаданої проблеми.
Зменшіть частоту оновлення до чогось меншого, ніж 60 Гц (принаймні 24 ГГц достатньо для фільмів). Тут є два варіанти:
- Глобальний Xbmc (включаючи сам Xbmc):
System -> Settings -> System -> Video output -> Refresh rate
- Тільки фільми (визначається відео-файлом):
System -> Settings -> Video -> Playback -> Adjust display refresh rate to match video
Після зниження частоти оновлення фільми з роздільною здатністю 1080p також повинні відтворюватись чудово.