Originally Posted by
pdv-rt-n16
Эксперимент:
Взял исходник - файл с камеры Сони1920х1080 в макс качестве формат m2ts, размер 250Мб.
Сконвертил его одной прогой 3 раза в разные форматы: avi, mp4, mkv. Критерий конвертации поставил несколько неожиданный: выходной файл должен быть1920х1080 и 250Мб. Все 4 файла (вместе с исходным) залил на винт роутера RTN-16 и решил просмотреть их на ТВ ЛЖ встроенным плеером с передачей по LAN, и через TViX-6500 по Wi-Fi (доступ по NFS). При этом контролировал нагрузку на сеть и на проц роутера.
В результате на ТВплеер:
m2ts шел рывками - смотреть невозможно. Качество картинки наилучшее. Сеть нагружена сплошным потоком 50...70 kb/s. Проц нагружен на 100%
avi ровная качественная картинка с редкими рывками. Сеть - волнами 10...50 kb/s. Проц - равномерно 65%
mp4 без дерганья, но картинка отстой. Сеть - 30 kb/s. Проц - 45...50%
mkv чисто и ровно. Картинка ближе всего к m2ts. НО... Сеть загружена короткими импульсами в 60...80 kb/s. Но импульсы в 5...6 раз короче пауз нулевого потока. Проц в такт импульсов загружен на 50% остальное время 1,5...2%.
Почти аналогичная картина на TViX-6500. Только ВСЕ файлы шли ровно и без рывков (не смотря на wi-fi) и нагрузка на проц роутера при просмотре m2ts не превышала 70%.
Вывод: свои съёмки храню на винте в m2ts как наиболее качественные, а для просмотра конверчу на винт роутера в mkv как наиболее смотрибельный дома ( к роутеру подцеплены 3ТВ, 2компа, TViX и пара смартфонов).
Вопрос: почему файлы одинаковых объёмов и продолжительности (т.е. с равными потоками) так поразному грузили сеть? и раз файлы просто передавались (без конвертации налету) почему так поразному грузился процессор роутера?
MKV это КОНТЕЙНЕР а не ФОРМАТ.
Далее предположения:
1) Потому, что некоторые контейнеры\форматы можно читать линейно, а некоторые - нет. Например, тот же пресловутый звук. В некоторых форматах звук записан в начале файла полностью, потом записано изображение. В некоторых - в каждый кадр вставлено "3 секунды звука + 3 секунды видео"
2) Потому, что у одних форматов фрагментация выше чем у других (тому же MPEG2 требуется примерно одинаковое количество данных на кадр, в то время как DIVX берет 1 полный кадр, а дальше у него идут только относительные изменения, которые весят не так много.
3) Некоторые форматы избыточны
4) У вас вероятно дерьмовый софт в ТВ-Плеере, так как не умеет предзагрузку (когда загружается еще N секунд "вперед", на случай мелкого падения в сети). Попробуйте CrystalPlayer-ом такое посмотреть с компа
Резюмируя:
Роутер отдает двоичные данные (ФАЙЛ), и ему глубоко параллельно, что там - домашнее порево или архив исходников ядра linux. Вы можете померять это любой качалкой на компе - скорость будет одинаковая. Проблемы в вашем случае случаются от того, что ваш плеер неравномерно прогружает данные, непоследовательно прогружает данные, обладает избыточностью чтения данных. Нужное подчеркнуть. Также учитывайте что файл - это сплошная последовательность данных. Файлы хранятся в кластерах по 512 байт (или как отформатируете). Так вот если вы запросите 600 байт (1..600), то роутеру прийдется прочитать 1024 байта (2 кластера- К1 и К2) и отдать вам 600. Запросив следующие 600 байт (601.. 1200), ему прийдется прочитать кластеры К2 и К3.
Таким образом он дважды читает кластер К2 (для первых 600 и для вторых 600) в связи с чем производительность падает в 2 раза.
Last edited by FilimoniC; 03-03-2011 at 15:25.
Sorry for my bad English.
Покупайте Отечественных Слонов!!!