EasyDelphi Q&A
0 تصويتات
20 مشاهدات

السلام عليكم

جربت استخدام  TWindowsMediaCodec  من وحدة FMX.Media.win  لكن لم ينجح الامر تظهر رسالة ان الامتداد غير مدعوم مع اني دخلت اليها ووجدته يدعم صيغ كثيرة

initialization
  TMediaCodecManager.RegisterMediaCodecClass('.avi', SVAviFiles, TMediaType.Video, TWindowsMediaCodec);
  TMediaCodecManager.RegisterMediaCodecClass('.wmv', SVWMVFiles, TMediaType.Video, TWindowsMediaCodec);
  TMediaCodecManager.RegisterMediaCodecClass('.mp4', SVMP4Files, TMediaType.Video, TWindowsMediaCodec);
  TMediaCodecManager.RegisterMediaCodecClass('.m4v', SVMP4Files, TMediaType.Video, TWindowsMediaCodec);
  TMediaCodecManager.RegisterMediaCodecClass('.mov', SVMOVFiles, TMediaType.Video, TWindowsMediaCodec);

  TMediaCodecManager.RegisterMediaCodecClass('.wma', SVWMAFiles, TMediaType.Audio, TWindowsMediaCodec);
  TMediaCodecManager.RegisterMediaCodecClass('.mp3', SVMP3Files, TMediaType.Audio, TWindowsMediaCodec);
  TMediaCodecManager.RegisterMediaCodecClass('.wav', SVWAVFiles, TMediaType.Audio, TWindowsMediaCodec);

  TMediaCodecManager.RegisterMediaCodecClass(SAllFilesExt, SDefault, TMediaType.Video, TWindowsMediaCodec);

finalization

 

هذا  الكود المستخدم

procedure TForm1.Button1Click(Sender: TObject);
var
  op: TOpenDialog;
  medi: TWindowsMediaCodec;
Begin
  medi := TWindowsMediaCodec.Create;
  op := TOpenDialog.Create(self);
  if op.Execute then
  begin
    medi.CreateFromFile(op.FileName);
    // MediaPlayer1.FileName := op.FileName  ;
    if MediaPlayer1.Media <> nil then
    begin
      MediaPlayer1.Play;
    end;
  end;
end;

 

 

 

 

سُئل في تصنيف fmx بواسطة (840 نقاط) | 20 مشاهدات

1 إجابة واحدة

+1 تصويت
أفضل إجابة

إقرأ هذا جيدا:
FireMonkey audio/video playback feature offers support for native platform media file formats. Using TMediaCodecManager, it is possible to Register custom media codecs to extend the audio/video feature support.
الرابط هنا.

نفهم من ذلك أن المكون TMediaPlayer  يدعم فقط ما يوفره له النظام  فهو عبارة فقط عن API أي مجرد تغليف لمكون النظام فنجده مثلا في الوينداوز يستطيع قراءة فقط الإمتداد AVI  و بعض أنواع Mp4 ليس كلها ... مثله مثل وينداوز ميديا بلاير.

و في نظام الأندرويد يستطيع قراءة كل صيغة يمكن للنظام قرائتها و كذلك الأنظمة الأخرى. 

أما عن TMediaCodecManager فهي فقط لإظافة أو تسجيل كوداك جديد لا يدعمه النظام و هذا يتطلب تسجيلا للكوداك الذي نريد قرائته بواسطة المكون TMediaPlayer فليس غريبا أن لا يقرأ المكون فيديو بإمتداد لا يدعمه النظام بل الغريب أن ننتظر منه قراءة ما لا يوفره له النظام أصلا...

تم الرد عليه بواسطة (19,960 نقاط)
مختارة بواسطة
0
بارك الله فيك على الرد طيب ما العمل هل يوجد مكون يسمح بقراءة الصيغة mp4 اذا كان  النظام لا يدعمها ؟.
0

عن أي نظام تتحدث ؟

إن كنت تقصد الوينداوز فعلى نظامك توفير ذلك ....

تمعن جيدا في هذا النص من أمباركاديرو :

Audio-Video in FireMonkey
FireMonkey supports the capture and playback of media files (audio-video).

