Tag Archives: mp4

أداة ffmpeg للتحويل بين صيغ الفيديو مع واجهات رسومية تعتمد عليها

السلام عليكم،
تدوينة جديدة أهدف من خلالها لتقديم طريقة للتحويل بين عدة صيغ وحاويات فيديو عن طريق أداة ffmpeg وبرنامجي handbrake و qwinff الذين يعتمدان عليها إذ يمكن اعتبارهما واجهات رسومية لاستعمال الأداة.

لكن بدءا أجد من المفيد الحديث عن بعض المصطلحات المستخدمة في مجال الفيديو الرقمي.أنصح بقراءة هذه المقدمة، أما إذا كان كل مايهمك هو البحث عن طريقة التحويل بين صيغ الفيديو فبإمكانك النزول مباشرة إلى شرح الأداة هنا أو طريقة عمل الواجهتين الرسوميتين، qwinff و handbrake.

صيغ الفيديو والترميز

أول ما يجب أن نضعه في الأذهان هو أن مقاطع الفيديو التي نشاهدها هي عبارة عن تتابع صور رقمية مرتبة ومركبة بطريقة معينة. لتكييف الفيديو (تتميز مقاطع الفيديو بحجمها الكبير) مع وسائل التخزين فإن ملفات الفيديو هذه تُضغط للحد من الحجم اللازم لتخزينها وكذلك للحد من كمية البيانات المتبادلة أثناء النقل (عبر اتصال إنترنت مثلا) وهذه وظيفة المِرْمَاز – تعرف أيضا بحزم الترميز –  (CoDec بالانجليزية وهي نحت ل COde-DECode، أي ترميز-فك ترميز). لقراءة ملف فيديو مضغوط بمرماز معين – codec – فإن قارئ الفيديوهات video player يحتاج من بين أمور أخرى إلى المرماز الذي استُخدم لضغط ملف الفيديو حتى يستطيع فك صغطه وقراءَته. عادة يُحفظ الفيديو بعد ضغطه (إضافة للصوت المرفق به بعد ضغطه هو الآخر بمرماز مناسب) في ملفات حاوية للوسائط Container تخضع لصيغ Format معينة. تصف صيغة الفيديو – من بين أمور أخرى – الطريقة التي يجب بها قراءة الفيديو وكيفية مزامنته مع الصوت إذا كان موجودا، كما أن لكل صيغة مجموعة من حزم الترميز تدعمها (لكي يمكن حفظ ملف فيديو بصيغة يجب أن يُستخدم مرماز تدعمه هذه الصيغة).

على سبيل المثال، صيغة ملفات الفيديو ذات الامتداد .avi هي صيغة مملكوة (ولكن مفتوحة) تدعم مجموعة من حزم الترميز ك DivX و Mpeg2/4  للفيديو وAC3 وmp3 للصوت. من الحاويات الشهيرة أيضا نجد Quicktime (مغلق ومملوك لشركة أبل) وMP4 وأخرى كثيرة.

تقديم أداة ffmpeg

هي أداة تعمل على عدة أنظمة تشغيل تمكن من التحويل بين صيغ الفيديو وتغيير إعداداتها. كما أن بإمكانها التقاط الصوت و/أو الفيديو من مصدر بث مباشر. تتميز الأداة بسرعتها الكبيرة بالمقارنة مع حلول أخرى للتحويل بين صيغ الفيديو.للبدء باستخدام الأداة يجب أولا تثبيتها

تثبيت ffmpeg على أوبنتو عن طريق مستودعات ppa

يمكن تثبيتها عن طريق المستودعات الرسمية، في هذه الحالة يجب تثبيت بعض حزم الترميز الأساسية بشكل منفصل

sudo add-apt-repository ppa:jon-severinsson/ffmpeg
sudo apt-get update
sudo apt-get install ffmpeg

تثبيت ffmpeg على فيدورا

su -c ‘yum install ffmpeg’

لتوزيعات ليونكس الأخرى يمكن التثبيت من المصدر عبر الخطوات التالية
أولا يتوجب تنزيل مصدر آخر إصدار من هنا (إذا كنت تشك في معمارية نظام التشغيل نفذ الأمر uname -m إذا كانت النتيجة i686 فنظام تشغيلك ذو معمارية 32 بت أما إذا كانت x86_64 فأنت تستخدم نظام تشغيل بمعمارية 64بت، اختر التنزيل من المجلد الموافق لمعماريتك )
الخطوة التالية ستكون فك ضغط الملف في مجلد أسميتُه ffmpeg عبر الأمر (انتبه لاسم الملف، طبعا يجب التنقل أولا إلى المجلد الذي أنزلت فيه الملف المضغوط )

mkdir ffmpeg && tar -xzvf ffmpeg.static.32bit.2013-02-17.tar.gz -C ffmpeg/

نفتح المجلد عبر الأمر cd ffmpeg ثم ننفذ الأمر للتأكد من أن كل شيء تم على ما يرام

./ffmpeg

مثال للمُخرجات

ffmpeg version N-50025-gb8bb661 Copyright (c) 2000-2013 the FFmpeg developers
built on Feb 17 2013 05:11:30 with gcc 4.6 (Debian 4.6.3-1)
configuration: –prefix=/root/ffmpeg-static/32bit –arch=x86_32 –extra-cflags=’-m32 -I/root/ffmpeg-static/32bit/include -static’ –extra-ldflags=’-m32 -L/root/ffmpeg-static/32bit/lib -static’ –extra-libs=’-lxml2 -lexpat -lfreetype’ –enable-static –disable-shared –disable-ffserver –disable-doc –enable-bzlib –enable-zlib –enable-postproc –enable-runtime-cpudetect –enable-libx264 –enable-gpl –enable-libtheora –enable-libvorbis –enable-libmp3lame –enable-gray –enable-libass –enable-libfreetype –enable-libopenjpeg –enable-libspeex –enable-libvo-aacenc –enable-libvo-amrwbenc –enable-version3 –enable-libvpx
libavutil      52. 17.101 / 52. 17.101
libavcodec     54. 91.103 / 54. 91.103
libavformat    54. 63.100 / 54. 63.100
libavdevice    54.  3.103 / 54.  3.103
libavfilter     3. 38.100 /  3. 38.100
libswscale      2.  2.100 /  2.  2.100
libswresample   0. 17.102 /  0. 17.102
libpostproc    52.  2.100 / 52.  2.100
Hyper fast Audio and Video encoder
usage: ffmpeg [options] [[infile options] -i infile]… {[outfile options] outfile}…
Use -h to get full help or, even better, run ‘man ffmpeg’

ملحوظة: إذا استعملت الطريقة الأخيرة للتثبيت فعليك كتابة الأمر بهذه الطريقة ./ffmpeg كما أنه يتوجب عليك كتابة المسار الذي توجد فيه أداة ffmpeg كاملا أو تنفيذ الأمر من داخل مجلد ffmpeg.(أو المجلد حيثُ نزلت الأداة)
لمستخدمي وندوز يمكن تنزيل الأداة من هنا
بعد تثبيت الأداة أصبح بإمكاننا استعمالها الآن.

استعمال ffmpeg

ffmpeg [options] [[infile options] -i infile]… {[outfile options] outfile}…

حيث

  • options خيارات الأمر، سنتعرف على بعضها لاحقا
  • infile options خيارات الملف المصدر
  • -i infile اسم المصدر
  • outfile options خيارات الوجهة
  • outfile اسم الملف الوجهة

التحويل من AVI إلى MP4

الأمر التالي يُحول فيديو AVI إلى MP4

ffmpeg -b 1250k -i video_01.avi video_01.mp4

