З мого власного досвіду, якщо ви хочете абсолютно не втрачати якість, - без втрат - це те, що ви шукаєте.
Не впевнений, avconv
але команда, яку ви ввели, виглядає ідентично тому, що я роблю FFmpeg
. У FFmpeg
ви можете передати параметр , як це:
ffmpeg -i INPUT.mkv -c:v libx265 -preset ultrafast -x265-params lossless=1 OUTPUT.mkv
Більшість x265
комутаторів (опції без значення) можна вказати так (крім тих, що мають лише CLI, вони використовуються лише з x265
двійковими безпосередньо).
Якщо це не вдається, я хотів би поділитися своїм досвідом x265
кодування. Для більшості відео (будь то WMV, MPEG або AVC / H.264), які я використовую crf=23
. x265
визначає решту параметрів і зазвичай це робить досить хорошу роботу.
Однак часто, перш ніж я зобов’язуюся перекодувати відео в повному обсязі, я перевіряю свої налаштування, перетворюючи невелику частину відповідного відео. Ось приклад, припустимо, mkv-файл із потоком 0 - відео, потік 1 - аудіо DTS, а потік 2 - підзаголовком:
ffmpeg -hide_banner \
-ss 0 \
-i "INPUT.mkv" \
-attach "COVER.jpg" \
-map_metadata 0 \
-map_chapters 0 \
-metadata title="TITLE" \
-map 0:0 -metadata:s:v:0 language=eng \
-map 0:1 -metadata:s:a:0 language=eng -metadata:s:a:0 title="Surround 5.1 (DTS)" \
-map 0:2 -metadata:s:s:0 language=eng -metadata:s:s:0 title="English" \
-metadata:s:t:0 filename="Cover.jpg" -metadata:s:t:0 mimetype="image/jpeg" \
-c:v libx265 -preset ultrafast -x265-params \
crf=22:qcomp=0.8:aq-mode=1:aq_strength=1.0:qg-size=16:psy-rd=0.7:psy-rdoq=5.0:rdoq-level=1:merange=44 \
-c:a copy \
-c:s copy \
-t 120 \
"OUTPUT.HEVC.DTS.Sample.mkv"
Зауважте, що сигнальна лінія зворотних нахилів переривається в довгій команді, я роблю це, щоб допомогти мені відслідковувати різні біти складного вводу CLI. Перш ніж я пояснюю це по черзі, частина, в якій ви конвертуєте лише невелику частину відео, - це другий рядок, а другий останній рядок: -ss 0
означає шукати 0 секунди, перш ніж розпочне декодування вводу, і -t 120
означає припинити запис на вихід через 120 секунд. Ви також можете використовувати hh: mm: ss або hh: mm: формати часу ss.sss.
Тепер по черзі:
-hide_banner
не дозволяє FFmpeg
відображати інформацію про збірку при запуску. Мені просто не хочеться бачити це, коли прокручую консоль вгору;
-ss 0
прагне 0 секунди до початку декодування вводу. Зауважте, що якщо цей параметр задано після вхідного файлу та перед вихідним файлом, він стає параметром виводу та повідомляє ffmpeg
розшифрувати та проігнорувати вхід до x секунд, а потім почніть записувати на вихід. Як варіант введення, він менш точний (оскільки пошук не є точним у більшості форматів контейнерів), але займає майже не час. Як вихідний варіант, він є дуже точним, але потребує значної кількості часу, щоб розшифрувати весь потік до зазначеного часу, і для цілей тестування ви не хочете витрачати час;
-i "INPUT.mkv"
: Вкажіть вхідний файл;
-attach "COVER.jpg"
: До результату додайте обкладинку (мініатюрну картинку, плакат, що завгодно). Образ обкладинки зазвичай відображається у файлах пошуку;
-map_metadata 0
: Скопіюйте будь-які метадані з вводу 0, який у прикладі є лише входом;
-map_chapters 0
: Скопіюйте інформацію про главу (за наявності) з вводу 0;
-metadata title="TITLE"
: Встановити назву відео;
-map 0:0 ...
: Потік карти 0 на вході 0, це означає, що ми хочемо, щоб перший потік з входу був записаний на вихід. Так як цей потік є відеопотік, це перший відео потік в виході , отже , потік специфікатор :s:v:0
. Встановіть її мовний тег на англійську;
-map 0:1 ...
: Аналогічно до рядка 8, картографуйте другий потік (аудіо DTS) та встановіть його мову та назву (для легшої ідентифікації при виборі з гравців);
-map 0:2 ...
: Подібно до рядка 9, за винятком цього потоку є підзаголовком;
-metadata:s:t:0 ...
: Встановити метадані для обкладинки. Це потрібно для формату контейнерів mkv;
-c:v libx265 ...
: Параметри відео кодеків. Це так довго, що я розбив його на два рядки. Цей параметр хороший для високоякісного бларрейного відео (1080p) з мінімальним нахилом у градієнті (який х265 смокче). Це, швидше за все, надлишок DVD-дисків, телевізійних шоу та відео-телефонів. Цей параметр здебільшого вкрадений з цієї публікації Doom9 ;
crf=22:...
: Продовження параметрів відеокодеку. Дивіться вищезгаданий пост на форумі;
-c:a copy
: Копіювання аудіо;
-c:s copy
: Копіювання субтитрів;
-t 120
: Припиніть записувати на висновок через 120 секунд, що дає нам 2-хвилинний кліп для попереднього перегляду якості транкодування;
"OUTPUT.HEVC.DTS.Sample.mkv"
: Назва вихідного файлу. Я позначаю назви своїх файлів відеокодеком та основним звуковим кодеком.
Вау. Це моя перша відповідь, тому якщо я щось пропустив, залиште коментар. Я не фахівець з виробництва відео, я просто хлопець, який лінивий дивитись фільм, вставляючи диск у програвач.
PS. Можливо, це питання належить десь іншому, оскільки воно не дуже пов’язане з Unix та Linux.
--lossless
насправді може збільшити файл, якщо він декодує раніше втрачений кодек, а потім пояснює те, що він декодував без втрат. Якість залишиться точно такою ж, як і вхідна.