![]() |
|
Модераторы: Rickert, Alexeis, BorisVorontsov |
![]()
|
|
| JekaZZ |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 161 Регистрация: 6.10.2005 Репутация: нет Всего: 3 |
Подскажите библиотеку C/C++ для работы с MP4 файлами.
Мне нужно в программе из существующего MP4 (h264, AAC) файла вырезать часть его и передать плееру (xine лии mplayer). Как я понимаю, нужно взять заголовок и склеить его с той частью видео данных, что мне надо, причем вырезаемый кусок должен начинаться с keyframe-а. И еще дано смещение в секундах от начала файла, нужно определить смещение в байтах, откуда брать кусок. |
|||
|
||||
| nerezus |
|
|||
![]() Вселенский отказник ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3330 Регистрация: 15.6.2005 Репутация: нет Всего: 43 |
JekaZZ, а почему просто не откроешь mplayer'ом нужную часть? он это умеет.
|
|||
|
||||
| JekaZZ |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 161 Регистрация: 6.10.2005 Репутация: нет Всего: 3 |
Потому что файла нет целиком. Файл закачивается из сети и одновременно воспроизводится. Причем, воспроизводится не сначала, а с определенной позиции. Поэтому нужно начинать качать файл сразу с нужной позиции.
|
|||
|
||||
| JekaZZ |
|
||||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 161 Регистрация: 6.10.2005 Репутация: нет Всего: 3 |
Нашел в инете похожий случай. Там предлагают использовать mencoder для того, чтобы дампить удаленный файл и одновременно воспроизводить дамп mplayer-ом. Я попробовал:
Здесь mencoder тянет файл из сети с позиции 100 секунд и дампит его в локальный файл dump без перекодирования audio и video. Но такая команда создает avi файл, он не перематывается и не переключаются audio дорожки, а нужен MP4 или OGM с двумя дорожками. Хорошо бы было использовать
Но опции -ss и -dumpstream несовместимы. Вы спросите: почему я не использую ссылку напрямую в mplayer?:
Потому что mplayer в таком случает тормозит, хотя мощности компа и канала сети предостаточно. А про перемотку я вообще молчу. Поэтому выбран такой варинат - файл сначала дампится на диск, а из дампа воспроизводится, и хорошо перематывается. Но дамппиться он должен не с начала, а с заданной позиции в секундах. Сейчас в моей программе это реализованно так - программа сама качает файл: сначала заголовок, который парсит и по параметрам находит смещение в байтах, откуда начинается заданная в секундах позиция, потом качается с этого смещения и склеивается с заголовком. Mplayer воспризводит получившийся файл. Но там используется формат RealVideo. Нужно же перейти на MPEG-4. Есть какие-нибудь соображения? |
||||||
|
|||||||
![]()
|
| Вы можете найти полезным что... | |
|
|
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Мультимедия, OpenGL/DirectX | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |