Help - Search - Member List - Calendar
Full Version: Muxing in TS: H264 + AC3 5.1
Форумы RDA > Технический раздел > HD Тех. помощь
adware
Muxing in TS: H264 + AC3 5.1 = FPS & synchro problems

Проблема синхронизации при муксинге в TS потоков H264 и AC3:
Муксирование в TS видео H264 720p и аудио AC3 5.1 (переименованного в MPA) приводит к нарастающему опережению звука относительно видео, на длине файла 4Gb такое опережение составляет к концу порядка 1-2 секунд, и это делает получившийся TS неприменимым. Если бы рассинхрон получался до 100ms, это еще можно было бы терпеть, но 1-2 секунды - это уже полный брак.

Подробности процесса:

- Поток H264 демуксируется из MKV в RAW H264 с помощью MKVExtract GUI, а затем муксируется в MP4 с помощью Yamb/MP4Box, с заданием правильного FPS, который соответствует конкретному фильму (как правило, 23.976 fps, очень редко 25.000 fps). Это не самый быстрый способ помещения H264 в MP4, но самый распространенный.
Правильное значение FPS для конкретного фильма можно узнать проигрывая MKV фильм со звуком AC3 внутри него, через декодер FFDSHOW/Libavcodec, и зайдя в свойства фильтра ffdshow video decoder > Info & debug, и там видим реальный/правильный FPS проигрываемого потока, при этом разумеется в проигрываемом MKV файле рассинхрона со звуком нет до самого конца фильма.

- Более быстрый способ помещения H264 потока из MKV в MP4 - это ремуксирование из MKV в MP4 через GDSMux, входящий в последний отдельный пакет Haali Media Splitter - http://haali.cs.msu.ru/mkv/MatroskaSplitter.exe
Через него можно сразу поместить и AC3 дорожки в MP4, чего не позволяет ни один другой муксер, и такой файл MP4 H264+AC3 прекрасно проигрывается на ПК, и синхронизация со звуком идеальна до самого конца фильма.
К сожалению такой файл MP4 H264+AC3 не открывает XMuxer Pro 2.2. Поэтому мы муксируем только видео H264 в MP4 через GDSMux, а звук AC3 демуксируем из MKV и переименовываем в MPA.

- Загружаем Xmuxer в окно Mux полученный любым из двух вышеописанных способов MP4 файл и AC3(переименованный в MPA) звук, задаем PCR=40, при этом для видео задается PES ID = 224, а для аудио PES ID = 189. Нажимаем Start, в итоге получаем TS файл, в котором нарастающее опережение звука относительно видео, на длине файла 4Gb такое опережение составляет к концу порядка 1-2 секунд.
При этом муксирование в TS контейнер MP4 H264 + звук AAC в отдельном MP4 контейнере, в полученном TS файле рассинхрона нет, все идеально до самого конца фильма, при этом для звука AAC мы задаем PES ID 192. Если же задавать PES ID 192 для AC3 звука, то в полученном TS файле вместо звука получается тишина с периодичным кваканьем-помехами.
То есть проблема рассинхрона имеется только при муксировании H264 с AC3 звуком, а при муксировании с AAC звуком рассинхрона нет.

Примечания:
- у всех RAW H264 720p потоков в заголовке прописан профиль High@Level 5.1 (такой заголовой формируется по умолчанию в некоторых кодировщиках H264 типа MeGUI)

- у всех RAW H264 720p потоков в заголовке прописан FPS=23.98, очень редко прописан FPS=25.00, при этом при муксировании в MP4 были заданы соответственно FPS 23.976 или FPS 25.000, именно при этих значениях идеальна синхронизация звука с видео в MKV или MP4 контейнерах.
при этом рассинхрон мы получаем в TS смуксированном через XMuxer независимо от значения FPS в заголовке RAW H264 потока, и независимо от FPS который задавался при муксировании RAW H264 в MP4 контейнер.
даже при муксировании в TS через XMuxer MP4 файла с частотой 25.000 fps, в котором был RAW H264 поток с частотой 25.000 fps в заголовке, мы все равно получаем опережение звука относительно видео на те же 1-2 секунды к концу 4Gb TS файла.

- FPS заголовка RAW H264 потока можно посмотреть при ремуксинге из RAW H264 в MP4 контейнер через FFMPEG.exe: http://ffdshow.faireal.net/mirror/ffmpeg/ffmpeg.rev8797.7z
ffmpeg.exe -i "Video.h264" -vcodec copy Video.mp4
при этом первый раз запускаем эту команду, и через несколько секунд прерываем муксинг нажатием Ctrl+C, а потом запускаем эту же команду заново, и он спросит "Overwrite?", при этом на экране мы сможем увидеть симпортированные параметры RAW H264 потока: разрешение и FPS

