تسجيل فيديو مع قذف تلقائي بواسطة برنامج مجاني مع بناء دراجة

الجدول الزمني الدراجة

لدى المطورين الناطقين باللغة الروسية دائمًا ما يمكنهم قوله: مشاركة بعض خبراتهم وآرائهم الفريدة. ولكن في تنسيق مدونة الفيديو ، نظرًا لتعقيد التسجيل العالي ، لا يفعلها سوى القليل منهم الآن.


تحت القص ، تحدث عن طريقه الصعب في تسجيل مقاطع الفيديو وتحريرها باستخدام البرامج المجانية والبرامج النصية لـ Ruby والأدوات الارتجالية.


النظرية


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


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


محرر الفيديو


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


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


صوت من Flatpak


تتطلب طريقة التثبيت المدعومة لـ Pitivi Flatpak. لفترة من الوقت ذهبت حوله ، ل ليس لدي systemd و PulseAudio في نظامي.


اتضح systemd لم يكن مطلوبا لفترة طويلة. حسنًا ، PulseAudio - اضطررت إلى تثبيت وتكوين كان من السهل تعديل Flatpak . لكن سيكون من الأصح وضع PulseAudio ، إنه أمر مملة بعض الشيء وليس من الواضح ما إذا كان من المتوقع حدوث مشكلات في تسجيل الصوت على الأجهزة الموجودة أم لا.


تثبيت Pitivi ، وحذف التكوينات PulseAudio ، تشغيل:


$ sudo flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo $ sudo flatpak install flathub org.pitivi.Pitivi $ sudo find {/var/lib,~/.local/share}/flatpak/runtime -type f -name '*pulseaudio*.conf' -delete $ flatpak run --device=alsa --branch=stable --arch=x86_64 --command=pitivi org.pitivi.Pitivi 

لا يوجد صوت. دعنا نحاول تشغيل شيء أكثر بساطة ، على سبيل المثال:


 $ sudo find /var/lib/flatpak/app/org.pitivi.Pitivi/x86_64 -type d -path '*/files/bin' -exec cp `which aplay` {} \; $ flatpak run --device=alsa --branch=stable --arch=x86_64 --command=aplay org.pitivi.Pitivi /dev/urandom ALSA lib dlmisc.c:162:(snd_dlsym_verify) unable to verify version for symbol _snd_pcm_empty_open ALSA lib dlmisc.c:283:(snd1_dlobj_cache_get) symbol _snd_pcm_empty_open is not defined inside [builtin] aplay: main:828: audio open error: No such device or address 

ربما تم تجميع alsa-lib المضمنة في Flatpak --with-versioned . الحل السريع هو استبدال libasound.so بالنظام الأول:


 $ sudo find /var/lib/flatpak -type f -name libasound.so.2.0.0 -exec cp /usr/lib64/libasound.so.2.0.0 {} \; $ find ~/.local/share/flatpak -type f -name libasound.so.2.0.0 -exec cp /usr/lib64/libasound.so.2.0.0 {} \; #      - 

بالنسبة لي ، لم يكن هذا كافيًا:


 $ flatpak run --device=alsa --branch=stable --arch=x86_64 --command=aplay org.pitivi.Pitivi /dev/urandom ALSA lib /var/tmp/portage/media-libs/alsa-lib-1.1.6-r1/work/alsa-lib-1.1.6/src/pcm/pcm_direct.c:1943:(snd1_pcm_direct_parse_open_conf) The field ipc_gid must be a valid group (create group audio) aplay: main:828: audio open error: Invalid argument 

تحتاج إلى تكوين ALSA آخر:


 $ sudo find /var/lib/flatpak -type d -name etc -exec cp /etc/asound.conf {} \; $ find ~/.local/share/flatpak -type d -name etc -exec cp /etc/asound.conf {} \; #      - $ flatpak run --device=alsa --branch=stable --arch=x86_64 --command=aplay org.pitivi.Pitivi /dev/urandom 

أخيرًا ، يمكنك استخدام Pitivi.


تقديم الإعدادات ل Pitivi التي جاءت نتيجة لذلك
  • تنسيق الحاوية: MP4
  • فيديو
    • الترميز x264enc
    • المتقدمة
      • تمرير / نوع الترميز: الكمي المستمر
      • الكمي ثابت: 18
      • معدل البت: 16384 كيلوبت / ثانية
      • نوعية السرعة مسبقا: فائق السرعة
      • ضبط النفس - البصرية مسبقا: الفيلم
  • الصوت
    • ليباف ALAC
  • على مسؤوليتي الخاصة وخوفًا من استخدام "عدم التمرير من ملفات الوكيل"
  • كل شيء آخر هو الافتراضي

آثار أخرى


أقوم ببعض تأثيرات الرسوم المتحركة للنص باستخدام screencast لصفحات ملء الشاشة ، والموضحة باستخدام reveal.js و animate.css. في reveal.js لبعض الشرائح أضف صوت انتقال:


 <section style="font-size: 5em"> <audio data-autoplay src="/path/to/sound.wav"></audio> #1 </section> 

اتضح أنه من المهم تسجيل screencast بـ 60 FPS إذا كان النص كبيرًا للغاية. Screencast القيام بذلك:


 #!/bin/sh SOUND_INPUT=shared_input_loopback CHANNELS=2 SOUND_RATE=48000 FRAMERATE=60 DRAW_MOUSE=0 VIDEO_SIZE=$(xdpyinfo | awk '/dimensions:/ { print $2; exit }') OUTPUT="${HOME}/video/screen/$(date --rfc-3339=seconds).mp4" ffmpeg \ -thread_queue_size 512 \ -video_size "${VIDEO_SIZE}" \ -framerate "${FRAMERATE}" \ -f x11grab \ -draw_mouse "${DRAW_MOUSE}" \ -i :0.0+0,0 \ -thread_queue_size 512 \ -f alsa \ -ac "${CHANNELS}" \ -i "${SOUND_INPUT}" \ -ar "${SOUND_RATE}" \ -vcodec libx264 -preset ultrafast -crf 18 \ -acodec alac \ -f ipod \ "${OUTPUT}" 

في حالتي ، shared_input_loopback هو الجهاز من asound.conf config .


لا تزال هذه الإضافة على ffmpeg بين المقاطع مفيدة.


تسجيل الفيديو


في متناول اليد كان هاتف Meizu MX4 ، حيث قررت استخدام كاميرا أمامية والتسجيل باستخدام Open Camera. استغرق الأمر بعض الوقت لتدريب نفسك على النظر إلى الكاميرا والتحكم في وضعك في الفضاء دون ارتكاب أخطاء نموذجية ، مثل قطع رأسك. في الوقت نفسه ، تحدث بوضوح تام وبصوت عالٍ وقم بإحداث نوع من تعبير الوجه على الأقل. لكن تلك كانت البداية فقط.


ما الذي دفعني إلى عمل تقطيع تلقائي للفيديو ، وحتى في مرحلة التسجيل؟


  1. Pitivi الفرامل والأخطاء عند التحرير ، وخاصة عند استخدام أداة Ripple Move / Edit ، مما يؤدي إلى الحاجة إلى إعادة تشغيل Pitivi بشكل دوري.
  2. بالنسبة لي ، تعد عملية قطع الفيديو يدويًا واحدة من أكثر الأشياء مملة. من الواضح أنه ليس من الممكن تمامًا التشغيل التلقائي بالكامل (على الأقل بدون سيناريو يكون فيه التوقفات الضرورية لفهم ما قيل غير مبين صراحة) ، ولكن على الأقل يمكن تحسين هذه العملية.

فيما يلي متطلبات الدراجة المستقبلية التي حددتها لنفسي:


  1. تسجيل الفيديو باستخدام هاتف Android ، والصوت باستخدام جهاز كمبيوتر محمول.
  2. التركيز الكاميرا السيطرة.
  3. القدرة على إيقاف التسجيل لحفظ أو حذف الجزء الأخير المسجل.
  4. قم بتنزيل الفيديو من الهاتف عبر USB ، مع محاولات متكررة واستئناف ، دون عرقلة القدرة على تسجيل الجزء التالي.
  5. تزامن الصوت.
  6. تحديد وجود الصوت ورمي التوقف.
  7. القدرة على تشغيل مقاطع الفيديو المسجلة بسرعة ، مع إيقاف مؤقت بالفعل.

لماذا الكثير من السيطرة على الأجهزة خلال مرحلة التسجيل؟ لماذا لا تبدأ التسجيل لعدة ساعات متتالية ، ثم قم بتحريره؟ هناك العديد من الأسباب:


  1. نقص عادي من مساحة القرص.
  2. ميل الهاتف إلى ارتفاع درجة الحرارة والتفريغ بسرعة خلال التسجيلات الطويلة.
  3. عطل الشاشة التي تعمل باللمس بسبب وجود الهاتف في الماء. لكن بطريقة ما تحتاج للسيطرة على التركيز. نعم ، والصحافة التالية ستخلق اهتزاز غير ضروري للجهاز.
  4. مشاكل في تحميل الملفات الكبيرة بسبب ضعف طاقة منفذ USB على الكمبيوتر المحمول. من الناحية النظرية ، يمكن حل هذا باستخدام محور USB مع طاقة إضافية. استخدام الشبكة بطيء جدًا.
  5. الرغبة في مراجعة الأجزاء الأخيرة المسجلة بسرعة للتأكد من عدم وجود أخطاء وإعادة كتابتها بسرعة قبل أن يتحول الكوكب في المكان الخطأ أمام الشمس.
  6. الرغبة في رمي التكرارات السيئة بوضوح في أقرب وقت ممكن حتى لا نضيع الوقت ومساحة القرص عليها في المستقبل.
  7. تحتاج إلى مزامنة الصوت الطويل المسجل عن طريق الهاتف والكمبيوتر المحمول. قد يتسبب هذا في عدم تطابق الفيديو نظرًا لحقيقة أن إطارات دفق الصوت يتم إخراجها عند التسجيل من جهاز كمبيوتر محمول أو عند التسجيل من هاتف (والتي ربما يمكنك حلها بطريقة ما ، لكنك لا تريد المخاطرة به وإضاعة الوقت في التجربة). من الأسهل مزامنة الأجزاء الصغيرة بشكل منفصل ، فلن يكون التصميم المحتمل ممكنًا.
  8. الحاجة إلى التعامل مع الموقف حيث تقوم Open Camera بإعادة تشغيل التسجيل بسبب حجم الفيديو البالغ 4 جيجا بايت. ربما يجب عليك تعديل Open Camera. إذا تعذر إزالة أو زيادة هذا القيد على 4 جيجا بايت ، فسيتعين عليك إلقاء حدث على الكمبيوتر المحمول لتلاحظ أن التسجيل قد تم إعادة تشغيله في هذا المكان.

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


تقطيع الفيديو التلقائي


المعلومات الموجودة على الشبكة حول هذا الموضوع ليست كبيرة جدًا. حول الأبحاث التي تم تذكرها فيما بعد من Stanford و Adobe (وهي ليست مخيفة ، ما زلت بحاجة إلى حل أقل تطوراً).


تحدث عملية التقطيع على مرحلتين: في مرحلة التسجيل - تكون الخشنة ، في مرحلة التجسيد - أكثر دقة ، مع القدرة على تصحيح الأجزاء التي تم قصها يدويًا. نفذت الخام باستخدام VAD من WebRTC. أكثر دقة - بمساعدة Google Speech (بشكل أكثر تحديدًا - بمساعدة تعديل مشروع autosub ، لإنشاء ترجمات للفيديو). أنا متأكد من أنه سيكون هناك المزيد من الحلول الناجحة ، فقد تبين أنها أفضل ما تمكنا من فعله بسرعة.


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


أبدأ الخزي الناتج بطريقة ما مثل هذا:


 $ bin/vlog-recorder \ --project /path/to/project \ --debug true \ --sound-settings ' --device=usb_card --format=dat' #   arecord r - (RE)START recording s - STOP and SAVE current clip S - STOP and SAVE current clip, don't use auto trimming d - STOP and DELETE current clip p - PLAY last saved clip f - FOCUS camera on center h - show HELP q / Ctrl+C - QUIT [ stopped ] [ battery: 100% / 36°C ] 

أحتاج إلى تسجيل الحجج للإشارة إلى الجهاز بشكل صريح من أجل تجنب مواطن الخلل الدورية التي من الأرجح بسبب البرنامج المساعد dsnoop المستندة إلى ALSA. يمكنك أيضًا فتح السجل للتحكم في عملية تنزيل الملفات من الهاتف: tail -f /path/to/project/log.txt .


العرض بسرعة في مقطع فيديو واحد للمعاينة ، يمكنك القيام بذلك:


 $ bin/vlog-render \ --project /path/to/project \ --language ru \ --video-filters 'hqdn3d,hflip,curves=psfile=/path/to/curves.acv,vignette' \ --speed 1.3 \ --fps 60 \ --preview true 

الوسيطة --video-filters هي --video-filters يتم تمريرها إلى ffmpeg . سيتم فتح الفيديو تلقائيًا في مشغل mpv .


يمكنك أيضًا تبديل أو استنساخ التكرارات غير الضرورية المتبقية عن طريق تحرير ملف /path/to/project/render.conf ، والذي يمكن اكتشافه بفضل الصوت المعترف به. الفكرة ، بالمناسبة ، ليست جديدة . هناك يمكنك تسريع الأجزاء الفردية وتعديل مقاطع الفيديو غير الناجحة ، إن وجدت. في المرة القادمة vlog-render render.conf - render.conf قراءة render.conf وتطبق التغييرات.


لإعداد شظايا لمحرر الفيديو ، تحتاج إلى تحديد - --preview false . بالإضافة إلى الأجزاء التي ستوضع في output ، output.mp4 مع ذلك في ملف output.mp4 واحد ، لأنني في البداية لم أكن متأكدة:


  • هل يمكنني استخدام مقاطع صغيرة في pitivi
  • أو حمّل مقطع فيديو واحدًا طويلًا للتشريح الإضافي (بحيث يمكنك تطبيق عدد من التأثيرات على "مجموعة" المقاطع).

أنا أساسا استخدام الخيار الأول. والثاني كان مفيدًا في مقطع فيديو واحد مع إضاءة ضعيفة: حيث لم أستخدم سوى قطعة من output.mp4 . output.mp4 . بالنسبة للخيار الثاني ، يمكن أن يكون برنامج vlog-play-segments مفيدًا أيضًا: حيث يمكنك أن ترى بسرعة جميع الإيقاف المؤقت بين المقاطع بترتيب تنازلي مدته. سيساعد هذا في render.conf بشكل أكثر دقة وتوفير الوقت لاحقًا عند تحرير مقطع الفيديو الطويل هذا في Pitivi.


يمكن تنزيل المقاطع الصغيرة الناتجة مرة واحدة في كل جدول زمني في Pitivi: حدد جميع المقاطع المستوردة واسحبها باستخدام السحب والإسقاط.


جبل الهاتف


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


جبل الهاتف

يتم تثبيت الحامل على شاشة كمبيوتر محمول لتقليل المسافة بين البرنامج النصي والكاميرا.


تسجيل الصوت


الصوت المقبول حرج للغاية . في متناول اليد كان ميكروفون بويا BY-M1. على الرغم من أنه يتم الإعلان عنه كميكروفون متعدد الاتجاهات ، إلا أنه لا يتم الحصول على صوت جيد في الممارسة إلا عند استخدامه على أنه أحادي الاتجاه.


من الأسهل وضع حامل الميكروفون: فنحن نأخذ زجاجة من عصير الرمان التي تأتي في متناول اليد ، ولفة من الشريط الاسكتلندي ونضع هذا المنشئ معًا:


حامل الميكروفون

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


بطاقة الصوت


في حالتي ، هذا هو ASUS Xonar U3. ومع ذلك ، فقد تبين أنه غير متوافق مع هذا الميكروفون: يحتوي الميكروفون على قابس CTIA المصمم للهواتف. تم حل المشكلة بواسطة المهايئ في مقابس TRS الخاصة بالميكروفون وسماعات الرأس. والعثور عليه لم يكن سهلاً: نادراً ما يكتب مصنعو هذه المحولات التفاصيل. في حالتي ، ساعد Cablexpert CCA-418W.


مشكلة أخرى مع هذه البطاقة هي في إزاحة العاصمة في القناة اليمنى عند التسجيل. الذي لا يتدخل ، لأنه أنا أسجل على أي حال في أحادية. وبالنسبة للبرامج التي لا تسمح لك بتعيين أحادي ، قمت بإعادة توجيه قناة جيدة إلى قناة سيئة باستخدام ALSA.


هذه البطاقة هي أيضا خائفة من ارتفاع درجة الحرارة. تحتاج إلى الاحتفاظ بها بعيدًا عن المبرد ، وإلا فسوف تبطئ وتسجيل الصوت في الهزات.


معالجة الصوت


أقوم بتحرير الصوت في سماعات الرأس (في حالتي هو Pioneer SE-M390) ، بمستوى صوت أعلى من المستوى الذي أستمع إليه عادةً في الموسيقى. الخوارزمية هي شيء مثل هذا:


  1. باستخدام Pitivi ، أعرض الصوت بشكل منفصل (باستخدام كل نفس ALAC و MP4). غالبًا ما أقوم بإجراء عدة مسارات منفصلة ، واختيار طبقات محددة في Pitivi وإزالة المسارات غير الضرورية مؤقتًا.
  2. إذا تم تحميل الملفات المستلمة على الفور إلى Audacity ، فسوف نفقد امتداد / ضغط دفق الصوت ، مما قد يؤدي إلى مزامنة الفيديو والصوت. ما هو غير واضح ، وهذا لا يحدث مع جميع مقاطع الفيديو. لمنع حدوث ذلك - ما ffmpeg -async 1 -i input.mp4 output.flac سوى تطبيق الامتداد / الضغط: ffmpeg -async 1 -i input.mp4 output.flac
  3. قم بتنزيل جميع المسارات في جرأة. أضف موسيقى خلفية إذا لزم الأمر.
  4. لجميع المسارات ، اضبط مستوى الصوت المرغوب باستخدام Gain.
  5. على المسار الصوتي ، قم بتطبيق تأثيرات تقليل الضوضاء (في حالتي المزدوجة) ، الضاغط والمعادلة وفقًا للنصائح الواردة في هذا الفيديو .
  6. نحن التعادل وزيادة حجم المسار مع الصوت. إحدى الطرق التقليدية هي "التطبيع" و "التضخيم" و "المحدد" و "التطبيع" مرة أخرى ، لكن مع هذا النهج لم أتمكن بعد من الحصول على جودة الصوت المطلوبة. أتصرف بشكل مؤقت كالتالي: أولاً أقوم بتحقيق "كسب المسار بالكامل" بحيث يصدر الجزء الأعلى صوتًا بدون حمل زائد ، ثم أقدم تطبيق Amplify يدويًا للشظايا الفردية. تحديث : هناك طريقة قوية أخرى هي RMS Normalize و Limiter و Normal Normal. RMS تطبيع وإعدادات المحدد يمكن أن تؤخذ من هنا . ومع ذلك ، لم تكن هذه الطريقة مفيدة لي ، لأن على أي حال ، قررت التبديل إلى ميكروفون آخر (Zoom H1n) باستخدام المحدد المدمج ، والذي يناسبني (لذلك مع الميكروفون الجديد ، من المرجح أن أفعل التطبيع العادي فقط ، بدلاً من كل هذه الأشياء).
  7. يسجل الميكروفون في بعض الأحيان الصوت مع بعض العيوب التي تشبه النقرات. يمكن إزالتها باستخدام تأثير أداة Spectral edit المتعددة. غالبًا ما يكون من الضروري تطبيقه عدة مرات على التوالي للمنطقة المحددة ، باستخدام Ctrl + R. تحديث : بفضل الميكروفون الجديد ، اكتشفت أن هذه العيوب مرتبطة بشيء خارجي ، وعلى الأرجح هذا هو مزيج من الضوضاء في الفم والأصوات الدخيلة الأخرى.
  8. نحن نصدر من Audacity إلى FLAC ودمج كل شيء في ملف واحد: ffmpeg -i sound.flac -an -i video.mp4 -c copy output.mkv
  9. على الأقل أول فيديو قمت باختباره على وحدات تخزين مختلفة وأجهزة مختلفة.

النتيجة


أغتنم هذه الفرصة لتخفيف المكسرات في القواعد ، أدعوك لزيارة قناة YouTube الناتجة ، حيث أشارك رؤى حول الدراسة الفعالة للبرمجة والتخصصات ذات الصلة.


حظا سعيدا في تطوير البرامج وإنشاء مدونات الفيديو!


تحديث : ترجم هذه المقالة لبلوقه باللغة الإنجليزية.

Source: https://habr.com/ru/post/ar437918/


All Articles