Есть текстовый файл - link.txt. Этот файл содержит следующую ссылку на видео:

$ cat link.txt
https://www.quirksmode.org/html5/videos/big_buck_bunny.mp4

Я могу перекодировать видео из этого файла следующим образом:

ffmpeg -i $(cat link.txt) -vcodec libx264 -acodec libfdk_aac out.mpg

или я могу использовать pipe для достижения того же результата:

cat link.txt | ffmpeg -i - -vcodec libx264 -acodec libfdk_aac out.mpg

Но я должен запустить FFmpeg через определенное программное обеспечение, и оно не поддерживает каналы и команды выше.

Я ищу решение для запуска FFmpeg, как это:

ffmpeg -some-extra-parameters -to-say-ffmpeg -get-the-link \
       -from-the-text-file -i link.txt -vcodec libx264 \
       -acodec libfdk_aac out.mpg

Вопрос 1: эта функция реализована в FFmpeg?

Также я проверил предустановки FFmpeg и создал файл FFPRESET для моей цели:

$ cat /usr/local/share/ffmpeg/linkpreset.ffpreset
i=https://www.quirksmode.org/html5/videos/big_buck_bunny.mp4
vcodec=libx264
acodec=libfdk_aac

Я получил ошибку, когда попытался выполнить FFmpeg с этим пресетом:

$ ffmpeg -fpre /usr/local/share/ffmpeg/linkpreset.ffpreset out.mpg

/usr/local/share/ffmpeg/linkpreset.ffpreset: Invalid option or argument: 
'i=https://www.quirksmode.org/html5/videos/big_buck_bunny.mp4', 
parsed as 'i' = 'https://www.quirksmode.org/html5/videos/big_buck_bunny.mp4'

Вопрос 2: Есть ли способ указать входную ссылку в файле FFPRESET?
Вопрос 3(основной): как прочитать входную ссылку из текстового файла в FFmpeg напрямую (без дополнительных инструментов и каналов)?

1 ответ1

1

Прямого метода для этого не существует, но обходной путь - использовать демультиплексор concat с одной записью.

Создать текстовый файл, содержащий

file 'https://www.quirksmode.org/html5/videos/big_buck_bunny.mp4'

а потом беги

ffmpeg -f concat -safe 0 -protocol_whitelist file,https,tcp,tls,crypto -i link.txt ...

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .