Тема скачивания видео из интернета бессмертна)
Решил написать заметку, как скачивать видеопоток с помощью ffmpeg.
Собственно, команда достаточно простая:
ffmpeg -i "httр://example.com/video123.m3u8" -c:a copy -c:v copy -bsf:a aac_adtstoasc -movflags +faststart -y video123.mp4
Описание параметров:
-i "httр://example.com/video123.m3u8" - указание адреса URL-потока. Почти всегда в адресе присутствует ".m3u8".
-c:a copy -c:v copy - указание кодеков сжатия для потоков аудио и видео соответственно. В данном случае копирование без пережатия. Можно, кстати, написать короче: "-c copy".
-bsf:a aac_adtstoasc - использовать bitstream filter или фильтр преобразования потока. В данном случае для аудиопотока. Из-за того, что AAC находится в MPEG2 TS контейнере, а мы его складываем в MP4, то надо сконвертировать описание аудиопотока в более подходящий формат. Пережатия аудио не происходит.
-movflags +faststart - переносит moov atom с описанием содержимого в начало файла. Позволяет начать просмотр видео не докачав его до конца. Удобно, когда в конце большой эндинг или титры.
-y - перезаписывать файл, если есть, ни о чём не спрашивая.
video123.mp4 - собственно, название файла, в котором будут сохранены скачанные видео- и аудиопотоки.
Замечу ещё, что перемотка потока параметром "-ss" работает очень медленно, т.к. поток всё равно скачивается, хоть и дропается. А докачка потока и вовсе не работает.
#ffmpeg #download #videodownload