не пинайте. пример тестовый и ни на что не претендует. единственное - будет примерно понятно как работать с фильтрами.
_DEN_ Простейший плеер на ffmpeg, 177 строк кода (нуда !полторы, почти две сотни!) ) http://www.dranger.com/ffmpeg/tutorial02.c UbIvItS чукчи ходят грязными и понимают что это никак не отразится на их здоровье...
Если кое-кто хочет много денежек в короткие сроки, то лучше сменить сферу деятельности и не поливать грязью OpenSource.
Booster у меня лично рука не поднимается кидать камень в опенсорсеров: если есть реальные идеи, желание, умение -- никто не мешает помочь какому-нть проекту иль стартовать свой а рассказы о месте роста рук оставить надо достойным пиплам, кои всё могут, знают, и вообще, крутые ребята
поживи сначала в Тундре, а потом рассказывай как там чукчам жить + учёными доказано: излишняя чистоплотность убивает иммунитет
_DEN_ Насколько я помню, в ffmpeg и его производных есть неисправленная ошибка в h264, позже залью тест стрим с этой ошибкой на проверку. Поскольку видео по сети возникает вопрос: нужен ли h264-svc? Какая сумма приемлима, если кодек платный?
_DEN_ >Извините, спор с вами бесполезен, т.к. мы говорим на разных языках. Да, спор бесполезен, не мы эти библиотеки делали.
_DEN_, в Qt есть Phonon::VideoWidget. Щас попробовал, открывает все форматы нормально, звук проигрывается + разные настройки. Загрузка нескольки файлов в очередь и их последовательное проигрывание выглядит так: Код (Text): void MediaPlayer::openFile() { QStringList fileNames = QFileDialog::getOpenFileNames(this, QString(), QDesktopServices::storageLocation(QDesktopServices::MusicLocation)); m_MediaObject.clearQueue(); if (fileNames.size() > 0) { for (int i=1; i<fileNames.size(); i++) m_MediaObject.enqueue(Phonon::MediaSource(fileNames[i])); } }
Проигрывание с удалённого источника: Код (Text): void MediaPlayer::openUrl() { QSettings settings; settings.beginGroup(QLatin1String("BrowserMainWindow")); QString sourceURL = settings.value("location").toString(); bool ok = false; sourceURL = QInputDialog::getText(this, tr("Open Location"), tr("Please enter a valid address here:"), QLineEdit::Normal, sourceURL, &ok); if (ok && !sourceURL.isEmpty()) { setWindowTitle(sourceURL.right(sourceURL.length() - sourceURL.lastIndexOf('/') - 1)); m_MediaObject.setCurrentSource(Phonon::MediaSource(QUrl::fromEncoded(sourceURL.toUtf8()))); m_MediaObject.play(); settings.setValue("location", sourceURL); } }
W4FhLF Хыхы, как всегда, все что угодно, кроме того, что нужно. Мне нужно декодить "память -> память", а не "файл -> экран", или "url -> экран".
OpenCV пробовал? там чото типа Код (Text): cvCreateFileCapture(...) while... { frame=cvQueryFrame(...) } ну и естественно обработка, сохранение..
Freeman Все верно, тока добавлю еще Код (Text): frame = cvQueryFrame( capture ); if( !frame ) break; if (img) cvReleaseImage(&img); img = cvCreateImage(cvGetSize(frame), 8, 3); cvCopy(frame, img);
Freeman, TermoSINteZ cvCreateFileCapture - вижу. cvCreateCameraCapture - вижу. А как декодить из памяти - не вижу. А мне нужно именно из памяти. Пока что не нашел, умеет ли он это в принципе...
оно опенсорц и юзает ффмпег. сталобыть есле в cvCreateFileCapture корректно заменить чтение из файла (av_open_input_file) на чтение их памяти (init_put_byte, av_open_input_stream) и перекомпилеть, то получицо то, что надо
Да, кстати, совсем забыл про OpenCV. Эта часть либы по-сути и есть надстройка над DShow. Советую посмотреть недавно вышедшую версию 2.0, там есть С++ интерфейс.
Не, OpenCV очень хорошая либа, столько алгоритмов ни одна либа в себе не объединила. Просто люди, которые её создают (студенты и выспусники НГУ, кстати) преследуют больше академический подход, т.е. это наукоёмкая библиотека, для коммерческого использования которой придётся навесить ещё один уровень абстракции.