حيث

  • -b  (bitrate)  ترمز لتردد أخذ عينات الفيديو. بشكل عام  يمكن تعريف تردد أخذ العينات – bitrate- بأنه المساحة اللازمة لتخزين ثانية واحدة (من الصوت أو الفيديو). كل ما كانت هذه القيمة أكبر كل ما ازدادت جودة الفيديو والمساحة التخزينية اللازمة، ولكن هذا لا يعني أنه بالإمكان زيادتها إلى ما لانهاية، فلكل حزمة ترميز Codec قيم حدية لايمكنها تجاوزها. على سبيل المثال في ملفات mp3 الصوتية الحد الأقصى لهذه القيمة هو 320كيلو بت للثانية.
  • -i video_01.avi اسم الملف المَصدر، انتبه هنا أن “ملف” في عرف ffmpeg قد يكون أي مصدر، ملف عادي، بث على الشبكة، مخرج جهز تصوير … الخ
  • video_01.mp4 اسم الملف الوجهة. أنبه هنا إلى أن ffmpeg تعتبر كل ما تجده على سطر الأوام مما لا يمكنها تأويله على أنه خيار، تعتبره اسم ملف وجهة (في الاستخدام المتقدم يمكن تحديد عدة ملفات مصدر ولكل منها ملف وجهة مختلف).

مثال مقتطف من مخرجات الأمر

ffmpeg version N-50025-gb8bb661 Copyright (c) 2000-2013 the FFmpeg developers
built on Feb 17 2013 05:11:30 with gcc 4.6 (Debian 4.6.3-1)
configuration: –prefix=/root/ffmpeg-static/32bit –arch=x86_32 –extra-cflags=’-m32 -I/root/ffmpeg-static/32bit/include -static’ –extra-ldflags=’-m32 -L/root/ffmpeg-static/32bit/lib -static’ –extra-libs=’-lxml2 -lexpat -lfreetype’ –enable-
Please use -b:a or -b:v, -b is ambiguous
[mpeg4 @ 0xacea8e0] Invalid and inefficient vfw-avi packed B frames detected
Input #0, avi, from ‘/media/d8bcb8a7-609a-4404-883a-318109fc204f/zeine77/Videos+/Aflamw.com_Collapse.of.Evolution.avi’:
Duration: 01:05:02.88, start: 0.000000, bitrate: 1425 kb/s
Stream #0:0: Video: mpeg4 (DX50 / 0x30355844), yuv420p, 700×572 [SAR 1:1 DAR 175:143], 25 fps, 25 tbr, 25 tbn, 30k tbc
Stream #0:1: Audio: mp3 (U[0][0][0] / 0x0055), 24000 Hz, stereo, s16p, 56 kb/s
[libx264 @ 0xad02960] using SAR=1/1
max=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
Output #0, mp4, to ‘video_01.mp4’:
Metadata:
encoder         : Lavf54.63.100
Stream #0:0: Video: h264 ([33][0][0][0] / 0x0021), yuv420p, 700×572 [SAR 1:1 DAR 175:143], q=-1–1, 12800 tbn, 25 tbc
Stream #0:1: Audio: aac ([64][0][0][0] / 0x0040), 24000 Hz, stereo, s16, 128 kb/s
Stream mapping:
Stream #0:0 -> #0:0 (mpeg4 -> libx264)
Stream #0:1 -> #0:1 (mp3 -> libvo_aacenc)
Press [q] to stop, [?] for help
[mpeg4 @ 0xb4cb000] Invalid and inefficient vfw-avi packed B frames detected
overread, skip -6 enddists: -4 -4    578kB time=00:00:10.85 bitrate= 436.2kbits/s dup=2 drop=0
overread, skip -7 enddists: -2 -2   1123kB time=00:00:17.72 bitrate= 518.8kbits/s dup=2 drop=0
overread, skip -6 enddists: -1 -1   1204kB time=00:00:18.83 bitrate= 523.5kbits/s dup=2 drop=0

في الأمر أعلاه لم نحدد الكثير من الخيارات أثناء عملية التحويل، وتركناها للإعدادات الافتراضية، سيكون هذا كافيا لمن ليست له معرفة كبيرة بصيغ الفيديو وخصائصها وحزم الترميز.

يمكننا التأكد عبر سرد الملفات

ls -lrt
file video_01.mp4

النتيجة

video_01..mp4: ISO Media, MPEG v4 system, version 1

قص جزء من تسجيل صوتي (ملف .mp3 مثلا)

ffmpeg -ss 00:00:30.0 -t 00:00:20.0 -i test.mp3 -acodec copy -vcodec copy output.mp3

  • الخيار ss- لتحديد وقت البدء في اقتطاع الفيديو، يجب أن يكون من الشكل HH:MM:SS.xx حيث HH تمثل الساعات، MM الدقائق، SS الثواني وxx أجزاء الثانية.
  • الخيار t- يعين عدد الساعات/الدقائق/الثواني المراد قصها بعد وقت البدء، في المثال أعلاه 20 ثانية، أي أننا سنقص من الثانية 30 (حددناها في الخيار ss-) إلى الثانية 50 (30+20 ثانية)
  • الخياران acodec copy- و vcodec copy- على التوالي لاستخدام نفس ترميز الصوت والفيديو الموجودين في المصدر (acodec- للترميز المستخدم للصوت وvcodec- للترميز المستخدم للفيديو).

التحويل من AVI إلى M4V (مستخدمة على مخزن iTunes وفي أجهزة iPad/iPod )

ffmpeg -i input.avi -acodec libfaac -ab 128k -vcodec mpeg4 -b 1250K output.m4v

الخياران acodec- و vcodec- هما نفسهما المستخدمان في الأمر السابق مع فرق أننا هنا حددنا المكتبات المستخدمة للترميز، libfaac لترميز الصوت عبر حزمة codec AAC و mpeg4 لترميز الصوت. بالنسبة للخيار -ab فيحدد تردد أخذ العينات للمسار الصوتي و -b كما أسلفنا تعين قيمة التردد لعينات الفيديو.

واجهات رسومية تستخدم ffmpeg

إذا لم كان سطر الأوامر لا يريحك فاعلم أن بالإمكان استخدام واجهات رسومية تعتمد على ffmpeg، سأقدم هنا مثالين.

برنامج handbrake

التثبيت على أوبنتو

sudo add-apt-repository ppa:stebbins/handbrake-releases
sudo apt-get update
sudo apt-get install handbrake-gtk

بالنسبة للتوزيعات الأخرى يُرجى الاطلاع على صفحة التنزيلات في الموقع الرسمي للبرنامج

واجهة واستخدامhandbrake

  • 1 اضغط هنا لاختيار المصدر(الأرقام هي كما في الصورة)
  • 2 اسم الملف المُختار
  • 3 توجد إعدادات لأجهزة مختلفة جاهزة للاستخدام، هنا اخترت التحويل إلى الصيغة المستخدمة على هواتف آيفون
  • 4 البدء في التحويل(إذا كنت ستغير الإعدادات الافتراضية انتظر حتى اكتمال التغييرات للبدء في التحويل)
  • 5 من هنا يمكنك التحكم في إعدادات الصوت والفيديو
  • 6 بعد البدء، يظهر شريط لمتابعة تقدم العملية (الملف المختار هنا يصل 700 ميغابايت لذا سيستغرق بعض الوقت)

برنامج qwinff

التثبيت على أوبنتو

sudo apt-add-repository ppa:lzh9102/qwinff

sudo apt-get update

sudo apt-get install qwinff

بالنسبة للتوزيعات الأخرى يُرجى الاطلاع على صفحة التنزيلات في الموقع الرسمي للبرنامج

الواجهة والاستخدام

واجهة QWinFF ،إضافة فيديو جديد للبدء بتحويله

واجهة QWinFF ،إضافة فيديو جديد للبدء بتحويله

إعدادات التحويل في QWinFF

إعدادات التحويل في QWinFF

طريقة قص جزء من فيديو أو ملف صوتي باستخدام QWinFF

طريقة قص جزء من فيديو أو ملف صوتي باستخدام QWinFF

طريقة قص جزء من فيديو أو ملف صوتي باستخدام QWinFF

بهذا نأتي إلى نهاية هذه التدوينة. إذا كان عندك أي تعقيب، اسشكال أو اقتراح فسأكون سعيدا بقراءته في التعليقات.

إلى الملتقى

اشترك في خدمة RSS واحصل على آخر إضافات المدونة

مصادر

http://doc.ubuntu-fr.org/ffmpeg

http://linuxers.org/tutorial/how-install-ffmpeg-linux

http://www.cyberciti.biz/faq/linux-convert-avi-file-to-apple-ipod-iphone-mp4-m4v-format/

http://www.hecticgeek.com/2013/02/install-qwinff-ubuntu-12-10-12-04/

http://handbrake.fr/downloads.php