- полученный TS файл, в котором видео H264 720p, с профилем High@Level 5.1 в его заголовке, корректно проигрывается на ПК только через MPEG сплиттер от Gabest "Mpeg Splitter" 1.0.0.4 (фильтр MpegSplitter.ax - входит в пакет K-Lite 3.01 Full: http://www.codecguide.com/download_kl.htm), либо через встроенный в Media Player Classic сплиттер для MPEG PS/TS/PVA.
Если же мы пытаемся использовать Haali Media Splitter при проигрывании полученного TS файла, то звук играется, а видео не показывается.
Через Haali Media Splitter мы не можем проиграть видео из смуксенного через XMuxer TS файла, в котором в заголовке RAW H264 видеопотока прописаны профили: High@Level 5.1 / High@Level 5.0 / High@Level 3.2, другие же профили в заголовке он распознает корректно, и показывает видео.
Сплиттеры от Elecard не пробовал, не знаю что получится.

При этом декодирование видео TS файла, в котором видео H264 720p, с профилем High@Level 5.1 в его заголовке, во всех случаях корректно осуществляется только через Cyberlink H.264/AVC Decoder (PDVD7.x) от плейера Cyberlink PowerDVD 7.3 Ultra Deluxe (с поддержкой Blu-Ray и HD-DVD дисков), если мы используем этот декодер совместно с плейером Media Player Classic.
Если же мы используем декодер FFDSHOW Libavcodec или CoreAVC Pro 1.3, то на некоторых TS H264 720p файлах с заголовком High@Level 5.1, мы получаем мусор на экране вместо нормального видео, хотя часть таких TS H264 файлов, смуксенных через XMuxer, проигрывается нормально этими же декодерами, а в контейнерах MKV или MP4 абсолютно все H264 фильмы проигрываются корректно.

Готов выложить фрагменты для разбирательств.

С чем связана такая задача помещения в TS контейнер H264 видео со звуком AC3?
С тем что появился стационарный HD-плейер KISS DP-1600, который первый из HD-плейеров собран на чипе Sigma Designs EM8622L, и поддерживает воспроизведение видео в формате H264, но он не понимает контейнер MKV, а только TS и MP4. В ближайшее время также ожидается появление еще ряда других HD-плейеров на чипе EM8634 с поддержкой H264 видео, но в них тоже врядли будет поддержка MKV, а только TS и MP4. При помещении в MP4 контейнер по спецификации туда нельзя засунуть AC3 звук, а только AAC, а перекодировать из AC3 5.1 в AAC 5.1 - это по 40 минут на каждую звуковую дорожку 1 фильма длиной 1 час 40 минут, поэтому было бы очень хорошо если бы удалось муксировать с нормальной синхронизацией через XMuxer в TS формат H264 поток и AC3 звук, тогда не надо будет перекодировать AC3 в AAC.
А готовых фильмов H264 720p в интернете полно (свыше 1000 фильмов), и все они в MKV контейнере, 100% из них имеют звук AC3, и 99% из них имеют в заголовке RAW H264 потока профиль High@Level 5.1
P.S.
есть на мой взгляд 2 пути решения этих проблем:
1) долгий, но правильный - внести исправления и доработки в модули XMuxer (как минимум дать возможность задавания вручную FPS муксинга для RAW H264 потока, как это сделано в муксерах MKVToolnix/MKVMerge GUI и Yamb/MP4Box)
2) быстрый, но некрасивый - рассказать какие байты в заголовке RAW H264 потока надо исправлять через HEX редактор, чтобы исправить значение FPS и тип профиля на требуемое нам, при которых не будет проблем с муксингом через XMuxer, синхронизацией, а также со сплиттерами и декодерами.
grek172
примерно тоже самое,получаю плавающий рассинхрон в TS...делал в MKV2TS

QUOTE
Муксирование в TS видео H264 720p и аудио AC3 5.1 (переименованного в MPA) приводит к нарастающему опережению звука относительно видео, на длине файла 4Gb такое опережение составляет к концу порядка 1-2 секунд, и это делает получившийся TS неприменимым. Если бы рассинхрон получался до 100ms, это еще можно было бы терпеть, но 1-2 секунды - это уже полный брак.

попробуй разбить MKV на куски по 100-250мб,переделать каждый в TS и склеить
sarmana
Мне кажется сейчас вообще контейнер TS не актуален совершенно.
Уже полностью оправдал себя M2TS и вроде бы уже обновлен до версии 2 (не могу сказать точно информацию видел мельком).

