Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.90/21: Рейтинг темы: голосов - 21, средняя оценка - 4.90
20 / 12 / 5
Регистрация: 19.10.2012
Сообщений: 102
Записей в блоге: 1

Видеоплеер отказывается воспроизводить формат avi

25.10.2012, 19:47. Показов 4536. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, проблема такая пишу видео плеер по книге, усовершенствовал как мог. Но на отрез отказывается воспроизводить формат avi, mp4 воспроизводит без проблем. Подскажите как заставить проигрывать avi.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
//---------------------------------------------------------------------------
 
#include <vcl.h>
#pragma hdrstop
 
#include "Unit1.h"
#define MINUTE(ms)((ms/1000)/60)
#define SECOND(ms) ((ms/1000)%60)
 
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
AnsiString aPath; TSearchRec aSearchRec; int p,f;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
MediaPlayer1->Display=Form1;
Timer1->Enabled=false;
TrackBar1->Max=65000;
ListBox1->Visible=false;f=0;
}
//---------------------------------------------------------------------------
 
 
TForm1::GetFrameSize(AnsiString f, int * w, int * h)
{
if(f.Pos(".avi")==0){
//пользователь выбрал mp4 файл
*w=Form1->ClientWidth;
*h=Form1->ClientHeight;
return 0;}
//пользователь выбрал avi файл
//в заголовке avi есть иструкция о размере файла
struct{
char RIFF[4];//строка RIFF
long int nu_1[5];//не используется
char AVICH[4];//строка AVICH
long int nu_2[9];//не используется
long int w;//ширина кадра
long int h; //высота кадра
}header;
TFileStream *fs;//поток для чтения заголовочного файла
/*оператор обьявления потока и его создания можно обьединить
TFileStream *fs=new TFileStream(f,fmOpenRead);*/
fs=new TFileStream(f,fmOpenRead); //открыть поток для чтения
fs->Read(&header,sizeof(header)); //прочитать заголовок файла
*w=header.w;
*h=header.h;
delete fs;}
 
void __fastcall TForm1::BitBtn1Click(TObject *Sender)
{p=0; 
OpenDialog1->Title="Выбор клипа";
if(!OpenDialog1->Execute())
return;
if(MediaPlayer1->FileName==OpenDialog1->FileName)
return;
ListBox1->Clear();
aPath=ExtractFilePath(OpenDialog1->FileName);
if(FindFirst(aPath+"*.mp4",faAnyFile,aSearchRec)==0){
ListBox1->Items->Add(aSearchRec.Name);
while(FindNext(aSearchRec)==0){
ListBox1->Items->Add(aSearchRec.Name);
p++;}
int n=ListBox1->Items->IndexOf(ExtractFileName(OpenDialog1->FileName));
ListBox1->ItemIndex=n;
Form1->Caption="Видео плеер "+aPath+ListBox1->Items->Strings[n];}
resize(1);
ScrollBar1->Max=MediaPlayer1->Length;
//вывести информацию о времени воспроизведения
track_time();
MediaPlayer1->Play();
Timer1->Enabled=true;
BitBtn1->Enabled=false;
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::BitBtn2Click(TObject *Sender)
{
MediaPlayer1->Pause();
 
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::MediaPlayer1Notify(TObject *Sender)
{
if(MediaPlayer1->Mode==mpPlaying)
Timer1->Enabled=true;
 
}
//---------------------------------------------------------------------------
 
 
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
MediaPlayer1->Close();
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
int ms=MediaPlayer1->Position;
AnsiString st=IntToStr(SECOND(ms));
if(st.Length()==1)
st="0"+st;
st=IntToStr(MINUTE(ms))+":"+st;
Label3->Caption=st;
ScrollBar1->Position=MediaPlayer1->Position;
if(MediaPlayer1->Mode==mpPlaying){
BitBtn1->Enabled=false;
BitBtn2->Caption="||";}
else{
BitBtn1->Enabled=true;
BitBtn2->Caption=">";}
if(ScrollBar1->Position==ScrollBar1->Max)
swtch_off();
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::ScrollBar1Scroll(TObject *Sender,
      TScrollCode ScrollCode, int &ScrollPos)
{
MediaPlayer1->Position=ScrollBar1->Position;
MediaPlayer1->Play();
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::FormResize(TObject *Sender)
{
if(Timer1->Enabled==true){
resize(0);
ListBox1->Visible=false;}
}
//---------------------------------------------------------------------------
 
TForm1::resize(int a)
{
int fw,fh;//размер кадра
int top,left;//левый верхний угол экрана
int sw,sh; //размер экрана(ширина, высота)
int mw,mh; //максимально возможный размер экрана(определяется текущим размером формы)
float kw,kh;//коэфициент мсаштабирования кадра по ширине и высоте
float k; //коэфициент масштабирования кадра
GetFrameSize(OpenDialog1->FileName,&fw,&fh);//получаем размер кадра клипа
mw=Form1->ClientWidth;  //вычисляем максимально возможный размер
mh=Form1->Panel1->Top-10;
if(fw<mw)
kw=1; //кадр по ширине меньше размера экрана
else
kw=(float)mw/fw;
if(fh<mh)
kh=1; //кадр по высоте меньше размера экрана
else
kh=(float)mh/fh;
//маштабирования должно быть пропорциональным
if(kw<kh)
k=kw;
else
k=kh;
//здесь масштаб определен
sw=fw*k;//ширина экрана
sh=fh*k; //высота экрана
a==3?left=(Form1->ClientWidth-sw-270)/2:left=(Form1->ClientWidth-sw)/2;
top=(Panel1->Top-sh)/2;
if(a==1){
MediaPlayer1->FileName=OpenDialog1->FileName;
MediaPlayer1->Open();}
else if(a==2){
MediaPlayer1->FileName=aPath+ListBox1->Items->Strings[ListBox1->ItemIndex];
MediaPlayer1->Open();}
MediaPlayer1->DisplayRect=Rect(left,top,sw,sh);
/*если размер кадра выбраного клипа меньше размера кадра предидущего клипа
то экран (область формы) надо очистить*/
Form1->Canvas->FillRect(Rect(0,0,ClientWidth,Panel1->Top));
}
void __fastcall TForm1::FormClick(TObject *Sender)
{
if(Timer1->Enabled==true)
MediaPlayer1->Pause();
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::TrackBar1Change(TObject *Sender)
{
waveOutSetVolume(0,MAKELONG(TrackBar1->Position,TrackBar1->Position));        
}
//---------------------------------------------------------------------------
 
 
 
void __fastcall TForm1::ListBox1Click(TObject *Sender)
{
resize(2);
MediaPlayer1->Play();
Form1->Caption="Видео плеер "+aPath+ListBox1->Items->Strings[ListBox1->ItemIndex];
ScrollBar1->Max=MediaPlayer1->Length;
ListBox1->Visible=false;
track_time();
}
//---------------------------------------------------------------------------
 
 
TForm1::track_time()
{
//вывести информацию о времени воспроизведения
MediaPlayer1->TimeFormat=tfMilliseconds;
int ms=MediaPlayer1->Length;
AnsiString st=IntToStr(SECOND(ms));
if(st.Length()==1)
st="0"+st;
st=IntToStr(MINUTE(ms))+":"+st;
Label1->Caption=st;
Label3->Caption="0:00";
}
void __fastcall TForm1::Button1Click(TObject *Sender)
{
if(!f){
ListBox1->Visible=true;
resize(3);
f=1;}
else{
ListBox1->Visible=false;
resize(0);
f=0;}
}
//---------------------------------------------------------------------------
 
bool TForm1::son(bool parametr)
{
OSVERSIONINFO ver;
ver.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
GetVersionEx(&ver);
if (ver.dwPlatformId == VER_PLATFORM_WIN32_NT) // в семействе NT для выключения необходимо иметь привелегию SE_SHUTDOWN_NAME
        {
        HANDLE hToken;
        TOKEN_PRIVILEGES* NewState;
        OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES,&hToken);
        NewState=(TOKEN_PRIVILEGES*)malloc(sizeof(TOKEN_PRIVILEGES) + sizeof (LUID_AND_ATTRIBUTES));
        NewState->PrivilegeCount = 1;
        LookupPrivilegeValue(NULL,SE_SHUTDOWN_NAME,&NewState->Privileges[0].Luid);
        NewState->Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
        AdjustTokenPrivileges(hToken, FALSE, NewState, NULL, NULL,NULL);
        free(NewState);
        CloseHandle(hToken);
        }
 
UINT mod = 0;
 
if (parametr)
        mod += 1; //Сон
else
        mod += 0; //Гибернация
 
return SetSystemPowerState(mod,1);
}
void __fastcall TForm1::CheckBox1Click(TObject *Sender)
{
CheckBox2->Checked=false;
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::CheckBox2Click(TObject *Sender)
{
CheckBox1->Checked=false;
}
//---------------------------------------------------------------------------
 
TForm1::swtch_off()
{
if(CheckBox3->Checked)
if(ListBox1->ItemIndex!=p){
ListBox1->ItemIndex++;
resize(2);
MediaPlayer1->Play();
Form1->Caption="Видео плеер "+aPath+ListBox1->Items->Strings[ListBox1->ItemIndex];
ScrollBar1->Max=MediaPlayer1->Length;
ListBox1->Visible=false;
track_time();}
else{
MediaPlayer1->Stop();
if(CheckBox2->Checked){
Timer1->Enabled=false;
WinExec("shutdown -s -t 0", SW_HIDE);}//выключение
else if(CheckBox1->Checked){
Timer1->Enabled=false;
son(1);}}
else if(CheckBox2->Checked){
Timer1->Enabled=false;
WinExec("shutdown -s -t 0", SW_HIDE);}
else if(CheckBox1->Checked){
Timer1->Enabled=false;
son(1);}
}
И еще хотелось бы узнать как можно в этой строке
C++
1
if(FindFirst(aPath+"*.mp4",faAnyFile,aSearchRec)==0)
и *.avi добавить, пробовал записать в AnsiString и по фильтру в OpenDialog переключать но не работает . И как сделать чтоб подсветка дисплея не гасла во время воспроизведения.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.10.2012, 19:47
Ответы с готовыми решениями:

Можно ли маскировать Avi на какой-то формат ?
можнали маскмровать Avi на какойта формата для безопасность видеоуроков , чтоб не скопировали???

Через что можно воспроизводить видео? (например AVI)
Вопрос как обычно в шапке :) Есть ли какие - то модули для воспроизведения видео с любой позиции по времени ? Ну чтоб слёгкостью это...

В сони вегас про 10 после создания фильма начинаешь его выводить в конечный результат avi,а получается формат dvsd.как сделать в avi?
В сони вегас про 10 после вывода фильма в конечный результат выдает в формате dvsd.при записи на диск dvdпроигрыватель его не читает.как...

8
 Аватар для Samrisbe
1365 / 732 / 67
Регистрация: 28.01.2011
Сообщений: 2,069
25.10.2012, 20:49
Цитата Сообщение от gsm180 Посмотреть сообщение
чтоб подсветка дисплея не гасла во время воспроизведения
Можно эмулировать нажатие кокой либа клавиши по таймеру...
1
20 / 12 / 5
Регистрация: 19.10.2012
Сообщений: 102
Записей в блоге: 1
25.10.2012, 21:11  [ТС]
Цитата Сообщение от Samrisbe Посмотреть сообщение
Можно эмулировать нажатие кокой либа клавиши по таймеру...
Скажите а как можно сделать его полно экранным.
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
25.10.2012, 21:31
gsm180, первым дело идите почитайте правила, которые гласят: один вопрос - одна тема, во-вторых, почитайте что-нибудь о компоненте TMediaPlayer, например, здесь: Библиотека VCL и сопутствующие материалы , а уже потом пытайтесь его использовать.
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
25.10.2012, 21:32
Но на отрез отказывается воспроизводить формат avi
Наверное кодеков нет...
1
20 / 12 / 5
Регистрация: 19.10.2012
Сообщений: 102
Записей в блоге: 1
25.10.2012, 23:17  [ТС]
Цитата Сообщение от LK Посмотреть сообщение
gsm180, первым дело идите почитайте правила, которые гласят: один вопрос - одна тема, во-вторых, почитайте что-нибудь о компоненте TMediaPlayer, например, здесь: Библиотека VCL и сопутствующие материалы , а уже потом пытайтесь его использовать.
Правила нарушил извините. За ссылки спасибо. Но поймите я не жду что мне напишут код, мне нужно направление где искать. Вот вы говорите я не умею использовать компонент TMediaPlayer так скажите в чем ошибка, а потом я полезу в интернет и найду если буду знать что искать. Этими ссылками можно ответить на любой вопрос начинающего как я, и в чем тогда смысл вопроса. А так вы меня просто мягко послали. Но вы модератор вам виднее.
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
26.10.2012, 00:03
Про ави вам уже ответили.
О масштабировании окна есть здесь:
Разработка проигрывателя
C++
1
MediaPlayer1->DisplayRect=Rect(0,0,Panel1->Width,Panel1->Height);
Только вместо размеров панели нужно подставить размер дисплея:
C++
1
MediaPlayer1->DisplayRect=Rect(0,0,Screen->Width,Screen->Height);
И вы меня неправильно поняли. Я имел в виду, что без знания вами основ, в данном случае, о компоненте TMediaPiayer, сложно будет взаимодействовать с этим компонентом. Например, знай вы о свойстве DisplayRect, смотри, и сами решили бы вопрос.

Не по теме:

gsm180, без обид :friends: ? И не надо обзываться всякими модераторами :D .

1
20 / 12 / 5
Регистрация: 19.10.2012
Сообщений: 102
Записей в блоге: 1
26.10.2012, 00:52  [ТС]
Цитата Сообщение от LK Посмотреть сообщение
gsm180, без обид ? И не надо обзываться всякими модераторами .
Я и не обижался, на обиженных воду возят.
Но вы все таки меня не правильно поняли. У меня с выводом видео на форму проблем нет. И это не моя заслуга, с книги код взял "C++ builder в задачах и примерах", я только доработал, что если развернуть форму, то видео тоже становится на всю форму потому как по книге, оно не меняло своих размеров, ну и кнопки заякорил, добавил ListBox и прочие мелочи. Вот только по книге плеер должен и avi воспроизводить, а он не воспроизводит. И тут у меня нет предположений.
Вот этот проэкт

Не по теме:

За информацию по плееру спасибо.(жаль правда что на английском)

Вложения
Тип файла: rar Видео плеер.rar (1.05 Мб, 149 просмотров)
0
20 / 12 / 5
Регистрация: 19.10.2012
Сообщений: 102
Записей в блоге: 1
26.10.2012, 01:03  [ТС]
Вот проект потому, что там у меня эксперименты были и ListBox отключил
Вложения
Тип файла: rar Видео плеер.rar (1.01 Мб, 185 просмотров)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
26.10.2012, 01:03
Помогаю со студенческими работами здесь

Браузер Opera отказывается воспроизводить в полноэкранном режиме видео с Ютуб
После того, как нажал что-то, опера отказывается воспроизводить в полноэкранном режиме видео с Ютуб.

Из DVD в AVI формат...
Здраствуйте форумчане, я тут недавно раздобыл лицензионные DVD диски с шикарнейшим качеством и скопировал их на комп, но они уж...

Из mvror в avi формат
В принципе весь вопрос указан в заголовке, как из mvror формата конвертировать в avi??

Измененить формат фильмов на avi
здравствуйте!!!подскажите пожалуйста с помощью какой программы мне можно изменить формат фильма с Matroska file на AVI формат или какой...

Конвертер из dvd, avi в формат dvr
здравствуйте. Помогите. купил цифровую приставку, ресирвер, ORIEL 300 для телевизора. есть возможность записи трансляции на флеш-носитель....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru