|
elnino243
Стаж: 16 лет 1 месяц Сообщений: 218
|
elnino243 ·
01-Ноя-10 17:47
(14 лет назад)
Я часто вижу сообщения из серии первый проход CRF, а потом с постоянным битрейтом.
Объясните сирому. Как может быть качество в таком варианте лучше, чем CRF?
У меня есть видео у него средний битрейт 1200, но в нем есть 2 пика по 7000kbps, если я буду проходить ABR, но битрейт на этих пиках будет 1200. А это почти в 6 раз хуже, источника. Ну и зачем мне это делать?
|
|
TurboPascal7
Стаж: 15 лет 7 месяцев Сообщений: 668
|
TurboPascal7 ·
01-Ноя-10 17:56
(спустя 9 мин., ред. 01-Ноя-10 17:56)
elnino243
Abr - это average (средний), а не постоянный битрейт. Он не исключает пиков в 7мегабит при средних 1200кбпс. Вас обманули.
А качество может быть лучше, а может и не быть, тут уже на любителя и конкретный случай. В анимешном случае 2хпроход означает чуть лучшую статику и чуть худшую динамику в сравнении с crf.
|
|
elnino243
Стаж: 16 лет 1 месяц Сообщений: 218
|
elnino243 ·
01-Ноя-10 18:07
(спустя 10 мин.)
А значит я в терминах попутался, спс.
|
|
Stanawa2
Стаж: 16 лет 7 месяцев Сообщений: 10188
|
Stanawa2 ·
01-Ноя-10 19:00
(спустя 53 мин.)
TurboPascal7
А мне вы помочь не могли бы https://rutr.life/forum/viewtopic.php?p=39401323#39401323
если это возможно.
В скриптах Вы кажется разбираетесь.
|
|
unreal666
Стаж: 16 лет 10 месяцев Сообщений: 1713
|
unreal666 ·
01-Ноя-10 19:48
(спустя 48 мин., ред. 01-Ноя-10 19:48)
Stanawa2
А что вообще делает этот nice?
Если указывате запуск с каким-либо приоритетом, то разве недостаточно cmd'шной команды START? ALL
Вообще есть прирост в скорости кодирования при использовании связки avs2yuv.exe+x264_64 по сравнению с просто x264 (x32)?
|
|
Stanawa2
Стаж: 16 лет 7 месяцев Сообщений: 10188
|
Stanawa2 ·
01-Ноя-10 20:32
(спустя 43 мин.)
unreal666
Да, не увидел start /wait /low в посте shellgen.
Но просьба отделить параметры энкода от конфигурационной части скрипта всё равно остается.
|
|
unreal666
Стаж: 16 лет 10 месяцев Сообщений: 1713
|
unreal666 ·
01-Ноя-10 21:00
(спустя 27 мин.)
Stanawa2
Исходя из твоего вопроса, непонятно, что ты уже сделал и что тебе надо.
Что у тебя конкретно содержит encode.cmd?
И зачем "чтоб подхватывалась архитектура проца, нужный х264(32 или 64 битный) и битность системы", если в самом xcrfmulti.cmd это есть.
|
|
Stanawa2
Стаж: 16 лет 7 месяцев Сообщений: 10188
|
Stanawa2 ·
01-Ноя-10 21:18
(спустя 18 мин., ред. 01-Ноя-10 21:18)
unreal666
unreal666 писал(а):
Что у тебя конкретно содержит encode.cmd?
параметры энкода
перефразирую вопрос.
Так вот нельзя ли разделить?
Изменить файл xcrfmulti.cmd так, чтоб подхватывалась архитектура проца, нужный х264(32 или 64 битный) и битность системы (что он и делает), возможно даже "пауза" и он запускал файл конфигурации настроек и самого энкода encode.cmd
Ведь файл конфигурации xcrfmulti.cmd (измененный) трогать больше не надо будет, а вот параметры энкода надо в зависимости от каждого видео ряда, и лучше если они отдельно.
Так понятно? То есть отделить конкурирование системы от самих настроек х264, править ведь всегда надо только настройки.
|
|
unreal666
Стаж: 16 лет 10 месяцев Сообщений: 1713
|
unreal666 ·
01-Ноя-10 21:48
(спустя 29 мин., ред. 01-Ноя-10 21:51)
Все равно мало понятно Т.к. непонятно, что тебе надо кодировать: кол-во avs-файлов, кол-во набора параметров и как ты их передаешь в командный файл, что у тебя считается "файлом конфигурации".
Объясни подробно.
По нормальному, как раз сам xcrfmulti.cmd должен быть в конце цепочки этих cmd, т.к. он как раз и если он определяет какой тип проца, то в нем же и должно быть ветвление для запуска соответствующего x264.
А конкретней. Секцию от "rem ========== CONFIG =============" до "rem ======== END CONFIG ===========" из xcrfmulti.cmd или что-то другое?
|
|
Stanawa2
Стаж: 16 лет 7 месяцев Сообщений: 10188
|
Stanawa2 ·
01-Ноя-10 21:51
(спустя 3 мин.)
unreal666
перестаньте спрашивать пожалуйста, и зафлуживать тему.
Мне хотелось бы ответ, а не вопросы.
|
|
MaLLIeHbKa
Стаж: 17 лет 11 месяцев Сообщений: 3673
|
MaLLIeHbKa ·
01-Ноя-10 21:54
(спустя 3 мин.)
Stanawa2 писал(а):
Мне хотелось бы ответ, а не вопросы.
42 (:
|
|
arkahan
Стаж: 16 лет 11 месяцев Сообщений: 978
|
arkahan ·
01-Ноя-10 22:06
(спустя 12 мин.)
TurboPascal7 писал(а):
Потому что рейтфактор и квант - разные вещи.
Как всё-таки с помощью авинаптика (рейтфактора) адекватно (правильно) судить о состоянии потока? Можно ли хоть как-то соотнести этот самый рейтфактор и квант?
|
|
TurboPascal7
Стаж: 15 лет 7 месяцев Сообщений: 668
|
TurboPascal7 ·
01-Ноя-10 23:24
(спустя 1 час 18 мин.)
arkahan писал(а):
Как всё-таки с помощью авинаптика (рейтфактора) адекватно (правильно) судить о состоянии потока? Можно ли хоть как-то соотнести этот самый рейтфактор и квант?
А как соотносится параметр --crf и полученные в итоге кванты?
Расценивайте значение среднего рейтфактора на P кадрах, которое показывает вам авинаптик, как примерное значение crf, с которым можно получить примерно такой же поток. Довольно грубая аппроксимация, но в целом работает
|
|
metafizik
Стаж: 14 лет 4 месяца Сообщений: 55
|
metafizik ·
10-Ноя-10 21:54
(спустя 8 дней, ред. 10-Ноя-10 21:54)
Stanawa2
Если вдруг кому-то здесь это может быть полезно, то вот вариант более продвинутого .cmd скрипта для кодирования в консоли. Если просто запустить muxmkv.cmd то выдаётся help. http://f.rodon.org/m2/muxmkv.rar
http://f.rodon.org/m2/muxmkv-external-exe.7z (кроме x264.exe и mkvmerge.exe)
Поддерживается перекодирование аудио в AAC, многопроходное кодирование с запоминанием логов всех предшествующих проходов в архивах, кодирование через промежуточный lossless видеофайл, автоматическая выборка из общей очереди задач для сразу нескольких одновременно исполняемых заданий, суффиксы для выполнения нескольких кодировок с одного источника с разными опциями x264, и многое другое.
Очередь заданий представляет .cmd скрипт (его можно и нужно менять во время исполнения заданий) со строчками вот такого типа:
:Restart
cd /D "C:\InputAvisynthFilesDir"
set MUXMKV_OPTIONS=--aacbr 128000 --make std ....опции x264 для всех последующих call...
call muxmkv ....опции x264 для этого call... "Video Episode 01.avs" && goto Restart
call muxmkv ....опции x264 для этого call... "Video Episode 02.avs" && goto Restart
...
call muxmkv ....опции x264 для этого call... "Video Episode 10.avs" && goto Restart
Если эту самую очередь запустить несколько раз, то параллельно будут кодироваться несколько заданий. По умолчанию используется --threads 1 и поэтому, если одновременно задание предполагается выполнять только одно, то надо указать опцию --threads auto для того, чтобы использовалось то значение по умолчанию, которое выбирает x264.
Чтобы использовать промежуточный lossless видеофайл (т.е. не выполнять avisynth скрипт несколько раз, в тех случаях когда это 1) нужно и 2) накладно по времени) достаточно добавить опцию --cache
За состоянием директории с временными файлами и директории с закодированными файлами надо следить, т.к. логика работы зависит от существования или несуществования некоторых файлов. В частности, задания будут пропускаться, если соответствующий файл в директории результатов уже существует.
|
|
Stanawa2
Стаж: 16 лет 7 месяцев Сообщений: 10188
|
Stanawa2 ·
10-Ноя-10 23:59
(спустя 2 часа 5 мин.)
metafizik
Это вы написали скрипт?
Я почему спрашиваю, потому что настолько в скриптописании не разбираюсь, разбираюсь только на уровне новичка.
Тем не менее, у меня всё до безобразия просто и работает хорошо. Но проблема в том, что только с процами от Intel и отсутствует автоматизм. Больше всего времени теряется на тесты, вот их бы хотелось автоматизировать, но не усложняя файл с параметрами энкода. Потому, что нужен для новичков.
Вообщем, если можете выслушать и помочь, то напишу всё более подробно.
в папке присутствуют:
проиндексированный исходник, avs-скрипт, х264, утилита nice.exe и два файла - назовем их Start.cmd и encode.cmd
Start.cmd - ничего особенного не делает, только подгружает nice.exe и запускает encode.cmd
скрытый текст
Start.cmd писал(а):
@echo off
nice encode.cmd
exit
скрытый текст
encode.cmd писал(а):
@echo off
SET X264=x264.exe
rem Set desired bitrate
SET BITRATE=сюда пишем битрейт
SET TUNE=film
rem TUNE: animation, grain
SET BFRAMES=9
SET REFFRAMES=9
@date /t
@time /t
echo First pass analysis...
for %%m in (*.avs) do %X264% -p 1 --stats "%%~nm.stats" --preset veryslow --crf19 --tune %TUNE% -b %BFRAMES% -r %REFFRAMES% --direct auto -f -2,-1 --no-mbtree --aq-strength 1.0 --subme 6 --merange 16 --me hex --psy-rd 1.0:0.0 --colormatrix "bt709" --threads auto --thread-input --slow-firstpass --output NUL "%%m" 2>> "%%~nm.pass1.log.txt"
@date /t
@time /t
echo first pass complete.
echo Encoding final pass...
for %%m in (*.avs) do %X264% -B %BITRATE% -p 2 --stats "%%~nm.stats" --preset veryslow --tune %TUNE% --psy-rd 1.0:0.0 --b-adapt 2 -b %BFRAMES% -r %REFFRAMES% --direct auto -f -2,-1 --me umh --merange 28 -m 10 -t 2 --qcomp 0.65 --aq-mode 2 --aq-strength 1.0 --colormatrix "bt709" --threads auto --thread-input --output "%%~nm.final.mkv" "%%m" 2>> "%%~nm.pass2.log.txt"
echo done.
@date /t
@time /t
@pause
В параметрах скрипта encode.cmd могу вызывать любые нужные мне изменения при тестах с выборкой. Могу часто используемые параметры вывести в переменные.
И всё бы хорошо, но
1. Это не работает на процах AMD, точнее кодирование идет, но рвёт кадры
2. после каждого тестового прохода надо править параметры в ручную и вновь запускать Start.cmd естественно перенеся логи и тестовый кусок в другую папку, то есть нет автоматизации, чтоб запускался тестовый энкод с разными параметрами, допустим в папке могли бы быть несколько файлов 1encode.cmd, 2encode.cmd и т.д., запустил, все сделались, пришел сравнил, оставил лучший, убрал выборку и вперед.
3. При энкоде уже целого видео нет паузы (это правда особо не важно, но всё же)
4. Вместе с тем, надо простоту, чтоб легко было пояснить начинающему.
Надеюсь понятно написал, если есть фразеологизмы или ошибки, прошу простить, я не русский.
|
|
no404error
Стаж: 15 лет 3 месяца Сообщений: 135
|
no404error ·
11-Ноя-10 00:14
(спустя 15 мин., ред. 11-Ноя-10 00:14)
Только не поймите меня неправильно
Не кажется ли вам что шапочку следует разделить на простую версию и расширенную? Ведь если "обобщить" все советы, то четко видно, что, за исключением редких случаев, "новичка" подталкивают к простому выставлению --preset slow А для большинства "редких" случаев --preset veryslow.
|
|
metafizik
Стаж: 14 лет 4 месяца Сообщений: 55
|
metafizik ·
11-Ноя-10 00:35
(спустя 20 мин., ред. 11-Ноя-10 00:35)
Stanawa2
Да, скрипт мой. Тестовые задания в любом количестве можно прописать прежде выполнения их всех и пополнять можно во время кодирования. Вот интересно что это значит "не работает на процах AMD, точнее кодирование идет, но рвёт кадры"? Как-то приходилось встречать читать похожую фразу на форумах, только там утверждалось, что "рвут кадры" Intel Pentium 4 c Hyper-threading, а на AMD всё прекрасно кодируется (не знаю, на какой именно модели, и хотя бы многоядерной ли).
|
|
Stanawa2
Стаж: 16 лет 7 месяцев Сообщений: 10188
|
Stanawa2 ·
11-Ноя-10 00:41
(спустя 6 мин.)
metafizik писал(а):
а на AMD всё прекрасно кодируется (не знаю, на какой именно модели, и хотя бы многоядерной ли).
модель обычная Процессор AMD Athlon 64 X2 220 (может и слабенький?), оперативы 2ГБ, система XP SP3 32 бит, видео GF8800Gt. Вот на такой системе пробовал.
На энкод подавал и с помощь ffvideosource() и с помощью видеокарты DGmultisourse()
Рвет в разных местах, где вздумается, смотрел загрузку проца, уходил в 100%, на что грешить не знаю. Вот и заподозрил, что nice.exe не работает с AMD процами, то есть не держит проц в 96%, как с Intel.
|
|
metafizik
Стаж: 14 лет 4 месяца Сообщений: 55
|
metafizik ·
11-Ноя-10 00:55
(спустя 13 мин., ред. 11-Ноя-10 00:55)
Stanawa2 А если попробовать кодировать с --threads 1 то будет "рвать кадры" или не будет? Как вообще понимать выражение "рвёт кадры", как это выглядит визуально? Никогда с подобным сталкиваться не приходилось. Вообще гораздо более вероятно, что кадры рвутся не из-за x264.exe, а из-за некорректной работы декодера.
|
|
Stanawa2
Стаж: 16 лет 7 месяцев Сообщений: 10188
|
Stanawa2 ·
11-Ноя-10 01:46
(спустя 50 мин., ред. 11-Ноя-10 01:46)
metafizik
У меня сейчас комп тот недоступен, не могу будить близких.
Но на словах, как могу поясню - к примеру кусочек изображения вырван и находится в другом, не положенном месте, или часть, только часть а не весь кадр, изображения в квадратах разной величины.
ps
metafizik писал(а):
А если попробовать кодировать с --threads 1 то будет "рвать кадры" или не будет?
Хорошо, завтра попробую на одном ядре, хоть это и не комильфо.
Со вторым вопросом помогите пожалуйста, можно ли автоматизировать немножечко скрипт старта Start.cmd, чтоб он запускал несколько простых файлов-скриптов 1encode.cmd, 2encode.cmd и т.д. с разными параметрами энкода?
Правда изначальная идея была в том, чтоб в нем было всё конфигурирование системы и как бы это сказать, окружения енкода, определение битности системы, архитектуры проца, старт с режимом -low, чтоб его больше не трогать.
а все параметры для х264 отдельно, ибо их только и приходится менять.
|
|
metafizik
Стаж: 14 лет 4 месяца Сообщений: 55
|
metafizik ·
11-Ноя-10 02:17
(спустя 31 мин., ред. 11-Ноя-10 02:17)
Stanawa2
Лучше в первую очередь попробовать с надёжным декодером, выход которого гарантированно не зависел бы от загрузки процессора. Например ffdshow libavcodec, а в качестве источника видео - какой-нибудь H264/AVC .mkv файл. Что касается --threads 1, то его надо ещё дополнить параметром --thread-input. Что касается скриптов, то тут помощь по сети малореальна, слишком уж много и долго писать потребовалось бы. Посмотрите, как это у других делается - вот самое очевидное решение.
|
|
poiuytr5555
Стаж: 14 лет 8 месяцев Сообщений: 23
|
poiuytr5555 ·
12-Ноя-10 03:19
(спустя 1 день 1 час)
Вывод информации о кадрах через ffdshow: В ffdshow задаем кодек вывода ffmpeg-mt или libavcodec, потом идем на стройку OSD и помечаем все, что хотим вывести.
Сделал, пометил. Потом открываем скодированное видео в AvsP, жмем правой кнопкой на иконке ffdshow video в трее и помечаем галкой OSD
AvsP категорически не хочет отображать OSD информацию.
Значок ffdshow в трее появляется только при запуске МРС и только в нем идет отображение информации, при открытии файла в AvsP никаких значков нет.
Перепробовано уже все. Русских букв в названии нет, AviSynth стоит. ПС: точно так же выводятся данные по кадрам и для других кодеков, главное, чтобы видео декодировалось средствами ffdshow, т.е. в случае с, например, XviD в контейнере *.avi вывод потока надо осуществлять не через AVISource(), а через DirectShowSource()
Может в этом дело ( файл XviD)? Тогда как сделать что-бы "вывод потока надо осуществлять не через AVISource(), а через DirectShowSource()". Что-то в скобочках видимо должно было быть написано?
|
|
Skazhutin
Стаж: 17 лет 4 месяца Сообщений: 6701
|
Skazhutin ·
12-Ноя-10 08:38
(спустя 5 часов)
poiuytr5555 писал(а):
Тогда как сделать что-бы "вывод потока надо осуществлять не через AVISource(), а через DirectShowSource()"
DirectShowSource("video.avi")
Не проще ли открывать через FFVideoSource("video.avi")?
Вроде проще, не надо галочки ставить и включать в трее каждый раз OSD
Цитата:
FFVideoSource("video.avi")
scriptclip("""sres = ffsar > 1 ? " ("+string(ffsar)+") @ "+string(round(width()*ffsar))+"x"+string(height()):\
ffsar < 1 ? " ("+string(ffsar)+") @ "+string(width())+"x"+string(round(height()*(1/ffsar))) : ""
subtitle("resolution: "+string(width())+"x"+string(height())+sres+"\n"+\
"frame # "+string(current_frame)+" / type: "+chr(ffpict_type),text_color=$F8F8FF,halo_color=$66000000,lsp=0)"""\
,after_frame=true)
|
|
zagg-zagg
Стаж: 15 лет 10 месяцев Сообщений: 1000
|
zagg-zagg ·
13-Ноя-10 16:02
(спустя 1 день 7 часов)
такой вопрос: есть HDTV состоящее из 3-х кусков .mpg - уже имел с ними дело и раньше спокойно собирал в одно целое TSMuxer'ом, либо при помощи MPEG2 Cut - но тут гад не поддается. выдает кучу ошибок и продолжительность уменьшается на пару минут. как уже только не пробовал. но вот что интересно: если пропустить эти файлы через DGIndex, то рип делается нормальной продолжительности и без косяков. это и натолкнуло меня на мысль сделать 1080p в x264. оригинал MPEG2 и потому лелеется надежда, что в x264 будет весить меньше, но при этом хотелось бы сделать рип без потерь, то есть lossless. возможно ли это? или проще подбирать настройки оптимального энкода???
|
|
Gray Shield
Стаж: 15 лет 6 месяцев Сообщений: 499
|
Gray Shield ·
14-Ноя-10 14:24
(спустя 22 часа)
zagg-zagg lossless весить меньше не будет однозначно. Подбирать настройки для визуально идентичного результата.
|
|
Pustovetov
Стаж: 17 лет Сообщений: 4255
|
Pustovetov ·
14-Ноя-10 17:57
(спустя 3 часа)
zagg-zagg писал(а):
если пропустить эти файлы через DGIndex, то рип делается нормальной продолжительности и без косяков. это и натолкнуло меня на мысль сделать 1080p в x264. оригинал MPEG2 и потому лелеется надежда, что в x264 будет весить меньше, но при этом хотелось бы сделать рип без
потерь, то есть lossless. возможно ли это? или проще подбирать настройки оптимального энкода???
Без потерь будет весить больше. Но возможно в DGIndex выдемуксить видеопоток и потом уже его замуксить к примеру в ту же матрешку через mmg.exe
|
|
zagg-zagg
Стаж: 15 лет 10 месяцев Сообщений: 1000
|
zagg-zagg ·
14-Ноя-10 18:27
(спустя 29 мин.)
Pustovetov как его выдемуксить через DGIndex? и еще как в скрипте, либо в настройках x264 вписать выдирание определенных кадров. а то на месте стыков есть 5-6 кадров лишних из-за которых происходит небольшой скачок
|
|
Gray Shield
Стаж: 15 лет 6 месяцев Сообщений: 499
|
Gray Shield ·
15-Ноя-10 00:02
(спустя 5 часов, ред. 15-Ноя-10 00:02)
zagg-zagg
Демукс через DGIndex - file->save project and demux video Нарезать кадры в скрипте можно например так:
film=last
t0=film.trim(0,73090)
t1=film.trim(74278,74512)
t2=film.trim(156453,156533)
t3=film.trim(160634,161095)
t4=t0+t1+t2+t3
t4 или так:
Trim(0,161095)
|
|
@lolkin@
Стаж: 16 лет 7 месяцев Сообщений: 1362
|
@lolkin@ ·
15-Ноя-10 00:07
(спустя 5 мин.)
Gray Shield
причем зесь трим, вроде решили без енкода.
|
|
Gray Shield
Стаж: 15 лет 6 месяцев Сообщений: 499
|
Gray Shield ·
15-Ноя-10 00:12
(спустя 4 мин.)
|
|
|