m4b-tool
عبارة عن أداة مجمعة لـ ffmpeg
و mp4v2
لدمج ملفات الكتب الصوتية أو تقسيمها أو معالجتها مع الفصول. على الرغم من أن m4b-tool
مصممة للتعامل مع ملفات m4b، إلا أنه يجب دعم جميع تنسيقات الصوت تقريبًا، على سبيل المثال mp3 وaac وogg وalac وflac.
إذا كنت تستخدم أيًا من مشاريعي وتجدها مفيدة، فيرجى التفكير في التبرع لدعمي. أخطط لاستخدام الأموال لدعم مشاريع أخرى مفتوحة المصدر أو لأغراض خيرية. شكرًا لك!
>= 25.00$
شكر خاص لجميع الرعاة الذين تبرعوا بمبلغ شهري >= 25.00$
.
اسم | كمية |
---|---|
numinit | 25.00$ |
احصل على Nix وتأكد من تمكين الرقائق.
nix run github:sandreas/m4b-tool
أو nix run github:sandreas/m4b-tool#m4b-tool-libfdk
nix build github:sandreas/m4b-tool
أو nix build github:sandreas/m4b-tool#m4b-tool-libfdk
./result/bin/m4b-tool
nix develop
composer2nix --executable --composition=composer.nix
لتحديث ملفات .nix لقد بدأت تجربة، وقد وصلت الآن إلى مستوى ألفا مبكر ويمكن تجربتها. أداة سطر الأوامر مكتوبة بلغة C#
، وهي مفتوحة المصدر بالكامل وتسمى tone
. إنه يحتوي بالفعل على مجموعة ميزات جيدة جدًا، لذا إذا كنت ترغب في تجربتها، فإليك ما يلي:
https://github.com/sandreas/tone
لا يعني هذا الإعلان أن m4b-tool
قد تم إهمالها أو سيتم إيقافها قريبًا. سيستمر تطوير m4b-tool
(على الأقل حتى تحتوي النغمة على مجموعة ميزات مشابهة m4b-tool
). كل ما في الأمر هو الحصول على أداة بديلة للميزات، والتي قد تكون لها قيود.
استمتع، لا أستطيع الانتظار للحصول على تعليقاتك.
لسوء الحظ، أنا مشغول جدًا في الوقت الحالي، لذا فإن m4b-tool 0.4.2
قديم جدًا. نظرًا لأنه ليس من المخطط إطلاق إصدار أحدث دون الحصول على وثائق كاملة، فلا يوجد سوى الإصدار التجريبي الأخير الذي يحصل على إصلاحات للأخطاء. إنه مستقر جدًا بالفعل، لذا إذا كنت تواجه أخطاء في v0.4.2
، فيرجى تجربة الإصدار التجريبي الأخير، إذا تم إصلاحه بالفعل هناك.
شكرا لك ساندريس
https://pilabor.com
merge
مجموعة من الملفات الصوتية (مثل MP3 أو AAC) في ملف m4b واحدsplit
ملف m4b واحد إلى عدة ملفات إخراج حسب الفصول أو ألبوم مشفر بصيغة flac
إلى مسارات فردية عبر ورقة التلميحchapters
لملف m4b موجود عبر اكتشاف الصمت أو musicbrainz merge
جميع الملفات الصوتية في دليل data/my-audio-book
في file data/merged.m4b
(يتم الاحتفاظ بالعلامات ويتم تضمين data/my-audio-book/cover.jpg
و data/my-audio-book/description.txt
، إذا كان متاحا)
m4b-tool merge "data/my-audio-book/" --output-file="data/merged.m4b"
split
ملف m4b كبير حسب الفصول إلى ملفات mp3 متعددة على data/my-audio-book_splitted/
(يتم الاحتفاظ بالعلامات، ويتم إنشاء data/my-audio-book_splitted/cover.jpg
، إذا كان m4b يحتوي على غلاف)
m4b-tool split --audio-format mp3 --audio-bitrate 96k --audio-channels 1 --audio-samplerate 22050 "data/my-audio-book.m4b"
يمكن أن تحاول chapters
ضبط الفصول الموجودة في m4b عن طريق اكتشاف الصمت
m4b-tool chapters --adjust-by-silence -o "data/destination-with-adjusted-chapters.m4b" "data/source-with-misplaced-chapters.m4b"
نظرًا لأن الأمر الفرعي الأكثر استخدامًا في m4b-tool
هو merge
، فلنتحدث عن أفضل الممارسات...
لسوء الحظ، تحتوي m4b-tool
على العديد من التبعيات. ليس فقط الخطوط الفردية، إذا كنت ترغب في الحصول على أفضل جودة ودعم وضع العلامات، فيجب تجميع العديد من التبعيات يدويًا مع خيارات إضافية. لهذا السبب يجب عليك إلقاء نظرة على صورة عامل الإرساء، والتي تأتي مع جميع الميزات ذات الجودة الصوتية العالية ودعم العلامات الأعلى والتثبيت السهل وليس لها أي عيوب تقريبًا.
ملحوظة: إذا كنت تستخدم نظام Windows، فقد يكون من الصعب تشغيله
عند دمج الكتب الصوتية، يجب عليك إعدادها - تساعد بنية الدليل التالية كثيرًا، حتى لو قمت بدمج كتاب صوتي واحد فقط:
input/<main genre>/<author>/<title>
أو إذا كانت سلسلة
input/<main genre>/<author>/<series>/<series-part> - <title>
أمثلة:
input/Fantasy/J.K. Rowling/Quidditch Through the Ages/
input/Fantasy/J.K. Rowling/Harry Potter/1 - Harry Potter and the Philosopher's Stone/
ملاحظة: إذا كان عنوان كتابك الصوتي يحتوي على أحرف مسار غير صالحة مثل
/
، فما عليك سوى استبدالها بشرطة-
.
الآن، نظرًا لأنك تريد دائمًا غلافًا ووصفًا لكتابك الصوتي، فيجب عليك إضافة الملفات التالية في الدليل الرئيسي:
cover.jpg
(أو cover.jpeg
أو cover.png
)description.txt
(تأكد من استخدام ترميز الملف النصي UTF-8
للمحتويات)أمثلة:
input/Fantasy/J.K. Rowling/Quidditch Through the Ages/cover.jpg
input/Fantasy/J.K. Rowling/Quidditch Through the Ages/description.txt
ملحوظة: سوف تقوم
m4b-tool
بالبحث عن هذه الملفات وتضمينها تلقائيًا ولكنها لن تفشل في حالة عدم وجودها
الفصول رائعة لإضافة نقاط الطريق لكتابك الصوتي. إنها تساعد على تذكر المركز الأخير وتحسين التجربة بشكل عام.
إذا كنت ترغب في ضبط الفصول يدويًا، يمكنك إضافة ملف chapters.txt
(نفس موقع cover.jpg
) مع المحتويات التالية ( <chapter-start>
<chapter-title>
):
00:00:00.000 Intro
00:04:19.153 This is
00:09:24.078 A way to add
00:14:34.500 Chapters manually
إذا تم وضع علامات على ملفات الإدخال الخاصة بك، فسيتم استخدام هذه العلامات لإنشاء بيانات تعريف الفصل حسب title
. لذا، إذا قمت بوضع علامة على ملفات الإدخال الخاصة بك بأسماء فصول صالحة title
للمسار، فسيؤدي ذلك إلى ملف m4b
جميل ونظيف بأسماء فصول صالحة.
ميزة أخرى رائعة منذ m4b-tool
v.0.4.0 هي المعلمة --max-chapter-length
. غالبًا ما تكون ملفات الإدخال الفردية كبيرة جدًا مما يؤدي إلى فصول ذات مدة طويلة جدًا. يمكن أن يكون هذا مزعجًا، إذا كنت ترغب في القفز إلى نقطة معينة، حيث يتعين عليك الترجيع أو التقديم السريع مع الاستمرار على الزر لفترة طويلة، بدلاً من مجرد تحريك الزر السابق أو التالي عدة مرات. لإضافة فصول فرعية تلقائيًا، يمكنك توفير:
--max-chapter-length=300,900
سيؤدي هذا إلى ظهور m4b-tool
تتم تسمية الفصول الفرعية مثل الأصل وتحصل على فهرس إضافي. هذه طريقة رائعة للاحتفاظ بالأسماء الحقيقية ولكن دون أن تكون هناك فصول ذات مدة طويلة جدًا.
إذا كنت تمتلك جهاز iPod، فقد تكون هناك مشكلة في الكتب الصوتية الطويلة جدًا، نظرًا لأن أجهزة iPod تدعم فقط معدلات أخذ العينات 32 بت. إذا كان كتابك الصوتي أطول من 27 ساعة بمعدل أخذ عينات يبلغ 22050 هرتز، فيمكنك توفير --adjust-for-ipod
، لاختزال كتابك الصوتي تلقائيًا، مما يؤدي إلى انخفاض الجودة، ولكنه على الأقل يعمل على جهاز iPod القديم الجيد...
تدعم m4b-tool
مهام تحويل متعددة بالتوازي مع المعلمة --jobs
(على سبيل المثال --jobs=2
). إذا كان عليك تحويل أكثر من ملف واحد، وهي الحالة الشائعة، فستتمكن من مضاعفة سرعة الدمج تقريبًا عن طريق توفير المعلمة --jobs=2
(أو النسخ الرباعي باستخدام --jobs=4
، إذا كان لديك نظام رباعي النواة، وما إلى ذلك .). لا تقدم رقمًا أعلى من عدد النوى في نظامك - فهذا سيؤدي إلى إبطاء عملية الدمج...
ملاحظة: إذا قمت بتشغيل التحويل على جميع مراكزك، فسيؤدي ذلك إلى استخدام وحدة المعالجة المركزية بنسبة 100% تقريبًا، مما قد يؤدي إلى تباطؤ أداء النظام
--batch-pattern
في m4b-tool v.0.4.0
تمت إضافة ميزة --batch-pattern
. يمكن استخدامه لتحويل عدة كتب صوتية دفعة واحدة، ولكن أيضًا لتحويل كتاب صوتي واحد فقط - لأنه يمكنك إنشاء علامات من بنية دليل موجودة.
تلميح: يجب أن تكون معلمة
output-file
عبارة عن دليل، عند استخدام--batch-pattern
.
يتم دعم معلمات --batch-pattern
المتعددة، بينما سيتم استخدام المطابقة الأولى أولاً. لذا، إذا قمت بإنشاء بنية الدليل كما هو موضح أعلاه، فإن الأمر النهائي هو دمج input/Fantasy/Harry Potter/1 - Harry Potter and the Philosopher's Stone/
إلى output/Fantasy/Harry Potter/1 - Harry Potter and the Philosopher's Stone.m4b
سيبدو مثل هذا:
m4b-tool merge -v --jobs=2 --output-file="output/" --max-chapter-length=300,900 --adjust-for-ipod --batch-pattern="input/%g/%a/%s/%p - %n/" --batch-pattern="input/%g/%a/%n/" "input/"
في وضع
--batch-pattern
، يتم تخطي الملفات الموجودة افتراضيًا
إذا قمت بتنفيذ الخطوات المذكورة أعلاه باستخدام صورة عامل الإرساء أو قمت بتثبيت جميع التبعيات وتجميعها، فيجب أن تحصل على النتيجة التالية:
libfdk_aac
genre
author
title
sorttitle
وما إلى ذلك من استخدام --batch-pattern
cover.jpg
(أو cover.jpeg
أو cover.png
) و description.txt
موجودين في الدلائل الرئيسية، فسيتم تضمين cover
description
و longdesc
لاستخدام عامل الإرساء مع m4b-tool
، عليك أولاً القيام بذلك
pull
صورة عامل الإرساء الرسمية (مستحسن)build
ملف Dockerfile
في الدليل الرئيسي صور عامل الإرساء الرسمية متاحة على DockerHub. إنها تجريبية إلى حد ما، ولكنها أثبتت فعاليتها بشكل جيد. تعتبر العلامة latest
بمثابة وسيلة للتعامل مع الميزات والإصلاحات المتطورة. بين الحين والآخر يتم نشر علامة مؤرخة (على سبيل المثال، sandreas/m4b-tool:2022-09-25
)، والتي تعتبر مستقرة جدًا ، لضمان أن latest
صورة معطلة لن تؤدي إلى تعطيل الإعداد بالكامل.
# pull the image
docker pull sandreas/m4b-tool:latest
# create an alias for m4b-tool running docker
alias m4b-tool='docker run -it --rm -u $(id -u):$(id -g) -v "$(pwd)":/mnt sandreas/m4b-tool:latest'
# testing the command
m4b-tool --version
ملاحظة: إذا كنت تستخدم الاسم المستعار أعلاه، فضع في اعتبارك أنه لا يمكنك استخدام المسارات المطلقة (على سبيل المثال
/tmp/data/audiobooks/harry potter 1
) أو الروابط الرمزية. يجب عليك التغيير إلى الدليل واستخدام المسارات النسبية (على سبيل المثالcd /tmp/data && m4b-tool merge "audiobooks/harry potter 1" --output-file harry.m4b
)
لإنشاء حاوية عامل إرساء يدويًا لإصدار m4b-tool
محدد، يلزم توفير معلمة إضافية لتنزيل إصدار معين في الصورة، على سبيل المثال لـ v.0.4.1
:
# clone m4b-tool repository
git clone https://github.com/sandreas/m4b-tool.git
# change directory
cd m4b-tool
# build docker image - this will take a while
docker build . -t m4b-tool
# create an alias for m4b-tool running docker
alias m4b-tool='docker run -it --rm -u $(id -u):$(id -g) -v "$(pwd)":/mnt m4b-tool'
# testing the command
m4b-tool --version
# use the specific pre-release from 2022-07-16
docker build . --build-arg M4B_TOOL_DOWNLOAD_LINK=https://github.com/sandreas/m4b-tool/files/9125095/m4b-tool.tar.gz -t m4b-tool
ملاحظة: يمكنك أيضًا تعديل المتغير المناسب في
Dockerfile
.
قد يرغب المطورون أو الخبراء في تشغيل إصدار مخصص كامل m4b-tool
أو إنشاء الكود بأنفسهم (على سبيل المثال، إذا قمت بتقسيم المستودع وتطبيق بعض التصحيحات). إذا كان الأمر كذلك، فيمكنك تخزين الإصدار المخصص على dist/m4b-tool.phar
المرتبط بملف Dockerfile
ثم إجراء إنشاء افتراضي.
# dist/m4b-tool.phar is available
docker build . -t m4b-tool
بعد ذلك، يجب دمج البنية المخصصة في صورة عامل الإرساء.
في نظام التشغيل MacOS، يمكنك استخدام brew
مدير الحزم الرائع لتثبيت m4b-tool
.
يتطلب الحصول على أفضل جودة صوت بعض الجهد الإضافي. يجب عليك إعادة ترجمة ffmpeg
باستخدام برنامج الترميز libfdk_aac
غير المجاني. يتطلب هذا إلغاء تثبيت حزمة ffmpeg
الافتراضية إذا كانت مثبتة، نظرًا لأن brew
أسقط إمكانية وجود خيارات إضافية . لا يوجد مستودع رسمي ffmpeg-with-options
، ولكن هناك tap
جيدة جدًا يمكنك استخدامها لتوفير الوقت.
# FIRST INSTALL ONLY: if not already done, remove existing ffmpeg with default audio quality options
# check for ffmpeg with libfdk and uninstall if libfdk is not already available
[ -x "$(which ffmpeg)" ] && (ffmpeg -hide_banner -codecs 2>&1 | grep libfdk || brew uninstall ffmpeg)
# tap required repositories
brew tap sandreas/tap
brew tap homebrew-ffmpeg/ffmpeg
# check available ffmpeg options and which you would like to use
brew options homebrew-ffmpeg/ffmpeg/ffmpeg
# install ffmpeg with at least libfdk_aac for best audio quality
brew install homebrew-ffmpeg/ffmpeg/ffmpeg --with-fdk-aac
# install m4b-tool
brew install sandreas/tap/m4b-tool
# check installed m4b-tool version
m4b-tool --version
إذا لم ينجح ما سبق معك أو كنت ترغب فقط في التحقق من m4b-tool
قبل استخدامها في الإنتاج، فقد ترغب في تجربة الطريقة السريعة والسهلة . سينجح الأمر، لكنك تحصل على جودة صوت أقل ولا يوجد دعم لوضع علامات الفرز .
# tap m4b-tool repository
brew tap sandreas/tap
# install dependencies
brew install ffmpeg fdk-aac-encoder mp4v2
# install m4b-tool with acceptable audio quality and no sort tagging
brew install --ignore-dependencies sandreas/tap/m4b-tool
# install all dependencies
sudo apt install ffmpeg mp4v2-utils fdkaac php-cli php-intl php-json php-mbstring php-xml
# install / upgrade m4b-tool
sudo wget https://github.com/sandreas/m4b-tool/releases/download/v.0.4.2/m4b-tool.phar -O /usr/local/bin/m4b-tool && sudo chmod +x /usr/local/bin/m4b-tool
# check installed m4b-tool version
m4b-tool --version
ملاحظة: إذا كنت ترغب في الحصول على أفضل جودة صوت ممكنة، فيجب عليك تجميع
ffmpeg
باستخدام برنامج التشفير عالي الجودةfdk-aac
(--enable-libfdk_aac
) - راجع https://trac.ffmpeg.org/wiki/CompilationGuide/ Ubuntu للحصول على دليل خطوة بخطوة لتجميعffmpeg
.
تمت كتابة m4b-tool
بلغة PHP
وتستخدم ffmpeg
و mp4v2
واختياريًا fdkaac
لبرامج الترميز عالية الكفاءة لإجراء التحويلات. لذلك ستحتاج إلى الأدوات التالية في %PATH% الخاص بك:
php
>= 7.1 مع تمكين ملحق mbstring
(https://php.net)ffmpeg
(https://www.ffmpeg.org)mp4v2
( mp4chaps
، mp4art
، وما إلى ذلك https://github.com/sandreas/m4b-tool/releases/download/v0.2/mp4v2-windows.zip)fdkaac
(اختياري، فقط إذا كنت بحاجة إلى كفاءة عالية لمعدلات البت المنخفضة <= 32 كيلو، http://wlc.io/2015/06/20/fdk-aac/ - تحذير: ليس رسميًا!)للتحقق من التبعيات، تشغيل الأوامر التالية عبر سطر الأوامر يجب أن يُظهر مخرجات مماثلة:
$ php -v
Copyright (c) 1997-2018 The PHP Group [...]
$ ffmpeg -version
ffmpeg version 4.1.1 Copyright (c) 2000-2019 the FFmpeg developers [...]
$ mp4chaps --version
mp4chaps - MP4v2 2.0.0
$ fdkaac
fdkaac 1.0.0 [...]
إذا كنت متأكدًا من تثبيت جميع التبعيات، فإن الخطوة التالية هي تنزيل أحدث إصدار من m4b-tool
من
https://github.com/sandreas/m4b-tool/releases
اعتمادًا على نظام التشغيل، يمكنك إعادة تسمية m4b-tool.phar
إلى m4b-tool
وتشغيل m4b-tool --version
مباشرة من سطر الأوامر. إذا لم تكن متأكدًا، يمكنك دائمًا استخدام الأمر php m4b-tool.phar --version
للتحقق من نجاح التثبيت. يجب أن يعمل هذا على كل نظام.
إذا كنت ترغب في استخدام أحدث كود المصدر مع جميع الميزات والإصلاحات الجديدة، فيمكنك أيضًا الإنشاء من المصدر. قد يكون الإصدار الحالي غير مستقر ويجب استخدامه فقط لأغراض الاختبار أو إذا كنت بحاجة إلى ميزة معينة لم يتم إصدارها.
mp4v2
مخصص لترتيب الفرز الدقيقلا يتم إصدار معظم الكتب الصوتية بالترتيب الأبجدي. ومن الأمثلة البارزة هاري بوتر. لذا، إذا كان لديك جميع كتب هاري بوتر الصوتية، فهذا يعتمد على المشغل الخاص بك، ولكن ربما لم يتم إدراجها بالترتيب الصحيح... دعنا نرى ما هو الترتيب الأبجدي:
وكان الترتيب الصحيح هو:
حسنا، هناك حل لهذا. يجب عليك وضع علامة على الكتاب الصوتي باستخدام sortname
مخصص و/أو sortalbum
. إذا كان المشغل الخاص بك يدعم هذه العلامات، فسيكون الترتيب الآن صحيحًا، حتى عندما يظل العنوان هو العنوان الأصلي. ولتحقيق ذلك، كان علي إنشاء إصدار مخصص من mp4v2
( mp4tags
أكثر دقة)، لإضافة خيارات لهذه العلامات وإضافة العلامات الزائفة --series
و --series-part
.
لذلك إذا قمت بما يلي:
m4b-tool merge --name="Harry Potter and the Chamber of Secrets" --series="Harry Potter" --series-part="2" --output-file="output/Harry Potter and the Chamber of Secrets.m4b" "input/Harry Potter and the Chamber of Secrets"
من شأنه أن يؤدي إلى:
Harry Potter and the Chamber of Secrets
Harry Potter 2 - Harry Potter and the Chamber of Secrets
mp4v2
المخصصفي صورة عامل الإرساء، تم بالفعل تثبيت الإصدار المخصص
git clone https://github.com/sandreas/mp4v2
cd mp4v2
./configure
make && sudo make install
في m4b-tool
يتم إجراء جميع التحويلات الصوتية باستخدام ffmpeg
مما يؤدي إلى جودة صوت جيدة جدًا باستخدام برامج التشفير المجانية الخاصة بها. ومع ذلك، فإن أفضل جودة تتطلب بعض الجهد الإضافي، لذلك إذا كنت تستخدم برامج التشفير المجانية، فقد تعرض m4b-tool
التلميح التالي:
لا يمكن لإصدار ffmpeg الخاص بك إنتاج aac عالي الجودة باستخدام برنامج التشفير aac بدلاً من libfdk_aac
هذه ليست مشكلة حقًا، لأن الفرق بين برنامج التشفير aac
و libfdk_aac
لا يكاد يكون ملحوظًا في معظم الحالات. ولكن للتغلب على التلميح والحصول على أفضل جودة صوت ممكنة، عليك استخدام برنامج تشفير غير مجاني، وهو غير مدمج في ffmpeg
افتراضيًا (لأسباب تتعلق بالترخيص). اعتمادًا على نظام التشغيل الذي تستخدمه، قد يتطلب تثبيت برنامج التشفير غير المجاني القليل من المهارات الإضافية والجهد والوقت (راجع الملاحظات الخاصة بنظام التشغيل الخاص بك أعلاه). عليك أن تقرر ما إذا كان الأمر يستحق الجهد الإضافي للحصول على جودة أفضل قليلاً. إذا كنت تستخدم صورة عامل الإرساء، فيجب أن تحصل على أفضل جودة افتراضيًا.
إذا كنت تستخدم معدلات بت منخفضة جدًا (<= 32 كيلو)، فيمكنك أيضًا استخدام ملفات تعريف عالية الكفاءة لزيادة تحسين جودة الصوت (على سبيل المثال --audio-profile=aac_he
للأحادية). لسوء الحظ، يؤدي تطبيق ffmpeg
عالي الكفاءة إلى إنتاج ملفات صوتية غير متوافقة مع العديد من المشغلات (بما في ذلك iTunes). لإنتاج ملفات عالية الكفاءة، متوافقة مع معظم المشغلات الشائعة على الأقل، ستحتاج إلى تثبيت fdkaac
في الوقت الحالي.
مزيد من التفاصيل:
هل تعتقد أن هناك مشكلة في m4b-tool
؟ قم أولاً بإلقاء نظرة على المشكلات المعروفة أدناه. إذا لم يساعد ذلك، يرجى تقديم المعلومات التالية عند إضافة مشكلة:
m4b-tool merge my-audio-book/ --output-file merged.m4b
the resulting file merged.m4b is only 5kb
مثال:
Title: m4b-tool does not embed covers
If i run m4b-tool with a folder containing a cover.png, it does not embed the cover and shows an error message.
OS: Ubuntu 16.04 LTS
Command: `m4b-tool merge my-audio-book/ ---output-file merged.m4b`
Error: Cannot embed cover, cover is not a valid image file
Attached files: cover.png
إذا كنت تحصل على استثناءات PHP، فهذه مشكلة في تكوين PHP في معظم الحالات. إذا لم تكن على دراية بتكوين PHP، فيمكنك اتباع هذه الإرشادات لإصلاح بعض المشكلات المعروفة:
[Exception]
charset windows-1252 is not supported - use one of these instead: utf-8
يحدث هذا غالبًا على نظام التشغيل Windows، نظرًا لأن ملحق mbstring
- يتم استخدامه لتحويل مجموعات الأحرف داخليًا، بحيث يتم دعم الأحرف الخاصة مثل علامات تغير الصوت الألمانية على كل نظام أساسي. لإصلاح ذلك، تحتاج إلى تمكين ملحق mbstring:
قم بتشغيل php --ini
في سطر الأوامر:
C:>php --ini
...
Loaded Configuration File: C:Program Filesphpphp.ini
افتح ملف التكوين (على سبيل المثال C:Program Filesphpphp.ini
) في محرر النصوص وابحث عن extension=
. على نظام التشغيل Windows، يجب أن يكون هناك عنصر مثل هذا:
;extension=php_mbstring.dll
إزالة ;
لتمكين التمديد:
extension=php_mbstring.dll
الآن يجب أن يعمل كل شيء كما هو متوقع.
تحتوي القائمة التالية على جميع الأوامر الممكنة بما في ذلك merge
split
chapters
مصحوبة بمرجع المعلمات المتوفرة في كل أمر.
باستخدام m4b-tool
يمكنك دمج مجموعة من الملفات الصوتية في ملف كتاب صوتي واحد m4b.
m4b-tool merge "data/my-audio-book" --output-file="data/my-audio-book.m4b"
يؤدي هذا إلى دمج جميع الملفات الصوتية الموجودة في المجلد data/my-audio-book
في my-audio-book.m4b
، باستخدام عنوان العلامة لكل ملف لإنشاء الفصول.
إذا كان هناك ملف data/my-audio-book/cover.jpg
(أو cover.jpeg
أو cover.png
) ، فسيتم استخدامه كغلاف لملف m4b الناتج.
ملاحظة: إذا كنت تستخدم ملفات صوتية غير مميزة، فيمكنك توفير معرف musicbrainz للحصول على أسماء الفصول الصحيحة، راجع فصل الأوامر لمزيد من المعلومات.
بالنسبة لجميع الخيارات، راجع m4b-tool merge --help
:
Description:
Merges a set of files to one single file
Usage:
merge [options] [--] <input> [<more-input-files>...]
Arguments:
input Input file or folder
more-input-files Other Input files or folders
Options:
--logfile[=LOGFILE] file to log all output [default: ""]
--debug enable debug mode - sets verbosity to debug, logfile to m4b-tool.log and temporary encoded files are not deleted
-f, --force force overwrite of existing files
--no-cache clear cache completely before doing anything
--ffmpeg-threads[=FFMPEG-THREADS] specify -threads parameter for ffmpeg - you should also consider --jobs when merge is used [default: ""]
--platform-charset[=PLATFORM-CHARSET] Convert from this filesystem charset to utf-8, when tagging files (e.g. Windows-1252, mainly used on Windows Systems) [default: ""]
--ffmpeg-param[=FFMPEG-PARAM] Add argument to every ffmpeg call, append after all other ffmpeg parameters (e.g. --ffmpeg-param="-max_muxing_queue_size" --ffmpeg-param="1000" for ffmpeg [...] -max_muxing_queue_size 1000) (multiple values allowed)
-a, --silence-min-length[=SILENCE-MIN-LENGTH] silence minimum length in milliseconds [default: 1750]
-b, --silence-max-length[=SILENCE-MAX-LENGTH] silence maximum length in milliseconds [default: 0]
--max-chapter-length[=MAX-CHAPTER-LENGTH] maximum chapter length in seconds - its also possible to provide a desired chapter length in form of 300,900 where 300 is desired and 900 is max - if the max chapter length is exceeded, the chapter is placed on the first silence between desired and max chapter length [default: "0"]
--name[=NAME] custom name, otherwise the existing metadata will be used
--sortname[=SORTNAME] custom sortname, that is used only for sorting
--album[=ALBUM] custom album, otherwise the existing metadata for name will be used
--sortalbum[=SORTALBUM] custom sortalbum, that is used only for sorting
--artist[=ARTIST] custom artist, otherwise the existing metadata will be used
--sortartist[=SORTARTIST] custom sortartist, that is used only for sorting
--genre[=GENRE] custom genre, otherwise the existing metadata will be used
--writer[=WRITER] custom writer, otherwise the existing metadata will be used
--albumartist[=ALBUMARTIST] custom albumartist, otherwise the existing metadata will be used
--year[=YEAR] custom year, otherwise the existing metadata will be used
--description[=DESCRIPTION] custom short description, otherwise the existing metadata will be used
--longdesc[=LONGDESC] custom long description, otherwise the existing metadata will be used
--comment[=COMMENT] custom comment, otherwise the existing metadata will be used
--copyright[=COPYRIGHT] custom copyright, otherwise the existing metadata will be used
--encoded-by[=ENCODED-BY] custom encoded-by, otherwise the existing metadata will be used
--cover[=COVER] custom cover, otherwise the existing metadata will be used
--skip-cover skip extracting and embedding covers
--series[=SERIES] custom series, this pseudo tag will be used to auto create sort order (e.g. Harry Potter or The Kingkiller Chronicles)
--series-part[=SERIES-PART] custom series part, this pseudo tag will be used to auto create sort order (e.g. 1 or 2.5)
--audio-format[=AUDIO-FORMAT] output format, that ffmpeg will use to create files [default: "m4b"]
--audio-channels[=AUDIO-CHANNELS] audio channels, e.g. 1, 2 [default: ""]
--audio-bitrate[=AUDIO-BITRATE] audio bitrate, e.g. 64k, 128k, ... [default: ""]
--audio-samplerate[=AUDIO-SAMPLERATE] audio samplerate, e.g. 22050, 44100, ... [default: ""]
--audio-codec[=AUDIO-CODEC] audio codec, e.g. libmp3lame, aac, ... [default: ""]
--audio-profile[=AUDIO-PROFILE] audio profile, when using extra low bitrate - valid values: aac_he, aac_he_v2 [default: ""]
--adjust-for-ipod auto adjust bitrate and sampling rate for ipod, if track is too long (may result in low audio quality)
--fix-mime-type try to fix MIME-type (e.g. from video/mp4 to audio/mp4) - this is needed for some players to prevent an empty video window
-o, --output-file=OUTPUT-FILE output file
--include-extensions[=INCLUDE-EXTENSIONS] comma separated list of file extensions to include (others are skipped) [default: "aac,alac,flac,m4a,m4b,mp3,oga,ogg,wav,wma,mp4"]
-m, --musicbrainz-id=MUSICBRAINZ-ID musicbrainz id so load chapters from
--no-conversion skip conversion (destination file uses same encoding as source - all encoding specific options will be ignored)
--batch-pattern[=BATCH-PATTERN] multiple batch patterns that can be used to merge all audio books in a directory matching the given patterns (e.g. %a/%t for author/title) - parameter --output-file must be a directory (multiple values allowed)
--dry-run perform a dry run without converting all the files in batch mode (requires --batch-pattern)
--jobs[=JOBS] Specifies the number of jobs (commands) to run simultaneously [default: 1]
--use-filenames-as-chapters Use filenames for chapter titles instead of tag contents
--no-chapter-reindexing Do not perform any reindexing for index-only chapter names (by default m4b-tool will try to detect index-only chapters like Chapter 1, Chapter 2 and reindex it with its numbers only)
-h, --help Display this help message
-q, --quiet Do not output any message
-V, --version Display this application version
--ansi Force ANSI output
--no-ansi Disable ANSI output
-n, --no-interaction Do not ask any interactive question
-v|vv|vvv, --verbose Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--batch-pattern
إذا كنت تستخدم المعلمة --batch-pattern
، فسيتم دعم العناصر النائبة التالية
title
/ name
: %n
sort_name
: %N
album
: %m
,sort_album
: %M
,artist
: %a
,sort_artist
: %A
,genre
: %g
,writer
: %w
,album_artist
: %t
,year
: %y
،description
: %d
,long_description
: %D
,comment
: %c
،copyright
: %C
،encoded_by
: %e
,group(ing)
: %G
,purchase_date
: %U
,series
: %s
,series_part
: %p
, يمكن استخدام m4b-tool
لتقسيم ملف m4b
واحد إلى ملف لكل فصل أو ألبوم مشفر بصيغة flac
إلى مسارات فردية عبر ورقة التلميح.
m4b-tool split --audio-format mp3 --audio-bitrate 96k --audio-channels 1 --audio-samplerate 22050 "data/my-audio-book.m4b"
يؤدي هذا إلى تقسيم الملف data/my-audio-book.m4b into
ملف mp3 لكل فصل، وكتابة الملفات في data/my-audio-book_splitted/
.
إذا كنت ترغب في تقسيم ملف flac
يحتوي على مسارات متعددة، فستكون هناك حاجة إلى ورقة إشارة تحتوي على اسم الملف الدقيق لملف flac
(يتطلب my-album.flac
my-album.cue
):
# my-album.cue is automatically found and used for splitting
m4b-tool split --audio-format=mp3 --audio-bitrate=192k --audio-channels=2 --audio-samplerate=48000 "data/my-album.flac"
بالنسبة لجميع الخيارات، راجع m4b-tool split --help
:
Description:
Splits an m4b file into parts
Usage:
split [options] [--] <input>
Arguments:
input Input file or folder
Options:
--logfile[=LOGFILE] file to dump all output [default: ""]
--debug enable debug mode - sets verbosity to debug, logfile to m4b-tool.log and temporary files are not deleted
-f, --force force overwrite of existing files
--no-cache do not use cached values and clear cache completely
--ffmpeg-threads[=FFMPEG-THREADS] specify -threads parameter for ffmpeg [default: ""]
--platform-charset[=PLATFORM-CHARSET] Convert from this filesystem charset to utf-8, when tagging files (e.g. Windows-1252, mainly used on Windows Systems) [default: ""]
--ffmpeg-param[=FFMPEG-PARAM] Add argument to every ffmpeg call, append after all other ffmpeg parameters (e.g. --ffmpeg-param="-max_muxing_queue_size" --ffmpeg-param="1000" for ffmpeg [...] -max_muxing_queue_size 1000) (multiple values allowed)
-a, --silence-min-length[=SILENCE-MIN-LENGTH] silence minimum length in milliseconds [default: 1750]
-b, --silence-max-length[=SILENCE-MAX-LENGTH] silence maximum length in milliseconds [default: 0]
--max-chapter-length[=MAX-CHAPTER-LENGTH] maximum chapter length in seconds - its also possible to provide a desired chapter length in form of 300,900 where 300 is desired and 900 is max - if the max chapter length is exceeded, the chapter is placed on the first silence between desired and max chapter length [default: "0"]
--audio-format[=AUDIO-FORMAT] output format, that ffmpeg will use to create files [default: "m4b"]
--audio-channels[=AUDIO-CHANNELS] audio channels, e.g. 1, 2 [default: ""]
--audio-bitrate[=AUDIO-BITRATE] audio bitrate, e.g. 64k, 128k, ... [default: ""]
--audio-samplerate[=AUDIO-SAMPLERATE] audio samplerate, e.g. 22050, 44100, ... [default: ""]
--audio-codec[=AUDIO-CODEC] audio codec, e.g. libmp3lame, aac, ... [default: ""]
--audio-profile[=AUDIO-PROFILE] audio profile, when using extra low bitrate - valid values (mono, stereo): aac_he, aac_he_v2 [default: ""]
--adjust-for-ipod auto adjust bitrate and sampling rate for ipod, if track is to long (may lead to poor quality)
--name[=NAME] provide a custom audiobook name, otherwise the existing metadata will be used [default: ""]
--sortname[=SORTNAME] provide a custom audiobook name, that is used only for sorting purposes [default: ""]
--album[=ALBUM] provide a custom audiobook album, otherwise the existing metadata for name will be used [default: ""]
--sortalbum[=SORTALBUM] provide a custom audiobook album, that is used only for sorting purposes [default: ""]
--artist[=ARTIST]