С Новым годом! Форум программистов, компьютерный форум, киберфорум
Софт для Linux
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
349 / 204 / 52
Регистрация: 18.10.2017
Сообщений: 2,076
1

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

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

Author24 — интернет-сервис помощи студентам
Здравствуйте!
Когда-то я написал скриипт для перекодирования 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
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.11.2024, 18:50
Ответы с готовыми решениями:

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

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

Шифр Виженера: кириллица не кодируется
по примерам пытаемся изучать кодирование.. нашел у вас здесь тему с кодом...

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

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

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

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

Не по теме:

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

0
19.12.2024, 23:06
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.12.2024, 23:06
Помогаю со студенческими работами здесь

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

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

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

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

Азбука Морзе, кодируется только первое слово строки
проблема в том,что это прога переводит первое слово строчки. #include &lt;iostream&gt; #include...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru