Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Общие вопросы .NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.04.2013, 22:53   #1
_SanR
Пользователь
 
Регистрация: 09.02.2013
Сообщений: 48
Вопрос AForge.Video.VFW.AVIWriter большой размер файла с видео

Привет Всем

Использую AForge
Вот текст класса, его конструктора и метода который добавляет фрейм в видео файл.
Код:
using AForge.Video.VFW;

class CameraWriter
{

AVIWriter writer;
public CameraWriter()
{
    writer = new AVIWriter(); 
    writer.FrameRate = 1;
    writer.Quality = 1;
    writer.Open(FolderDirectory + "\\video.avi", 768, 576);       
} 

public void AddFrameToVideo(System.Drawing.Bitmap frame)
{     
    writer.AddFrame(frame);
}

}
У видео поставил 1 кадр в секунду, файл с 10-ти секундным видео весит 11Мб(при 1 кадре в секунду). Довольно много.
Если сохраняю кадр в формате jpg получаю размер 23кб. Хотелось бы получить видео размером 23*10 = 230кб (при 1 кадре в секунду длиной в 10 секунд) или около того.
Как можно уменьшить размер видео файла?
Или для этой задачи следует использовать что-то еще нежели AForge?

Последний раз редактировалось _SanR; 29.04.2013 в 23:34.
_SanR вне форума Ответить с цитированием
Старый 30.04.2013, 12:41   #2
stalsoft
Форумчанин
 
Регистрация: 09.06.2011
Сообщений: 147
По умолчанию

Я когда то делал шпиончег:

Код:
public string MakeVideo(string imagesPath, string saveToPath, int width, int height, int framesRate)
        {
            try
            {
                VideoFileWriter writer = new VideoFileWriter();
                writer.Open(saveToPath, width, height, framesRate, VideoCodec.MPEG4);
                foreach (string fName in Directory.GetFiles(imagesPath))
                {
                    Image img = System.Drawing.Image.FromFile(fName);
                    Bitmap tmp = new Bitmap(img, width, height);
                    writer.WriteVideoFrame(tmp);
                    tmp.Dispose();
                    img.Dispose();
                }
                writer.Close();
                writer.Dispose();

                return "Video was successfully saved to [" + saveToPath + "]";
            }
            catch (Exception exc)
            {
                return exc.Message;
            }
        }
Размер видео был адэкватный.

ЗЫ. думаю в коде понятно где нужно подставить свои значения.
У женщин чары образуются из стрингов;
А у программистов наоборот - стринги образуются из чаров;
stalsoft вне форума Ответить с цитированием
Старый 30.04.2013, 20:31   #3
_SanR
Пользователь
 
Регистрация: 09.02.2013
Сообщений: 48
По умолчанию

Да. То что нужно. Теперь такое же видео весит ~ 500кб. В 20 с лишним раз меньше.
+ Уменьшил размер фрейма. Картинка адекватная и тоже самое видео весит ~110кб. Спасибо!

На заметку: при добавлении либы произошли проблемы пришлось добавить в App.config тегу startup аттрибут useLegacyV2RuntimeActivationPolicy= "true":
Код:
<configuration>
    <startup useLegacyV2RuntimeActivationPolicy="true"> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
    </startup>
</configuration>
+ Сама либа со всем необходимым
Вложения
Тип файла: rar AForge.Video.FFMPEG.rar (5.72 Мб, 69 просмотров)

Последний раз редактировалось _SanR; 30.04.2013 в 20:40.
_SanR вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
MinGW - почему такой большой размер файла? frommars Qt и кроссплатформенное программирование С/С++ 5 18.10.2012 16:08
DSPACK большой размер видео stasones Компоненты Delphi 3 22.07.2012 15:46
как привязать окно под размер файла - видео проигрыватель AVI _Solomon_ Общие вопросы Delphi 6 26.01.2007 02:32