| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Мультимедия, OpenGL/DirectX > MPEG 4 Библиотека |
| Автор: JekaZZ 11.3.2009, 15:09 |
| Подскажите библиотеку C/C++ для работы с MP4 файлами. Мне нужно в программе из существующего MP4 (h264, AAC) файла вырезать часть его и передать плееру (xine лии mplayer). Как я понимаю, нужно взять заголовок и склеить его с той частью видео данных, что мне надо, причем вырезаемый кусок должен начинаться с keyframe-а. И еще дано смещение в секундах от начала файла, нужно определить смещение в байтах, откуда брать кусок. |
| Автор: nerezus 11.3.2009, 22:06 |
| JekaZZ, а почему просто не откроешь mplayer'ом нужную часть? он это умеет. |
| Автор: JekaZZ 11.3.2009, 22:25 |
| Потому что файла нет целиком. Файл закачивается из сети и одновременно воспроизводится. Причем, воспроизводится не сначала, а с определенной позиции. Поэтому нужно начинать качать файл сразу с нужной позиции. |
| Автор: JekaZZ 12.3.2009, 13:48 | ||||||
Нашел в инете похожий случай. Там предлагают использовать mencoder для того, чтобы дампить удаленный файл и одновременно воспроизводить дамп mplayer-ом. Я попробовал:
Здесь mencoder тянет файл из сети с позиции 100 секунд и дампит его в локальный файл dump без перекодирования audio и video. Но такая команда создает avi файл, он не перематывается и не переключаются audio дорожки, а нужен MP4 или OGM с двумя дорожками. Хорошо бы было использовать
Но опции -ss и -dumpstream несовместимы. Вы спросите: почему я не использую ссылку напрямую в mplayer?:
Потому что mplayer в таком случает тормозит, хотя мощности компа и канала сети предостаточно. А про перемотку я вообще молчу. Поэтому выбран такой варинат - файл сначала дампится на диск, а из дампа воспроизводится, и хорошо перематывается. Но дамппиться он должен не с начала, а с заданной позиции в секундах. Сейчас в моей программе это реализованно так - программа сама качает файл: сначала заголовок, который парсит и по параметрам находит смещение в байтах, откуда начинается заданная в секундах позиция, потом качается с этого смещения и склеивается с заголовком. Mplayer воспризводит получившийся файл. Но там используется формат RealVideo. Нужно же перейти на MPEG-4. Есть какие-нибудь соображения? |