1 / 1 / 0
Регистрация: 05.09.2011
Сообщений: 11
|
|
1 | |
ffmpeg06.09.2011, 16:19. Показов 4664. Ответов 13
Метки нет Все метки)
(
Всем привет, помогите начинающему разобраться с такой проблемой: ffmpeg + sdl - очень долго приложение сидит в функции av_find_stream_info (от 2 до 10 секунд). В чем может быть проблема?
Заранее благодарен! Добавлено через 1 минуту Файлы размером, в среднем, 40 Мб.
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
|
|
06.09.2011, 16:19 | |
Ответы с готовыми решениями:
13
Ffmpeg конфликт библиотек ffmpeg конвертация файла Подключение библиотеки ffmpeg к проекту Обработка массива байт проходящих с ip -камеры ffmpeg' ом |
1 / 1 / 0
Регистрация: 05.09.2011
Сообщений: 11
|
|
06.09.2011, 22:08 [ТС] | 3 |
FFMPEG советуют использовать вместо нее avformat_find_stream_info. но результат тот же..именно в этой функции все дружно подтормаживает....Может быть есть еще какие то соображения? Спасибо!
0
|
![]() |
||||||
08.09.2011, 10:39 | 4 | |||||
Других соображений нет.
Могу только сказать что конструкция:
1
|
1 / 1 / 0
Регистрация: 05.09.2011
Сообщений: 11
|
|
08.09.2011, 16:11 [ТС] | 5 |
Спасибо большое, буду пробовать!!!
Добавлено через 5 часов 18 минут Если не сложно посоветуйте еще по такому вопросу....Сам плеер вроде бы отладил...проблема сейчас такая: нужно проиграть файлы которые находятся на другой машине в расшаренном каталоге, при открытии 5 секундная задержка как минимум....если посмотреть диспетчер задач, то в момент открытия возрастает нагрузка на сеть плюс оперативная память, которая выделяется под плеер, вырастает ровно на 40 Мб(размер avi файла) что можно сделать в данной ситуации? Спасибо!
0
|
![]() |
|
08.09.2011, 21:42 | 6 |
По-моему все логично, 5 секунд тратиться на загрузку файла размером 40Мб.
У тебя же не потоковое вещание идет, думаю что так и должно быть. Я использовал http://ffmpeg.zeranoe.com/builds/ если что.
1
|
1 / 1 / 0
Регистрация: 05.09.2011
Сообщений: 11
|
||||||
26.09.2011, 18:36 [ТС] | 7 | |||||
lazybiz, Здравствуйте, вы не могли бы помочь мне по ffmpeg. У меня сейчас такая беда: не освобождается оперативная память.
очистку выполняю следующим образом: av_close_input_file(is->pFormatCtx); packet_queue_flush1(&is->videoq); Кодеки я далее использую повторно, поэтому очищать их не нужно. то есть очистку делаю только очереди для видеопотока, и закрываю файл. Функция очистки очереди выглядит так:
0
|
![]() |
|
26.09.2011, 19:15 | 8 |
Трудно что-либо сказать. В коде можно полностью убрать переменную cnt но это не решит Вашей проблемы.
Есть несколько вопросов: 1. Память, используемая программой, постоянно растет? 2. Освобождаются ли фрэймы посредством av_free( frame ) ? 3. Можете ли выложить на форум/скинуть на почту (bizn@inbox.ru) код целиком?
1
|
1 / 1 / 0
Регистрация: 05.09.2011
Сообщений: 11
|
|
27.09.2011, 09:57 [ТС] | 9 |
Здравствуйте!
Ситуация примерно следующая: 1. Имеется так скажем плейлист из списка файлов. 2. При воспроизведении 1-го файла инициализируются кодеки и т.д. 3. Далее, для открытия последующих файлов используются те же самые кодеки (это сделано для ускорения работы) 4. Размер очереди для видеопотока делал различную, сейчас она размером в 1.5 МБ 5. После закрытия файла, то есть после выполнения функций: avcodec_flush_buffers(is->videoCodec); av_close_input_file(is->pFormatCtx); память освобождается но не до исходного размера, остается не освобожденным примерно 1 МБ, может быть чуть больше. 6. Таким образом с каждого файла получается прирост неосвобожденной памяти около 1 - 1.5 МБ. (Это число очень похоже на размер очереди) 7. Поэтому я пробовал создавать очередь в 15 МБ, скажем, картина была такая что после воспроизведения файла и с течением определенного времени за которое декодировался видеопоток и очередь заполнялась память вырастала на данные 15 МБ, после этого я вызываю функцию очистки очереди и из этих 15 МБ очищается мегабайт 7 от силы. 8. Для следующего файла используется тот же самый указатель на очередь, то есть для всех файлов я использую одну глобальную структуру VideoState. 9. Еще такой странный факт, что если сделать размер очереди меньше мегабайта, ну, скажем, пол мегабайта, то прирост памяти составляет как раз те самые пол мегабайта с файла. Как такое может происходить, что очередь малого размера не очищается вообще, а если размер большой - то только частично? Извиняюсь за такое кривое описание, но, если вы можете помочь, то я был бы очень признательным! фрэймы очищаются.
0
|
![]() |
|
27.09.2011, 17:00 | 10 |
Опять же очень трудно что-либо сказать видя только функцию packet_queue_flush1() и то описание которое Вы дали.
Чтобы Вам помочь нужно видеть код целиком. Не исключаю и того, что это может быть багом данной версии FFMPEG. Кстати, инициализацию кодеков я бы перенес в отдельную функцию, и вызывал бы ее в самом начале.
1
|
1 / 1 / 0
Регистрация: 05.09.2011
Сообщений: 11
|
|
03.10.2011, 15:52 [ТС] | 11 |
Спасибо, с памятью вопрос решил. Если вам не сложно, можете помочь с такой проблемой:
Проигрываю поочередно файлы, что бы воспроизвести звук при открытии нового файла вызываю SDL_OpenAudio, затем SDL_PauseAudio. Далее при воспроизведении следующего файла вызываю SDL_CloseAudio и далее снова SDL_OpenAudio, SDL_PauseAudio. Возникают такие ситуации когда все зависает на функции SDL_CloseAudiо, может быть я что то не так делаю? Заранее спасибо!
0
|
1 / 1 / 0
Регистрация: 05.09.2011
Сообщений: 11
|
|
03.10.2011, 16:10 [ТС] | 13 |
В любом случае спасибо, не подскажете куда мне с таким вопросом обратиться?
0
|
![]() |
|
03.10.2011, 16:20 | 14 |
![]()
0
|
03.10.2011, 16:20 | |
Помогаю со студенческими работами здесь
14
Фильтры в ffmpeg: нужно ли отдельными функциями заполнять AVFilterContext? FFMPEG libx264 Как правильно указать параметры энкодеру? Ffmpeg изменение bit_rate не влияет на качество записи видео
Ffmpeg на С++ Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |