تدوير مقاطع فيديو mp4 دون إعادة ترميزها
-
21-12-2019 - |
سؤال
أبحث عن طريقة لتدوير مقاطع الفيديو التي تم التقاطها باستخدام جهاز Nexus 4 الخاص بي على نظام Debian Wheezy.يتم تصوير مقاطع الفيديو في الوضع الرأسي وأرغب في تدويرها إلى الوضع الأفقي.ويفضل أن يكون التدوير مدفوعًا بسطر الأوامر.
لقد وجدت العديد من الأسئلة السابقة التي تلمح إلى حل جيد ولكن لا يبدو أنني تمكنت من تفعيلها.
في البداية كان هناك هذا السؤال:تدوير مقاطع الفيديو باستخدام FFmpeg
لكنه يشير إلى أن ffmpeg قديم وأنه يجب علي استخدام avconv.لقد وجدت هذا السؤال بالتفصيل الطريق للمضي قدما.https://askubuntu.com/questions/269429/how-can-i-rotate-video-by-180-degrees-with-avconv
هذا جعلني أستخدم الأمر التالي:
avconv -i original.mp4 -vf "transpose=1" -codec:v libx264 -preset slow -crf 25 -codec:a copy flipped.mp4
ومع ذلك، يعد هذا بطيئًا للغاية (استغرق الاختبار الأخير أكثر من 6 ساعات لأقل من 3 دقائق من اللقطات) ولا يؤدي إلى فيلم قابل للتشغيل.أحصل أيضًا على خطأ في تسجيل الإخراج الذي ينص على حد المستوى Mb Rate>.
هل هناك مشكلة هنا في إعادة الترميز؟هل يجب علي أولاً إعادة تشفير مقاطع الفيديو من هاتفي إلى تشفير آخر أكثر "قابلية للتطبيق" قبل تطبيق عمليات التدوير؟أم أنني أفتقد نقطة أخرى مهمة؟
المحلول
إذا كنت ترغب فقط في تغيير البيانات الوصفية بحيث تعتبر MediaPlayers التي تنظر في العلم في تشغيل الملف المستورد، جرب شيئا مثل:
giveacodicetagpre.كما تم العثور على في مكان آخر على Stackoverflow .
نصائح أخرى
دوران= 0 تم إصلاح مشكلتي.بدأت تسجيل الفيديو في وضع عمودي، أدركت خطأي وتحويل هاتفي على الفور إلى المناظر الطبيعية لمتابعة التسجيل.كان جهاز iPhone الخاص بي قد يمثل الفيديو كتصوير للفيديو بأكمله.
giveacodicetagpre.تم إصلاحه.
FFmpeg
وبرامج مماثلة تغيير البيانات الوصفية حتى مع -map_metadata
خيار. exiftool
يمكنه قراءة مصفوفة التدوير وعلم التدوير، ومنذ الإصدار 10.89، يمكنك أيضًا كتابتها كما هو موضح أدناه.
للحصول على ضياع حقيقي (بما في ذلك.البيانات الوصفية) ، لم أتمكن من العثور على حل، لذلك قمت باستخدام محرر سداسي عشري (على سبيل المثال HxD) وتحليل ملفات الفيديو التي تم تدويرها.
التدوير الحقيقي بدون فقدان لملفات MP4:
- افتح mp4 باستخدام محرر سداسي عشري وابحث عن
vide
للعثور على البيانات الوصفية لمسار الفيديو - بعض الصفوف أعلاه (لملفاتي في الغالب 9، وأحيانًا 12) يجب أن تراها
trak...\tkhd
- بينهما يجب أن يكون هناك
@
علامة (عرافة 40) - في الصفين قبل ذلك يتم تخزين مصفوفة التناوب
لا دوران:
00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 40
180°:
FF FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 40
90 درجة الأسلحة الكيميائية:
00 00 00 00 00 01 00 00 00 00 00 00 FF FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 40
90 درجة سم مكعب:
00 00 00 00 FF FF 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 40
قم بتغيير الملف حسب حاجتك إليه، ويجب تدويره في المشغلات التي تدعم علامة التدوير (معظم المشغلات الحالية تفعل ذلك).
إذا كان الفيديو الخاص بك يحتوي على صوت استريو، فمن الواضح أن هذا لم يتم تبديله، لذلك إذا كنت تريد أن يتطابق الصوت مع دوران الفيديو (180 درجة)، فستحتاج إلى تبديل القنوات اليسرى واليمنى.
هناك عدة أمور تطرقت إليها في سؤالك:
- ليس هناك أي احتمال تقريبًا أن تتمكن من التدوير دون إعادة التشفير.لقد تمت الإشارة بالفعل إلى الاستثناء لهذه القاعدة (برنامج ترميز MJPEG)، ولكن من غير المحتمل أنك تستخدمه، لذا فهو يتجاوز نطاق هذا السؤال.سأذكر أن سبب هذه القدرة هو أنه يمكن تحويل JPEG عبر البيانات الوصفية.وبالتالي، إذا تمكنت من العثور على حاوية تحتوي على تدوير البيانات الوصفية، فستتمكن من التدوير، ولكن لا يوجد أي منها (أو منتشر على نطاق واسع بما فيه الكفاية) حتى الآن.
- إذا استغرق الأمر ساعات لتدوير وإعادة ترميز 3 دقائق من الفيديو، فمن الممكن أن تكمن المشكلة في ملف ضخم دقة.وأنا أعني ضخم!هل يمكنك من فضلك تقديم مخرجات
avprobe original.mp4
حتى يمكن التأكد من ذلك. - إن مناقشات Libav مقابل FFmpeg تأتي بنتائج عكسية للغاية (يمكنك أن ترى ذلك من خلال كمية الفوضى المنشورة هنا بالفعل).ما حدث في الأساس هو انقسام المشروع حيث ذهب بعض المطورين في اتجاه واحد والبعض الآخر في اتجاه آخر، وحقيقة أن مشروع FFmpeg تمكن من الاحتفاظ بالاسم هي مجرد صدفة وليس من المنطقي أن نطلق على مشروع ما اسم أصلي وآخر مفترق.تكمن الاختلافات بين المشاريع في الغالب في أسلوب التطوير والفلسفة.إذا كنت ستصنف FFmpeg على أنه مفتوح المصدر أكثر وLibav على أنه برنامج مجاني أكثر، فلن تكون مخطئًا إلى هذا الحد.يأمل الأشخاص العقلانيون أن يعود المطورون إلى رشدهم في النهاية، وربما لا يقومون بدمج المشاريع، بل يتعاونون إلى حد أكبر.عندما ظهر نظام Ubuntu في الأصل، كانت هناك رسائل ضخمة في كل دردشة على نظام Debian GNU/Linux على غرار "Ubuntu ليس Debian!!!!!!!"، ولكن الآن هدأ الوضع وأصبح كلا الجانبين سعيدين جدًا بواحدة من هذه المحادثات. آخر.
هذه الإجابة هي ببساطة ملخص للتعليقات المقدمة من LordneckbeBBeard.
الدورية دون تشفير
الدورية دون إعادة ترميز غير ممكن ما لم:
- الإدخال الخاص بك هو MJPEG
- أنت تدوير عند التشغيل
تدوير مع الترميز باستخدام FFMPEG
صحيحلتفهم بشكل صحيح الخطوات اللازمة لهذا، يجب أن يبدأ المرء بالقراءة أو على الأقل قشط هذا السؤال:
href="https://stackoverflow.com/q/9477115/1109017"> ما هي الاختلافات والوجهات التشابه بين FFMPEG، LIBAV، و AVCONV؟
Summary: Avconv هو شوكة من FFMPEG، واختار Debian Manufier Avconv، عليك ترجمة FFMPEG الصحيح من المصدر.
ستكون الخطوة التالية تجميع FFMPEG الصحيح من المصدر كما هو مفصل هنا:
الخطوة الأخيرة تستخدم الأوامر الموجودة في مشاركات أخرى:
href="https://superuser.com/a/578329"> كيفية قلب الفيديو 180 درجة (رأسية / رأسا على عقب) مع FFMPEG؟ أو مقاطع الفيديو الدوارة مع FFMPEG
Summary: FFMPEG -VFilters "تدوير= 90" -I Input.mp4 الإخراج. mp4