В связи с этим, мне кажется самый простой и самый качественный способ собирать контейнеры через Sonic Scenarist BDA, результат будет такой же абсолютно, с одним лишь исключением, все будет корректно собрано и проигрываться везде.

Может быть не самый красивый подход, но точно качественный.
urod
Не знаю как решить проблему с десинхронизацией - может быть только убыстрить звук в besweet.
но насчет железных плейеров с проддержкой mkv - в этот вы ошибаетесь - их уже несколько.
Самый привлекательный и дешевый -
http://www.popcornhour.com/onlinestore/ind...noption=catalog
но разбирают мгновенно - он стоит только 179 баксов, он будет широкодоступен в январе.
О других можно почитать тут:
http://www.mpcclub.com/modules.php?name=Fo...file=index&c=25
DViCo TViX M-6500A
DViCo TViX M-4100SH and M-5100SH
NetGear EVA 8000
они тоже понимают mkv.
Melya
2 sarmana

Я бьюсь со сценаристами разных версий и с Sonic CineVision разных версий. Мне на любых машинах выскакивает ошибка, что у меня система не подходит.
Пробовал ХР, Vistu, разные видеокарты, одноядерные и двухядерные процессоры (Intel и AMD)
В и-нете ничего не нашёл, что бы помогло.

У кого-то он запускается без проблем, а других вообще не устанавливается. Нет таких, кто проблему поборол.

Может кто тут знает, что делать.

За помощь заранее спасибо.
Melya
Вот интересный способ http://ps3club.ru/forum/showthread.php?t=1119


А вот последний TsRemux 0.0.18 уже понимает MKV, во время написания той статьи его ещё небыло.

Я пробовал не переставляя в 4.1 и у меня даже на компе не играется.

Отпишитесь, если кто попробует, что получается.

Р.S. Топик вообще интересный, чем дальше тем интереснее.
sarmana
2 userinfoMelya:
По правде говоря еще не слышал о том, что Sonic Scenarist не устанавливается корректно на компьютер. Возможно что-то с версией или кряком не так.

Я пользуюсь версией Sonic Scenarist BDA (aka Blu-ray Disc Authoring [HDMV]) v.4.3.
Если требуется на тесты - могу залить. У меня WinXP. Для работы с программой (как отступление) думаю нужен как минимум двуядерный процессор и не очень старая видео карта.

PS. Желательно ты скриншот ошибки, если есть такая возожность.
Melya
Так и было, я устанавливал другую версию. Сейчас поставил Scenarist HDMV 4.1 но всёравно, как-то не до конца все работает. У меня виста. Сейчас попробую на ХР. Потом отпишусь.

Вообщем в ХР такие же ошибки. Вот скрины.

1. При перекодировке дорог
2. При запуске самого сценариста
3. Если на втором скрине нажимаю отменить

Если не сложно то выложи свою версию на рапидшару.
sarmana
2 userinfoMelya:

Sonic.Scenarist.BDA.v4.3.0.WinXP.Incl.Dongle.Emulator.INTERNAL-VR
ссылки на софт давайте в ПМ
roman76r
Сделал утилиту для мьюксинга в TS.
Сейчас поддерживает H.264, AC3/E-AC3, AAC, DTS.
Из опций поддерживается явное и автоматические определение fps, сдвиг аудиодорог по времени и форсирование level в H.264 (выше здесь об этом писали, сделал на всякий случай, правда мне кажется в этом толку нет).

Кому интересно - пробуйте.
О проблемах и предложениях пишите тут: Обсуждение smartLabs ts muxer ссылку поменял. p.s. на вражеские трекеры давай ссылки в ПМ

Свежая (на момент этого поста) версия лежит тут: tsMuxer 0.9.93(b )

Подробная инструкция как запускать там же в файле readme.txt

P.S. А разве Sonic Scenarist ест H264? У меня только VC-1 в нем получалось. Версия 4.2. При попытке сделать VES файл с H264 дорогой всегда в самом конце выдает ошибку.
sarmana
2 userinfoadware:
Странно что XMuxer рассинхронизирует звук, видимо он его неправильно определяет.
Попробовал сделать вот как:
1. Отдельно вложил клип в XMuxer только с 1 потоком - H264 = mux_video.ts.
2. Вложил через ffmpeg звук в другой файл mux_audio.ts
3. Еще раз в XMuxer в режиме Mux добавил уже два потока из ts -
mux_video.ts + mux_audio.ts, получил финальный mux.ts

Все эти манипуляции кстати быстрее работают, чем вкладывать через XMuxer сразу 2 потока. Результат - звук и видео полностью на местах. Попробуй с тем что у тебя не получалось.



2 userinforoman76r:
QUOTE
Сделал утилиту для мьюксинга в TS.

Ухты, радует что сдвиг пошел и в наших краях относительно HD.
Спасибо за утилитку!

QUOTE
форсирование level в H.264 (выше здесь об этом писали, сделал на всякий случай, правда мне кажется в этом толку нет

Толк есть еще как, в будущем для проигрывания очень понадобится возможность обработки профиля.

QUOTE
А разве Sonic Scenarist ест H264?

Да, разумеется smileold.gif.
Подходит и для HDMV, и для ACA, собственно будет большим недостатком у программы, если он не сможет работать с лучшим кодировщиком smileold.gif.

Есть версия 4.5 ACA, правда я найти не смог пока, возможно в 4.2 баг был.


А планируется GUI в будущем?
roman76r
Да, GUI скоро добавлю. Но там и без него все просто.

По поводу level: выше писали, что он влияет на haali media splitter. Я не заметил. Он не ест некоторые фильмы High@4.1. И еще пробовал фильмы High@5.1 которые он не ест, переделывать в High@4.1. Не помогает. ИМНО, хаали не берет некоторые H264 фильмы по другой причине. По какой пока не понятно. Если бы найти его исходники можно было бы посмотреть.
roman76r
Обновил tsMuxer до версии 0.9.95( b )

Список изменений:
Добавлен GUI. По внешнему виду сделан закос под mkvmerge.
roman76r
Обновил tsMuxer до версии 0.9.97( b )

Список изменений
- Добавлена поддержка ts и m2ts файлов. Теперь мьюксер может ссылаться не только на дорожки лежащие в отдельных файлах, но и на ts и m2ts файлы. В будущем думаю добавить evo и mkv.

Исправленные ошибки
- GUI не открывало дорожки, если в полном пути к файлу встречался пробел.
grek172
2 userinforoman76r:
Спасибо!! winkold.gif будем смотреть/пробывать что за зверь
Афоня
2 roman76r

А нельзя ли добавить поддержку *mpg файлов?
Спасибо!
grek172
2 userinfoАфоня:
TMPGEnc отлично справляется с *mpg winkold.gif
roman76r
ИМНО, в первую очеред стоит расширять поддержку HD форматов. Из кодеков это VC-1, из контейнеров evo и mkv.
Афоня
Я имел ввиду MPEG2 HD
roman76r
А! Это можно. У меня парсилка на него уже сделана. Осталось ее только в мьюексер засунуть. После VC1 сделаю. По первым прикидкам его тоже недолго добавить: он устроен попроще чем H.264.
roman76r
Обновил tsMuxer до версии 0.9.98( b )

Список изменений
- Добавлена поддержка VC-1 видео.
- Добавлена поддержка MPEG-2 видео.
- Сделан автоматический фикс потоков x264. Есть известная проблема: после мьюксинга в TS haali media splitter часто не видит H.264 видеодорожку (обычно это происходить с x264). Эта проблема исправлена.
Афоня
Спасибо roman76r . Правда файлы с расширением .mpg так и не поддерживаются sad.gif
grek172
2 userinforoman76r:
Спасибо!! программа вроде как хорошая/полезная, но в ней нет возможности выставить правильные PID-ы....стационарный проигрыватель видет только одно дорожку,что не есть гуд. можно фиксить PID-ы в других программах. но тогда нет и смысла прогонять/делать ts/ас3 через tsMuxer.


tsMuxer DTS добавляет но опять же PID-ы кривые и править их потом нельзя нигде/ни в чем.
исходник h264/ts пока непроверял но думаю результат будет такой же -> кривые PID-ы
roman76r
Обновил версию до 1.0.14

- Добавил поддержку EVO/VOB/MPG.
- Сделал ряд исправлений для лучшей совместимости с плейерами.
В том числе обновил PID-ы.
Афоня

frownold.gif
sarmana
2 userinforoman76r:
Почему бы не сделать опционально выбор пидов на определенные категории, такие как MPEG TS, Blu-Ray M2TS и ручная настройка?

Кстати GUI не на русском специально? smileold.gif
roman76r
mpg рассматривается как контейнер. Если там голое видео надо переименовать в *.mpv.

Интерфейс на албанском - чтобы буржуины могли запускать.

QUOTE
Почему бы не сделать опционально выбор пидов на определенные категории

Сделать можно. Просто не думал, что это нужно. Для чего это критично?
sarmana
2 userinforoman76r:
QUOTE
Для чего это критично?


Опции всегда хорошо smileold.gif
Если серьезно, рано или поздно будет необходимо указывать под какой формат собирается контейнер и чем или на чем будет проигрываться.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Invision Power Board © 2001-2024 Invision Power Services, Inc.