This feature is available for Windows and OS X platforms as follows:

The Windows implementation uses DirectShow, and the audio-video feature works on every Windows version.
The OS X implementation uses QuickTime and works on OS X versions higher than 10.5.

الرابط هنا

ما ذا يعني هذا ؟ 
إن كان نظامك لا يدعم DirectShow  أو هناك خلل ما في تثبيتك ل: DirectX التي تخص نظام الوينداوز فلا تنتظر من المكون TMediaPlayer أن يفعل المستحيل لك ..... فالأجدر هو توفير مستلزمات المكون حتى يقرأ لك الفيديوهات ذات الصيغة العالية مثل Mp4 و غيرها .....
أما عن نظام الماك أوآس فهو يدعم الكويك بلاير  و يعمل فقط من على نسخة 10.5 فما فوق .....

أما عن نظام الأندرويد  فهنا لا تنتظر منه قراءة فيديو Mp4 مع الصورة .... فهو سيقرأ لك الفيديو على شكل صوتي ....
و لجعل ذلك يعمل أقصد الصورة و الصوت معا ففايرمانكي لها لحد الساعة المكون TMediaPlayerControl و الذي بدوره لا يستطيع الراندر أو الرسم (Rendering) من دون دعم OpenGl الخاصة بالأندرويد و حتى و لو رسم الصورة فيرسمها بثقل كبير و جهد .... مما قد يفرض على النظام غلق البرنامج أوتوماتيكيا .... و الحل 
هو إستعمال مكونات إظافية أو العمل على مستوى API الخاصة بالأندرويد مثل هذه الوحدة هنا:
 

unit VideoView;

interface

uses
  System.SysUtils,
  FMX.Types,
  FMX.Helpers.Android,
  Androidapi.Helpers,
  Androidapi.JNI.App,
  Androidapi.JNI.Net,
  Androidapi.JNI.VideoView,
  Androidapi.JNI.Widget;

type
  TVideoView = class(TObject)
  private
    FDialog: JDialog;
    FVideoView: JVideoView;
  public
    procedure Play(Source: string);
  end;

implementation

{ TVideoView }

procedure TVideoView.Play(Source: string);
begin
  CallInUIThread(
    procedure
    begin
      FDialog := TJDialog.JavaClass.init(TAndroidHelper.Activity, -1);
      FDialog.setCancelable(True);

      FVideoView := TJVideoView.JavaClass.init(TAndroidHelper.Activity);
      FVideoView.setVideoURI(StrToJURI(Source));
      FVideoView.start;

      FDialog.setContentView(FVideoView);
      FDialog.show;
    end);
end;

end.

 

اسئلة متعلقة

0 تصويتات
1 إجابة
سُئل فبراير 10 في تصنيف vcl بواسطة xorpas (840 نقاط) | 51 مشاهدات
0 تصويتات
1 إجابة
سُئل يناير 20 في تصنيف fmx بواسطة xorpas (840 نقاط) | 56 مشاهدات
0 تصويتات
1 إجابة
سُئل يوليو 12 في تصنيف vcl بواسطة xorpas (840 نقاط) | 25 مشاهدات
0 تصويتات
1 إجابة
سُئل يونيو 26 في تصنيف Delphi بواسطة xorpas (840 نقاط) | 40 مشاهدات
0 تصويتات
0 إجابة
سُئل أغسطس 17 في تصنيف vcl بواسطة adelon (160 نقاط) | 11 مشاهدات
ادعُ اصدقائك في الفايسبوك لمشاركتك
Comodo SSL

مرحبًا بك إلى EasyDelphi Q&A، حيث يمكنك طرح الأسئلة والحصول على الإجابة عليها من المستخدمين الآخرين.

لا يسمح بطلب او السؤال عن كراك او تفعيل او كسر او فك او اي شيء يخالف اتفاقيات الترخيص  مهما كان السبب ومهما كان البرنامج ونوعه. ولا حتى نشر روابط تحتوي على مثل هذه الاشياء لا في الاسئلة ولا في الاجابات ولا التعليقات . نهائيا

441 سؤال
675 إجابة
1,216 تعليق
258 مستخدم