-
-
Save sergei-mironov/e1876f5d78cb6e66791809771d7bf36b to your computer and use it in GitHub Desktop.
#!/bin/sh | |
# VKontakte *m3u8 downloader | |
# Worked at the time of writing | |
mkdir /tmp/m3u8 | |
set -e -x | |
cd /tmp/m3u8 | |
rm * | |
# Download m3u8. | |
url=$1 | |
urldir=`dirname $url` | |
wget $url -O index.m3u8 | |
# Download first key into 'key.pub'. We expect it is the only key used. | |
keyurl=`sed -n 's@.*\(https.*key.pub\).*@\1@ p' index.m3u8 | head -n 1` | |
wget $keyurl | |
# Replace http urls with local file names | |
# Download ts segments | |
cat index.m3u8 | \ | |
sed 's@"https.*pub?.*"@key.pub@g' | \ | |
sed 's@ts?.*@ts@g' >index_local.m3u8 | |
for line in `cat index_local.m3u8 | grep -v '^#'` ; do | |
wget `dirname $url`/$line | |
done | |
# Concat and decrypt ts-segments with ffmpeg, which understands local filesystem paths | |
ffmpeg -allowed_extensions 'ALL' -protocol_whitelist 'crypto,file' -i index_local.m3u8 -c copy out.ts | |
# Go grab the output | |
echo "`pwd`/out.ts" |
после создания тикета на трекере ffmpeg, оказывается это баг ffmpeg и всю эту простыню можно заменить простым
ffmpeg -http_persistent false -i $link -c copy output.mp3
по желанию выставить битрейт
ffmpeg -http_persistent false -i $link -c copy -b:a 320k output.mp3
ffmpeg -http_persistent false -i $link -c copy output.mp3
@mark99i
ну уж слишком долго грузится у меня музыка....
ffmpeg -http_persistent false -i $link -c copy output.mp3
@mark99i
ну уж слишком долго грузится у меня музыка....
@homus32Попробуйте сменить версию ffmpeg, у меня качает где-то 10-30мбит/с
Я уже попробывал на других ссылках - там очень быстро, а на моей ссылке - очень плохо грузит
Команда полностью:
ffmpeg -http_persistent false -i "https://psv4.vkuseraudio.net/audio/ee/3t1Q1RCTNLLwtLw1RYfxY35HZsJ7ly0G82cAug/89MzAyMjE_PTIz/5bRn5dbVBBXGdQOGo/index.m3u8?extra=lAcshhqU3002_E4Q-jj9yF_Tw4s3KITcoaNwgzodovwof20NtQ8Ein7ffqADVUt0ZV7T2pl_BSABQBqHFHAW68nGR61vKf6LobkkX2hDR-z6ga3rEQ-uNFHBC1Z3DTmB8imheomqiOoLL3-X1H9K_XeauNmC" -c copy ipanema.mp3
Через расширение на браузер SaveFrom скачивается быстро, а через ffmpeg долго.... Подозрение не на сервера ВК а на ffmpeg
Скачивается со скорость 512 байт в секунду
ffmpeg -http_persistent false -i $link -c copy output.mp3
@mark99i
ну уж слишком долго грузится у меня музыка....
@homus32Попробуйте сменить версию ffmpeg, у меня качает где-то 10-30мбит/с
Я уже попробывал на других ссылках - там очень быстро, а на моей ссылке - очень плохо грузит
Команда полностью:
ffmpeg -http_persistent false -i "https://psv4.vkuseraudio.net/audio/ee/3t1Q1RCTNLLwtLw1RYfxY35HZsJ7ly0G82cAug/89MzAyMjE_PTIz/5bRn5dbVBBXGdQOGo/index.m3u8?extra=lAcshhqU3002_E4Q-jj9yF_Tw4s3KITcoaNwgzodovwof20NtQ8Ein7ffqADVUt0ZV7T2pl_BSABQBqHFHAW68nGR61vKf6LobkkX2hDR-z6ga3rEQ-uNFHBC1Z3DTmB8imheomqiOoLL3-X1H9K_XeauNmC" -c copy ipanema.mp3
Через расширение на браузер SaveFrom скачивается быстро, а через ffmpeg долго.... Подозрение не на сервера ВК а на ffmpeg
Скачивается со скорость 512 байт в секунду
Попробовал вашу ссылку, версией ffmpeg-2020-02-27 скачивается 6мбит/с, а по времени за 10 секунд примерно. Возможно у вас с интернетом конкретно до этого сервера что-то не так, savefrom ведь со своих серверов качает скорее всего.
ffmpeg -http_persistent false -i $link -c copy output.mp3
@mark99i
ну уж слишком долго грузится у меня музыка....
@homus32Попробуйте сменить версию ffmpeg, у меня качает где-то 10-30мбит/с
Я уже попробывал на других ссылках - там очень быстро, а на моей ссылке - очень плохо грузит
Команда полностью:
ffmpeg -http_persistent false -i "https://psv4.vkuseraudio.net/audio/ee/3t1Q1RCTNLLwtLw1RYfxY35HZsJ7ly0G82cAug/89MzAyMjE_PTIz/5bRn5dbVBBXGdQOGo/index.m3u8?extra=lAcshhqU3002_E4Q-jj9yF_Tw4s3KITcoaNwgzodovwof20NtQ8Ein7ffqADVUt0ZV7T2pl_BSABQBqHFHAW68nGR61vKf6LobkkX2hDR-z6ga3rEQ-uNFHBC1Z3DTmB8imheomqiOoLL3-X1H9K_XeauNmC" -c copy ipanema.mp3
Через расширение на браузер SaveFrom скачивается быстро, а через ffmpeg долго.... Подозрение не на сервера ВК а на ffmpeg
Скачивается со скорость 512 байт в секунду
и да, советую удалить savefrom
https://habr.com/ru/company/yandex/blog/534586/
Ребят, есть какой-нибудь апдейт? Реально качает очень медленно, похоже любая версия ffmpeg :)
Ребят, есть какой-нибудь апдейт? Реально качает очень медленно, похоже любая версия ffmpeg :)
да оно везде так. Вк ограничевает скорость.
Не вижу ограничения скорости, 14 МБ (6.5 минут) качается за 3.5 секунды
real 0m3.583s
user 0m0.253s
sys 0m0.047s
@homus32, спасибо за гист!
Получилось сделать без ffmpg, уже работает в тг боте @MusicRightBot
@evil26r а можно детали реализации)
@mark99i алгоритм примерно следующий:
- Получить все .ts из m3u8
- вычлинить все байты из пейлоадов каждой части(part) .ts (в каждом part'е 8 байт заголовков)
- склеенные байты пейлоада и будет mp3
работает тоже медленно, но хотя бы все работает в памяти без io
работает...
ffmpeg -i $link -c copy output2.mp3
не работает, заикается. если выставить -loglevel debug, то будут ошибки
причем нормально без ошибок и заиканий скачивает старая версия
ffmpeg version N-59742-gd9481dc built on Jan 9 2014 22:01:53 with gcc 4.8.2 (GCC).