З мого власного досвіду, якщо ви хочете абсолютно не втрачати якість, - без втрат - це те, що ви шукаєте.
Не впевнений, 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насправді може збільшити файл, якщо він декодує раніше втрачений кодек, а потім пояснює те, що він декодував без втрат. Якість залишиться точно такою ж, як і вхідна.