Как жестко кодировать субтитры из потока с помощью ffmpeg?

Чтобы сохранить такой же формат документа здесь -и вставить заданный текст непосредственно перед последней строкой файла, попробуйте ed!

ed -s /etc/security/limits.conf << EOF
$ i
*    soft     nproc       65535    
*    hard     nproc       65535   
*    soft     nofile      65535   
*    hard     nofile      65535
root soft     nproc       65535
root hard     nproc       65535
root soft     nofile      65535
root hard     nofile      65535
.
wq
EOF

Это отправляет последовательность команд в ed, все в документе здесь -. Мы обращаемся к последней строке файла с помощью $и говорим, что мы хотели бы iвставить некоторый текст. Далее следует текст, как и в вашем примере; как только мы закончили со вставленным текстом, мы говорим ed, что закончили с одной точкой(.). Wзаписать файл обратно на диск, а затем quit.

Если вы хотите свернуть $ iв $i, вам нужно избежать знака доллара или использовать цитируемый здесь -документ (ed -s input << 'EOF'...), чтобы предотвратить расширение $iдо текущего значения iпеременная или пустая, если такая переменная не установлена.

1
14.07.2020, 16:56
1 ответ

Вы можете записывать субтитры прямо из mkv, используя фильтр «субтитры».

Просто добавьте-vf "subtitles='$PATH_TO_MKV':stream_index=$SUBTITLE_ID"

Пример

ffmpeg -i input.mkv -c:v libx264 -vf "subtitles=input.mkv:stream_index=0" output.mkv
Параметр

stream_indexявляется необязательным. Он начинается с нуля, поэтому stream_index=1выберет второй поток субтитров в контейнере.

Для получения дополнительной информации см. документацию по фильтру «субтитры» здесьhttp://ffmpeg.org/ffmpeg-filters.html#subtitles

И общее руководство по фильтрации по этой ссылкеhttps://trac.ffmpeg.org/wiki/FilteringGuide

2
18.03.2021, 23:19

Теги

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