Нарезка видео с произвольным временем поиска из входного файла (списка воспроизведения)

Это потому, что ваша монета многопоточная -. Нажмите букву «H» вверху, чтобы включить режим резьбы. Это покажет вам дочерние потоки биткойнов. Затем вы можете увидеть распространение использования ЦП.

Вы также можете попробовать gstack, чтобы увидеть список потоков.

0
02.03.2020, 17:31
2 ответа

Сawk:

awk -v input="bla.mp4" -v to_last="1:23:45" -F'[()]' '
  BEGIN {
    str="ffmpeg -ss \"%s\" -i \"%s\" -to \"%s\" -c copy -r 30 -c:v libx264rgb -crf 0 -preset ultrafast -c:a aac \"%s_%s.mp4\"\n"
  }
  NR>1 { 
    printf str, ss, input, $2, ++cnt, output
  }
  { ss=$2; sub(/^ /,"",$3); output=$3 }
  END {
    printf str, ss, input, to_last, ++cnt, output # print the last line
  }
' playlist

Входной файл разбивается на (и )на поля, и поле2 читается как значение ssили t, а поле3 как outputимя файла (с удаленным первым символом пробела ). Вам необходимо указать файл inputдля -iи продолжительность последней записи списка воспроизведения tlast.

Выход:

ffmpeg -ss "0:00:00" -i "bla.mp4" -to "0:04:28" -c copy -r 30 -c:v libx264rgb -crf 0 -preset ultrafast -c:a aac "Abcde efgh ijk.mp4"
ffmpeg -ss "0:04:28" -i "bla.mp4" -to "0:17:00" -c copy -r 30 -c:v libx264rgb -crf 0 -preset ultrafast -c:a aac "bcdea gefgh idjk.mp4"
ffmpeg -ss "0:17:00" -i "bla.mp4" -to "0:27:40" -c copy -r 30 -c:v libx264rgb -crf 0 -preset ultrafast -c:a aac "qbecde efgh ijk.mp4"
ffmpeg -ss "0:27:40" -i "bla.mp4" -to "0:35:03" -c copy -r 30 -c:v libx264rgb -crf 0 -preset ultrafast -c:a aac "hebcde efgh ijk.mp4"
ffmpeg -ss "0:35:03" -i "bla.mp4" -to "0:49:16" -c copy -r 30 -c:v libx264rgb -crf 0 -preset ultrafast -c:a aac "Abeds esdh dfk.mp4"
ffmpeg -ss "0:49:16" -i "bla.mp4" -to "0:58:26" -c copy -r 30 -c:v libx264rgb -crf 0 -preset ultrafast -c:a aac "dfhks ierkld sls.mp4"
ffmpeg -ss "0:58:26" -i "bla.mp4" -to "1:09:40" -c copy -r 30 -c:v libx264rgb -crf 0 -preset ultrafast -c:a aac "dhekd sdoemc ks.mp4"
ffmpeg -ss "1:09:40" -i "bla.mp4" -to "1:23:45" -c copy -r 30 -c:v libx264rgb -crf 0 -preset ultrafast -c:a aac "whdjoc dlf fg.mp4"

Я знаком только с Handbrake, дайте знать, если нужно что-то изменить.

1
28.04.2021, 23:21

Есть несколько способов приблизиться к этому, но вот один из них. Я предполагаю, что список воспроизведения содержится в playlist.txtи что формат в точности соответствует указанному (, включая предположение, что текст имени файла всегда состоит из трех слов, разделенных пробелами ). Если эти предположения не совсем верны, вы, вероятно, можете изменить то, что показано ниже, в соответствии с вашими потребностями.

$ cat -b playlist.txt | sort -nr | tail -n +2 | sort -n > playlist_starts.txt
$ cat -b playlist.txt | tail -n +2 > playlist_ends.txt
$ paste playlist_starts.txt playlist_ends.txt > playlist_intervals.txt
$ cat playlist_intervals.txt | awk '{print "ss =", $2, "t =", $7, "filename =", $3, $4, $5}'

Вывод:

ss = (0:00:00) t = (0:04:28) filename = Abcde efgh ijk
ss = (0:04:28) t = (0:17:00) filename = bcdea gefgh idjk
ss = (0:17:00) t = (0:27:40) filename = qbecde efgh ijk
ss = (0:27:40) t = (0:35:03) filename = hebcde efgh ijk
ss = (0:35:03) t = (0:49:16) filename = Abeds esdh dfk
ss = (0:49:16) t = (0:58:26) filename = dfhks ierkld sls
ss = (0:58:26) t = (1:09:40) filename = dhekd sdoemc ks

Вместо этого вы можете создать команду ffmpeg для запуска с использованием этих параметров, а не просто распечатывать их, как это сделал я.

Вы можете просмотреть промежуточные файлы, чтобы узнать, что делает каждая команда. По сути, первые два извлекают строки, соответствующие началу и концу каждого интервала клипа. Команда вставки объединяет соответствующие строки в каждом файле, поэтому результат playlist_intervals.txtсодержит по одной строке на интервал. Затем последняя строка просто извлекает нужные параметры.

0
28.04.2021, 23:21

Теги

Похожие вопросы