С Новым годом! Форум программистов, компьютерный форум, киберфорум
Софт для Linux
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
 Аватар для peter_irich
364 / 220 / 53
Регистрация: 18.10.2017
Сообщений: 2,354

Видео кодируется с ускорением

09.11.2024, 18:50. Показов 1075. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!
Когда-то я написал скриипт для перекодирования mkv-файлов. Он декодирует в несжатый файл *.y4m, извлекает аудиодорожки и снова кодирует
несжатый файл с пресетом veryslow. На процессоре AMD Ryzen 5 B3600 всё получалось нормально, а сейчас, на более новой плате с чипсетом
B650 и процессором AMD Ryzen 5 7500F попробовал перекодировать 5 файлов и у всех пяти видеофайл идёт быстрее. Отчего это происходит и как добиться правильного кодирования? Скрипт привожу.

Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
#!/bin/bash
 
fout="/home/peter-irich/encode_y4m_mka_from_makemkv.out"
/bin/date > $fout
declare -a nam_arr
cntf=0
while read flnm ; do
 nam_arr[$cntf]=$flnm
 echo $cntf ${nam_arr[$cntf]}
 echo $cntf ${nam_arr[$cntf]} >> $fout
 let cntf++
done < /home/peter-irich/mkv.lst
 
dirs="/media/peter-irich/Seagate_4TB/nobody/mkv_files"
cnti=0
cd $dirs
while [ $cnti -lt $cntf ] ; do
 namf=${nam_arr[$cnti]}
 namm=`echo $namf | /usr/bin/cut -d "." -f 1`
 
 /bin/date >> $namm.time
 echo "namm="$namm >> $namm.time
 echo "namm="$namm >> $fout
    /bin/date > $namm.time
    /bin/date >> $fout
 
    /usr/bin/mediainfo $dirs/$namm.mkv > $namm.info
    /usr/bin/mediainfo $dirs/$namm.mkv >> $fout
    naud=`/usr/bin/mediainfo $dirs/$namm.mkv | /bin/grep -c ^Audio`
    nw1=`/usr/bin/mediainfo $dirs/$namm.mkv | /bin/grep Width | \
/usr/bin/tr -s " " | /usr/bin/cut -d " " -f 3`
    nw2=`/usr/bin/mediainfo $dirs/$namm.mkv | /bin/grep Width | \
/usr/bin/tr -s " " | /usr/bin/cut -d " " -f 4`
    if [ "$nw2" = "pixels" ] ; then
     nw=$nw1
    else
     let nw2=10#${nw2}
     let nw=1000*nw1+nw2
    fi
    nh1=`/usr/bin/mediainfo $dirs/$namm.mkv | /bin/grep Height | \
/usr/bin/tr -s " " | /usr/bin/cut -d " " -f 3`
    nh2=`/usr/bin/mediainfo $dirs/$namm.mkv | /bin/grep Height | \
/usr/bin/tr -s " " | /usr/bin/cut -d " " -f 4`
    echo $nw1 $nw2 $nw "nh1="$nh1 "nh2="$nh2 $nh
    echo $nw1 $nw2 $nw "nh1="$nh1 "nh2="$nh2 $nh >> $fout
    if [ "$nh2" = "pixels" ] ; then
     nh=$nh1
    else
     let nh2=10#${nh2}
     let nh=1000*nh1+nh2
    fi
echo $nw1 $nw2 $nw $nh1 $nh2 $nh
    echo $namm.mkv "naud="$naud $nw $nh
    echo $namm.mkv "naud="$naud $nw $nh >> $fout
 
/usr/bin/ffmpeg -i $dirs/$namm.mkv -an -sn -map 0 -vsync 2 -strict -1 \
-f yuv4mpegpipe ${namm}.y4m > ${namm}_y4m.err 2>&1 
 
#/usr/bin/ffmpeg -i $dirs/$namm.mkv -an -sn -strict -1 -f yuv4mpegpipe \
#${namm}.y4m > ${namm}_y4m.err 2>&1 
 
    echo $namm "y4m was build"
    echo $namm "y4m was build" >> $namm.time
    echo $namm "y4m was build" >> $fout
    /bin/date >> $namm.time
    /bin/date >> $fout
 
    /usr/bin/x265 --log-level warning --input-res ${nw}x${nh} --preset \
veryslow -o ${namm}_cmpr_v.mkv ${namm}.y4m > ${namm}_cmpr_v.err 2>& 1
    /bin/ls -l ${namm}.y4m >> $namm.time
    /bin/rm -f ${namm}.y4m
 
    echo $namm "cmpr_v.mkv was build"
    echo $namm "cmpr_v.mkv was build" >> $fout
    echo "$namm cmpr_v.mkv was build" >> $namm.time
    /bin/date >> $namm.time
    /bin/date >> $fout
    cnt=0
    while [ $cnt -lt $naud ] ; do
     prf=""
     if [ $cnt -lt 10 ] ; then
        prf="0"
     fi
     nmb=${prf}$cnt
     echo $nmb
     echo $nmb >> $fout
     echo $nmb >> $namm.time
 
     /usr/bin/ffmpeg -i $dirs/$namm.mkv -map 0:a:$cnt -c:a ac3 \
${namm}_$nmb.ac3 > ${namm}_$nmb.err 2>&1
     /usr/bin/mkvmerge -o ${namm}_$nmb.mka ${namm}_$nmb.ac3
 
     let cnt++
     /bin/date >> $namm.time
     /bin/date >> $fout
    done
 
    echo "mkv_end" >> $namm.time
    echo "mkv_end" >> $fout
    let cnti++
done
 
cd /home/peter-irich
/usr/bin/sync
/usr/bin/umount /media/peter-irich/Seagate_4TB
/usr/bin/udisksctl power-off -b /dev/sdb
/usr/bin/sudo /usr/sbin/shutdown -h +0
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
09.11.2024, 18:50
Ответы с готовыми решениями:

Долго кодируется видео. XviD4PSP 6.0
Возможно тема не для этого раздела , но я не знал куда её поместить. Короче проблема в том, что я кодировал фильм который весит...

С каким ускорением относительно клина будет скользить по нему брусок, если лифт движется вниз с ускорением
На полу лифта закреплен клин, который образует угол 45° с поверхностью пола. С каким ускорением относительно клина будет скользить по нему...

Шифр Виженера: кириллица не кодируется
по примерам пытаемся изучать кодирование.. нашел у вас здесь тему с кодом https://www.cyberforum.ru/cpp-beginners/thread1624142.html -...

10
 Аватар для peter_irich
364 / 220 / 53
Регистрация: 18.10.2017
Сообщений: 2,354
16.11.2024, 21:36  [ТС]
Не является ли сокращение времени хода перекодированного видеопотока следствием того, что кодирование делалось с опцией "-vsync 2"?
Возможно, надо было указать "-vsync 1", что означает cfr? Сейчас я запустил это вариант, но результат будет позже.
0
 Аватар для peter_irich
364 / 220 / 53
Регистрация: 18.10.2017
Сообщений: 2,354
18.11.2024, 21:44  [ТС]
"-vsync 1" не помогло, вроде бы стало ещё хуже.
0
 Аватар для peter_irich
364 / 220 / 53
Регистрация: 18.10.2017
Сообщений: 2,354
20.11.2024, 21:15  [ТС]
Чем меньше параметр vsync, тем больше расхождение. Вот для strict: "-1" соответствует максимальному целому (int) или это что-то другое?
0
 Аватар для peter_irich
364 / 220 / 53
Регистрация: 18.10.2017
Сообщений: 2,354
25.11.2024, 21:10  [ТС]
Попробовал с ffmpeg-7.1 и опциями "-vsync 2 -strict strict", всё то же самое.
0
 Аватар для peter_irich
364 / 220 / 53
Регистрация: 18.10.2017
Сообщений: 2,354
01.12.2024, 19:01  [ТС]
Пробовал с ffmpeg-7.1 и опциями -strict strict -vsync {0|1|2}, не помогает. Есть место, где знают ffmpeg и смогут ответить?
0
1130 / 387 / 84
Регистрация: 30.08.2017
Сообщений: 2,386
04.12.2024, 16:48
ffmpeg.org ?
0
 Аватар для peter_irich
364 / 220 / 53
Регистрация: 18.10.2017
Сообщений: 2,354
04.12.2024, 18:02  [ТС]
_sg2, возможно; мне также называли форум, в адрес которого входит doom. Но на форуме по ubuntu, где мне и дали на него ссылку, предполагают, что процессор всё же тротлит, хотя там сейчас кулер ID-COOLING SE-224_XTS 220Вт, а частота процессора стабильно держится высокая.

Добавлено через 21 минуту
_sg2, http://forum.doom9.org
0
 Аватар для peter_irich
364 / 220 / 53
Регистрация: 18.10.2017
Сообщений: 2,354
16.12.2024, 21:15  [ТС]
Установил мощный кулер, с ним температура не поднимается выше 77 при стресс-тесте или кодировании, но всё равно при декодировании с
-fps_mode cfr (оно же -vsync 1) и послдеующем кодировании то же самое явление. Попробую с -fps_mode vfr (-vsync 2).
0
 Аватар для peter_irich
364 / 220 / 53
Регистрация: 18.10.2017
Сообщений: 2,354
19.12.2024, 22:31  [ТС]
Я попробовал не указывать значение vsync, по умолчанию 0. Перекодированный видеофайл настолько сжат, что ffprobe почти ничего не может из него извлечь, например, длительность, но сообщила, что fps=25, а у исходного mkv и у декодированного 24.
0
19.12.2024, 23:06

Не по теме:

R&D продолжается :)

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
19.12.2024, 23:06
Помогаю со студенческими работами здесь

Здравстуйте, Почему не кодируется?! код Хемминга
#include&lt;stdio.h&gt; #include&lt;stdlib.h&gt; #include&lt;string.h&gt; #include&lt;math.h&gt; #include&lt;iostream&gt; using namespace std; char...

Объяснить как кодируется заданное число
Ссылка на материал: https://www.cyberforum.ru/post13981018.html Можете, пожалуйста, объяснить, по какому алгоритму и как Assembler...

Почему текст \файл не кодируется в ANSI?
Файл .htaccess не кодируется в ANSI, а стоит на UTF-8, хотя я постоянно кодирую в ANSI и сохраняю. Затем, когда захожу все равно стоит...

Как кодируется char в русской кодировке?
Здравствуйте всем :). Мой вопрос (скорее наблюдение) теоретический а не прикладной.Посмотрите вложения, а я изложу ход моих мыслей(весьма...

Массивом char[M][N] кодируется поле, на котором расположено
Здравствуйте, помогите пожалуйста с решением следующей задачи: Массивом char кодируется поле, на котором расположено несколько...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru