الموقع الرسمي https://ffmpeg.org/download.html
وإضافتها إلى متغيرات البيئة
فمبيج -v ffmpeg الإصدار 6.0 حقوق الطبع والنشر (c) 2000-2023 تم تصميم مطوري FFmpeg باستخدام Apple clang الإصدار 14.0.3 (clang-1403.0.22.14.1)
يشير عرض رقم الإصدار إلى النجاح
على جانب المتصفح، اضغط على F12 للدخول إلى الواجهة لعرض طلبات الشبكة، وتصفية معلومات m3u8
، والبحث عن محتوى المعاينة، والنقر على الفيديو، والعثور على تشغيل البث المباشر، والنقر عليه، واسحب شريط التقدم للخلف إذا لم يكن هناك المحتوى، قم بتحديثه. تم الوصول إلى هذا الطلب قبل تحميل الفيديو، وقد لا يتم تسجيله.
الخطوة الأولى هي إلقاء نظرة على غرفة الكمبيوتر التي يأتي منها header
.
في الخطوة الثانية، يقوم Ctrl + A بتحديد كافة محتويات المعاينة.
شيء من هذا القبيل:
#EXTM3U#EXT-X-VERSION:3#EXT-X-MEDIA-SEQUENCE:1#EXT-X-TARGETDURATION:35#EXTINF:33.000,xxx/1.ts?auth_key=xxx ...
احفظه باسم aa.bj.m3u8
، في نفس الدليل مثل البرنامج النصي python. لاحظ أن bj في المنتصف قد يكون مختلفًا . sz يعني Shenzhen وbj يعني بكين.
ثم قم بتنفيذ البرنامج النصي python3 a.py
سيتم إنشاء مجلد ذاكرة تخزين مؤقت يدعم استئناف التنزيل وسيتم حذفه تلقائيًا بعد اكتمال التنزيل.
لا يمكن استخدام المعلمة -mac-crf
لضغط الفيديو ويجب استبدال تعليمات برنامج التشفير.
نسخة تجريبية تختلف عن البرنامج النصي الآلي
طلبات الاستيراد، os، re، time# sz تعني Shenzhen، bj تعني بكين، base_url = "https://dtliving-sz.dingtalk.com/live_hp/" def get_url(): url_list = [] with open("aa. m3u8"، "r") كـ f: s = f.readlines() for i in s: if re.match(r".*?ts.*؟", i): url_list.append(base_url + i) return url_listdef download(): urls = get_url() for i، عنوان url في enumerate(urls): مع open(f"{i + 1}.ts"، "wb") كـ f: Response = request.get(url[:-1]) # إزالة أحرف السطر الجديد print(i, "ok") # time.sleep(1)# دمج أسماء الملفات، دمج FFmpeg مناسب لـ def parse_filename(): base_path = os.getcwd() urls = get_url() مع open("file.txt", "w+") كـ f: for i in range(1, 1 + len(urls)) : المسار = f"file '{base_path}/{i}.ts'n" print(path) f.write(path)if __name__ == "__main__": تنزيل() طباعة("انتهى التنزيل...") parse_filename()
في حالة النجاح، سيتم تنزيل سلسلة من الملفات二进制
، 1.ts, 2.ts, 3.ts, ...
إذا كان خطأ، فهو ملف بمحتوى بتنسيق xml
، وسيتم عرض رسالة خطأ عند فتحه.
الحل هو معرفة ما إذا كان base_url
غير متطابق، أو أن sz وbj خاطئان.
ffmpeg -f concat -safe 0 -i file.txt -c نسخ a.mp4
أعتقد أنه إذا كان الملف كبيرًا جدًا بعد الدمج، فيمكنك استخدام ffmpeg
لإعادة الضغط، أو استخدام h256/hevc
لإعادة التشفير للحصول على حجم ملف أصغر.
يوصى باستخدام برنامج الضغط البديل
يعد استخدام تنسيق ترميز فيديو أكثر كفاءة أسلوبًا شائعًا لتقليل حجم ملفات الفيديو باستخدام تنسيق ترميز فيديو بمعدل ضغط أعلى. فيما يلي مثال لاستخدام FFmpeg لتحويل الفيديو إلى تنسيق ترميز H.265:
ffmpeg -i input.mp4 -c:v libx265 -crf 28 output.mp4
يقوم الأمر أعلاه بتحويل تنسيق إدخال الفيديو input.mp4 إلى تنسيق ترميز H.265 وحفظ النتيجة كملف Output.mp4. من بينها، يشير الخيار -c:v إلى برنامج تشفير الفيديو، ويشير الخيار libx265 إلى استخدام برنامج التشفير x265، ويشير الخيار -crf إلى جودة الفيديو، ويشير الخيار 28 إلى جودة الفيديو المستهدفة. كلما كانت القيمة أصغر، زادت جودة الفيديو وقيمة الملف أكبر حجم الملف.
اختبار، تم ضغط فيديو بحجم 1.3 جرام إلى حجم 231 مترًا، لكن السرعة بطيئة جدًا = 0.8، استغرق ضغط الفيديو 3 ساعات 4 ساعات، أبحث عن طرق أخرى
إن hevc_videotoolbox ليس بنفس جودة libx265، ولكنه سريع جدًا على جهاز m1 MacBook air 13 الخاص بي.
مثل معظم برامج التشفير المسرّعة للأجهزة، فإن hevc_videtoolbox ليس بنفس كفاءة libx265. لذلك، قد تحتاج إلى منحه معدل بت أعلى بكثير مقارنةً بـ libx265 لمطابقة الجودة المكافئة. قد يؤدي هذا إلى إبطال غرض إعادة التشفير من H.264 إلى HEVC/H.265.
الموقع الرسمي https://trac.ffmpeg.org/wiki/HWAccelIntro#VideoToolbox
# VideoToolbox [¶](https://trac.ffmpeg.org/wiki/HWAccelIntro#VideoToolbox "链接到这一节") [VideoToolbox](https://developer.apple.com/documentation/videotoolbox) is the macOS framework for video decoding and encoding. The following codecs are supported: - Decoding: H.263, H.264, HEVC, MPEG-1, MPEG-2, MPEG-4 Part 2, ProRes - Encoding: H.264, HEVC, ProRes To use H.264/HEVC hardware encoding in macOS, just use the encoder `-c:v h264_videotoolbox` or `-c:v hevc_videotoolbox` for H.264 or HEVC respectively. Check `ffmpeg -h encoder=...` to see encoder options. VideoToolbox supports two types of rate control: - Bitrate-based using `-b:v` - Constant quality with `-q:v`. Note that the scale is 1-100, with 1 being the lowest and 100 the highest. Constant quality mode is only available for Apple Silicon and from ffmpeg 4.4 and higher.
قم بتشغيل تسريع GPU 3 وحدد برنامج تشفير الفيديو للتشفير. وتجدر الإشارة إلى أن VideoToolbox لا يدعم CRF، لذلك يجب تحديد معدل البت من خلال -b:v
.
لم يتم استخدام برنامج Codec AVOption crf (حدد الجودة لوضع الجودة الثابتة) لأي بث، والسبب الأكثر ترجيحًا هو إما النوع الخاطئ (على سبيل المثال، خيار فيديو لا يحتوي على تدفقات فيديو) أو أنه خيار خاص لبعض برامج التشفير التي كانت موجودة. لا تستخدم فعليا لأي تيار.
اختبار الخيارات الافتراضية أسرع بحوالي 10 مرات
ffmpeg video -i input.mp4 -c:v hevc_videotoolbox output.mp4
الإطار = 126360 إطارًا في الثانية = 114 q=-0.0 Lsize = 413400 كيلو بايت الوقت = 02:55:29.95 معدل البت = 321.6 كيلوبت/ثانية تكرار = 663 إسقاط = 0 السرعة = 9.51x فيديو: 315854 كيلو بايت صوت: 93814 كيلو بايت ترجمة فرعية: 0 كيلو بايت تدفقات أخرى: 0 كيلو بايت رؤوس عالمية: 0 كيلو بايت مضاعفة الحمل: 0.910847%
إنه أسرع بحوالي 10 مرات من الإصدار السابق، وقد انخفض حجم الملف من 800 متر إلى 400 متر، لكن معدل الضغط انخفض. سأختبر المزيد من الملفات.
تتضمن الترميزات المقابلة لـ h264 في نظام التشغيل macOS libx264 وh264_videotoolbox. والسرعتان متشابهتان، لكن libx264 يستخدم وحدة المعالجة المركزية بشكل كبير كما أن حجم الملف الذي تم تحويله صغير أيضًا. وسمعت أن متطلبات فك التشفير لتشغيل مقاطع الفيديو ستكون أعلى.
بعد الاختبار، وجدت أن ملفات التسجيل والبث تستخدم ترميز H265 له مزايا واضحة في 4K والعديد من المشاهد الرياضية في DingTalk تحتوي على 12 إطارًا فقط وجودة صورة 1080 بكسل التسجيل والبث الذي قمت بدراسته معظمها عبارة عن جزء لكل تريليون، وهناك عدد قليل جدًا من اللقطات الرياضية.
يوصى بالتعليمات التالية:
find ./ -name '*.mp4' -exec sh -c 'ffmpeg -i "$0" -c:v libx264 -crf 30 -c:a aac "${0%%.mp4}-hevc.mp4"' {} ;
مصدر الكود https://blog.51cto.com/u_15366127/6084937 ↩
عدة طرق لاستخدام ffmpeg لتقليل حجم الفيديو https://juejin.cn/post/7222575963564654648 ↩
تسريع أجهزة FMPEG https://blog.xm.mk/posts/1a3h/ ↩