В статье мы представим информацию о таком формате файла, как M3U8. Далее будет составлено его описание. Кроме этого, мы объясним, чем открыть M3U8-файл, какие для этого существуют программы.
M3U8 – это плейлист. Он используется различными программами для воспроизведения видео- и аудиоконтента. В файлах данного формата та же структура, что и в M3U, различаются они кодировкой.
Перед тем как объяснить вам, чем открыть M3U8, хотелось бы уточнить, что такой файл широкого применяется для хранения записей треков. Практически любая операционная система поддерживает данный формат, но для воспроизведения стоит использовать специальные утилиты. А какие именно? Об этом подробней читайте далее.
Содержание
Программы
Так чем открыть файл M3U8? В операционной системе Windows есть стандартная утилита, которая справится с данной задачей. Называется она Windows Media Player, среди пользователей программа достаточно популярна. Также для открытия M3U8-файлов подойдут такие утилиты, как:
- Roxio Creator.
- Apple iTunes.
- Songbird.
- Roxio Creator.
- Media Player Classic.
- Foobar2000.
- Microsoft zune.
Если у вас стоит операционная система Linux, то тогда для открытия подобных плейлистов можете воспользоваться такой утилитой, как VideoLAN VLC media player или же XMMS.
Также можно работать с файлами этого форматом и на устройствах с ОС Mac. На «Макбуке» можно использовать такие утилиты как Apple iTunes, Songbird.
Почему не открывается файл?
Бывает так, что человек использует подходящую программу, но все равно не удается открыть M3U8-файл. Подобная проблема может возникать по следующим причинам:
- инфицирован файл;
- установлены устаревшие драйвера;
- недостаточно ресурсов у устройства;
- поврежден файл;
- недостаточно ресурсов операционной системы;
- установленные драйвера повреждены.
Конвертация в другие форматы
Данный формат является уникальным. Поэтому редко требуется конвертация в другие. Однако если есть необходимость, то можно преобразовать файлы. Для этого следует установить дополнительные утилиты, например, Online Convert. Также можно воспользоваться онлайн-сервисами.
Файл формата M3U8 открывается специальными программами. Чтобы открыть данный формат, скачайте одну из предложенных программ.
Чем открыть файл в формате M3U8
M3U8 формат представляет собой плейлист, применяемый различными программными утилитами для воспроизведения аудио и видео контента.
На практике используется та же структура файла, что и в формате M3U, только кодировка данных реализована при помощи алгоритма UTF-8.
Файл с расширением M3U8 находит широкое применение для хранения записей аудио-треков.
Воспроизведение данного расширения поддерживает практически любая ОС посредствам различных video/media проигрывателей.
Программы для открытия, создания и редактирования M3U8
Windows Media Player – традиционный, интегрированный в Windows плагин, являющийся самым востребованным среди пользователей программным обеспечением для открытия M3U8.
Для воспроизведения файла также прекрасно подойдут и другие видеопроигрыватели для ОС Windows:
- Apple iTunes;
- Foobar2000;
- Microsoft zune;
- Songbird;
- Roxio Creator;
- Media Player Classic.
Для того чтобы открыть или редактировать файл M3U8 в ОС Linux, необходимо воспользоваться утилитами XMMS, VideoLAN VLC media player.
Данный формат адаптирован и для работы в ОС Mac с применением плагинов, Songbird (как и для ОС Windows), Apple iTunes или любого другого видео или аудио проигрывателя.
Причинами, по которым расширение M3U8 не удается открыть, могут заключаться в следующем:
- поврежден или инфицирован файл;
- файл не связан с реестром ОС (выбрано некорректное приложение для воспроизведения);
- недостаточно ресурсов устройства или ОС;
- поврежденные или устаревшие драйвера.
Конвертация M3U8 в другие форматы
M3U8 – уникальный файл плейлиста, поэтому конвертация его в другие форматы бывает востребована крайне редко.
Однако в случае крайней необходимости расширение может быть преобразовано в:
- WebTV List.txt;
- Webtv_usr.xml;
- Mtb_list.txt (beta).
Подобное может быть реализовано не только с применением дополнительно инсталлируемых плагинов, но и специальных онлайн-сервисов, например, Online Convert.
Почему именно M3U8 и в чем его достоинства?
Приходится констатировать неутешительный факт: среди обычных пользователей расширение M3U8 находит свое применение очень нечасто. Гораздо большее распространение получил формат M3U, являющийся универсальным для многих аудио/медиа проигрывателей.
- Тип файла:
- UTF-8 M3U Playlist File
- Категория:
- Аудио
Файл списка воспроизведения, используемый программами аудио- и видео-воспроизведения. Использует то же форматирование, что и файл .M3U, за исключением того, что текст, хранящийся в файле, использует шифрование UTF-8. Часто применяется для хранения списков воспроизведения, в которых названия песен указаны на разных языках.
Примечание: некоторые файлы M3U могут уже использовать кодирование UTF-8. Но файлы M3U могут также применять и другие стандарты шифрования. Поэтому расширение M3U8 применяется для точного указания, что используется именно шифрование UTF-8.
MIME-тип: application/x-mpegURL
Другие похожие форматы и расширения файлов
.M3U | .M3G | .M3D | .M3 |
.M4 | .M4A | .M4B | .M4E |
M3U (MP3 URL[1][2] or Moving Picture Experts Group Audio Layer 3Uniform Resource Locator[3] in full) is a computer file format for a multimedia playlist. One common use of the M3U file format is creating a single-entry playlist file pointing to a stream on the Internet. The created file provides easy access to that stream and is often used in downloads from a website, for emailing, and for listening to Internet radio.
Filename extensions | .m3u , .m3u8 |
---|---|
Internet media type | various; see § Internet media types |
Type of format | Playlist |
Extended to | HTTP Live Streaming playlist |
Although originally designed for audio files, such as MP3, it is commonly used to point media players to audio and video sources, including online sources. M3U was originally developed by Fraunhofer for use with their Winplay3 software,[4] but numerous media players and software applications now support the format.
M3U playlists have been the cause of vulnerabilities in many music players such as VLC media player,[5]iTunes,[6]Winamp,[7] and many others.[8]
File formatEdit
There is no formal specification for the M3U format; it is a de facto standard.
An M3U file is a plain text file that specifies the locations of one or more media files. The file is saved with the «m3u» filename extension if the text is encoded in the local system’s default non-Unicode encoding (e.g., a Windows codepage), or with the «m3u8» extension if the text is UTF-8 encoded.[9]
Each entry carries one specification. The specification can be any one of the following:
- an absolute local pathname; e.g., C:My MusicHeavysets.mp3
- a local pathname relative to the M3U file location; e.g. Heavysets.mp3
- a URL.
Extended M3UEdit
The M3U file can also include comments, prefaced by the «#» character. In extended M3U, «#» also introduces extended M3U directives.
Directive | Description | Example | Required | Standard |
---|---|---|---|---|
#EXTM3U |
file header, must be the first line of the file | #EXTM3U |
1× | Yes |
#EXTINF: |
track information: runtime in seconds and display title of the following resource | #EXTINF:123,Artist Name – Track Title |
No | Yes |
additional properties as key-value pairs | #EXTINF:123 logo="cover.jpg",Track Title |
No | No | |
#EXTALB: |
album information, title in particular | #EXTALB:Album Title (2009) |
1× | AL[10] |
#EXTART: |
album artist | #EXTART:Various |
1× | AL[10] |
#EXTGENRE: |
album genre | #EXTGENRE:Jazz Fusion |
1× | AL[10] |
#EXTGRP: |
group | #EXTGRP: |
No | IPTV |
#PLAYLIST: |
playlist display title | #PLAYLIST: |
1× | IPTV |
#EXTM3A |
playlist for tracks or chapters of an album in a single file | #EXTM3A |
1× | M3A[11][12] |
#EXTBYT: |
file size in bytes | #EXTBYT: |
No | M3A[11][12] |
#EXTBIN: |
file offset | #EXTBIN: |
No | M3A[11][12] |
#EXT-X-: |
various parameters |
#EXT-X-START:TIME-OFFSET=0 #EXT-X-INDEPENDENT-SEGMENTS #EXT-X-PLAYLIST-TYPE:VOD# or EVENT #EXT-X-TARGETDURATION:10 #EXT-X-VERSION:4 #EXT-X-MEDIA-SEQUENCE:0 #EXT-X-INDEPENDENT-SEGMENTS #EXT-X-MEDIA:NAME="English",TYPE=AUDIO,GROUP-ID="audio-stereo-64",LANGUAGE="en",DEFAULT=YES,AUTOSELECT=YES,URI="english.m3u8" #EXT-X-STREAM-INF:BANDWIDTH=1123000,CODECS="avc1.64001f,mp4a.40.2 #EXT-X-BYTERANGE:1024@256000 #EXT-X-DISCONTINUITY #EXT-X-DISCONTINUITY-SEQUENCE:2 #EXT-X-KEY:METHOD=NONE #EXT-X-MAP:URI=MediaInitializationSection #EXT-X-PROGRAM-DATE-TIME:2010-02-19T14:54:23.031+08:00 #EXT-X-DATERANGE:ID=foo #EXT-X-I-FRAMES-ONLY #EXT-X-SESSION-DATA:DATA-ID=com.example.movie.title #EXT-X-SESSION-KEY: |
No | HLS[13] |
#EXT-X-ENDLIST |
footer | #EXT-X-ENDLIST |
No | HLS[13] |
#EXTENC: |
text encoding, must be the second line of the file | #EXTENC: UTF-8 |
1× | No |
M3U8Edit
The Unicode version of M3U is M3U8, which uses UTF-8-encoded characters. M3U8 files are the basis for the HTTP Live Streaming (HLS) format originally developed by Apple to stream video and radio to iOS devices, and which is now a popular format for Dynamic Adaptive Streaming over HTTP (DASH) in general.
The current proposal for the HLS playlist format uses UTF-8 exclusively and does not distinguish between the «m3u» and «m3u8» file name extensions.[14]
Internet media typesEdit
The only Internet media type registered for M3U and M3U8 is application/vnd.apple.mpegurl
, registered in 2009 and only referring to the playlist format as used in HLS applications.[15][16]
The current proposal for the HLS playlist format acknowledges two media types which it treats as equivalent: application/vnd.apple.mpegurl
and audio/mpegurl
.[14] Likewise, these are the two types recommended for HLS use by Microsoft.[17]
For non-HLS applications, no media types were standardized or registered with the IANA, but a number of media types are nonetheless associated with the historical and ongoing use of the M3U and M3U8 formats for general playlists:
application/mpegurl
application/x-mpegurl
audio/mpegurl
audio/x-mpegurl
[1][2]
These types, plus application/vnd.apple.mpegurl
and application/vnd.apple.mpegurl.audio
, are supported for HLS applications by (for example) Microsoft’s Windows 10[17] and Internet Explorer 9,[18] and LG’s WebOS.[19]
ExamplesEdit
- Example 1
This is an example of an extended M3U file on the Windows platform. Sample.mp3 and Example.ogg are the media files. 123 and 321 are the lengths in seconds.[20] A length of -1 or 0 may be used when the media file is a streaming file, as there is no actual, predefined length value. The value after the length is the title to be shown, which is generally the same as the location of the file which is on the second line. On the Mac OS X and Linux platforms, Unix paths are used.
#EXTM3U
#EXTINF:123, Sample artist - Sample title C:Documents and SettingsIMy MusicSample.mp3
#EXTINF:321,Example Artist - Example title C:Documents and SettingsIMy MusicGreatest HitsExample.ogg
- Example 2
This example shows how to create an m3u file linking to a specified directory (for example, a flash drive, or CD-ROM). The m3u file should contain only one string: the path to the directory. After starting, the media player will play all contents of the directory:
C:Music
- Example 3
Here is another example, using relative format. The M3U file is placed in the same directory as the music, and directories must be preserved when moving the playlist to another device if subdirectories are used. This method is more flexible, as it does not rely on the file path staying the same.
This is the same file as above, saved as sample.m3u in C:Documents and SettingsUserMy Music
#EXTM3U
#EXTINF:123, Sample artist - Sample title Sample.mp3
#EXTINF:321,Example Artist - Example title Greatest HitsExample.ogg
This format in an M3U allows copying to another device for playback. All files and directories referred to must also be copied.
- Example 4
Here is a mixed example:
AlternativeBand - Song.mp3 ClassicalOther Band - New Song.mp3 Stuff.mp3 D:More MusicFoo.mp3 ..Other MusicBar.mp3 http://emp.cx:8000/Listen.pls http://www.example.com/~user/Mine.mp3
Notes:
- Alternative and Classical are sub-directories of the directory that this playlist is stored in.
- «Song» and «New Song» are in sub-directories of the directory that this playlist is stored in.
- «Stuff» is in the same directory that the playlist is stored in.
- «Foo» is in the specified (Windows) volume and directory, which may or may not be the same directory the playlist is in.
- «Bar» is in a different directory at the same level as the playlist directory. The double-dots reference the parent directory of the playlist directory, then into the sub-directory «Other Music» to reach «Bar».
- «Listen» is a Shoutcast stream.
- «Mine» is an MP3 stored on a web server.
- Example 5
References to other M3U playlists, for example, are generally not well-supported.
AnotherPlayList.m3u
- Example 6
The following is an example of a M3U playlist file for «Jar of Flies» album by «Alice in Chains» that was created by Mp3tag with the following custom option settings:[21][22][23]
- playlist extended info format =
"%artist% - %title%"
- playlist filename format =
"%artist%_%album%_00_Playlist.m3u"
- tag to filename conversion format =
"%artist%_%album%_$num(%track%,2)_%title%"
#EXTM3U #EXTINF:419,Alice in Chains - Rotten Apple Alice in Chains_Jar of Flies_01_Rotten Apple.mp3 #EXTINF:260,Alice in Chains - Nutshell Alice in Chains_Jar of Flies_02_Nutshell.mp3 #EXTINF:255,Alice in Chains - I Stay Away Alice in Chains_Jar of Flies_03_I Stay Away.mp3 #EXTINF:256,Alice in Chains - No Excuses Alice in Chains_Jar of Flies_04_No Excuses.mp3 #EXTINF:157,Alice in Chains - Whale And Wasp Alice in Chains_Jar of Flies_05_Whale And Wasp.mp3 #EXTINF:263,Alice in Chains - Don't Follow Alice in Chains_Jar of Flies_06_Don't Follow.mp3 #EXTINF:245,Alice in Chains - Swing On This Alice in Chains_Jar of Flies_07_Swing On This.mp3
SoftwareEdit
Tag editorsEdit
The following tag editor software allows users to edit the ID3 tags in MP3 files, and has support for creating M3U files.
- Linux
- Other playlist file formats
- ASX — Windows media
- PLS — SHOUTcast
- XSPF — Xiph.Org Foundation
- WPL — Windows Media Player
ReferencesEdit
- ^ abFraunhofer Gesellschaft, Fraunhofer Institut für Integrierte Schaltungen-A (1996-10-30). «WinPlay3 — Windows real-time ISO/MPEG Audio Layer 3 Player». Archived from the original on 1997-06-06.
- ^ abGruett, Matt. «M3U FILES AND STREAMING». LockerGnome. Archived from the original on 2001-04-26.
- ^Nero. «Nero MediaHome 4 — Manual»(PDF). Archived(PDF) from the original on 2015-09-05.
- ^«WINAMP.COM | Winamp Documentation». web.archive.org. June 6, 2002. Archived from the original on 2002-06-06.
- ^«VideoLAN-SA-0804 (CVE-2007-6683)». 2008.
Arbitrary file overwrite and other abuses through M3U parser and browsers plugins.
- ^«CVE-2012-0677 — Heap-based buffer overflow in Apple iTunes before 10.6.3 allows remote attackers to execute arbitrar — CVE-Search». cve.circl.lu.
- ^«CVE-2000-0624 : Buffer overflow in Winamp 2.64 and earlier allows remote attackers to execute arbitrary commands via a long #EXTINF: ext». www.cvedetails.com.
- ^«247 search results». Packet Storm. Retrieved 2018-01-23.
- ^«Nero 2015 Platinum — System Requirements».
MP3 URL + UTF-8 (M3U8)
- ^ abc«Album List for Winamp». albumlist.sourceforge.net.
- ^ abc[1]
- ^ abc«Data». birdcagesoft. Retrieved 2019-10-21.
- ^ ab</«About the Common Media Application Format with HTTP Live Streaming | Apple Developer Documentation». developer.apple.com.R. Pantos; W. May (August 2007). «RFC 8216: HTTP Live Streaming». IETF. ISSN 2070-1721.
- ^ abPantos, Roger; May, William. «HTTP Live Streaming». tools.ietf.org.
- ^«Media Types». www.iana.org.
- ^«Data». iana. Retrieved 2019-10-21.
- ^ ab«Simplified Adaptive Video Streaming: Announcing support for HLS and DASH in Windows 10 – IEBlog». blogs.msdn.microsoft.com.
- ^«HTMLVideoElement». MDN Web Docs.
- ^[2]
- ^«DigiLinX Application Note — Creating Playlists to Work with the Streaming Music Manager»(PDF). 2007-10-05.
- ^«Mp3tag Help — Configuration > Export». help.mp3tag.de.
- ^«Mp3tag Help — Configuration > Playlist». help.mp3tag.de.
- ^«Mp3tag Help — Scripting functions». help.mp3tag.de.
- ^«Loading…»astroplayer.com. Archived from the original on December 1, 2009.
- ^«Astro Player (old) — Sidenis LLC». Archived from the original on March 3, 2016.
- ^«Astro Player — Sidenis LLC». Archived from the original on March 3, 2016.
- ^«n7player Music Player — Apps on Google Play». play.google.com.
- ^«n7player 1.0 — Apps on Google Play». play.google.com.
- ^Hindley, Nathan. «XMPlay 3.8.2». XMPlay. Un4seen Developments. Retrieved 11 July 2016.
External linksEdit
- «Unofficial M3U and PLS file specification». Forum. Tech Support Greatest Hits. WinAmp. 2008 [2001].
- Gonze, Lucas (2003). «ey of playlist formats». Draft.
- May, W. (2017). Pantos, R. (ed.). «HTTP Live Streaming specifica». Draft. IETF.
Includes M3U and M3U8
</ Как всегда, зависая вконтакте, я решил скачать пару новых аудиозаписей на комп. Но меня ждало разочарование: аудиозаписи возвращались в каком-то странном формате: m3u8. Этот формат даже vlc media pleyer не воспроизводил, и я стал думать, что делать…
Что собственно то делать?
Погуглив, что это собственно за формат такой .m3u8, я понял, что это аудио в формате .m3u. Отлично, скачиваем этот файл .m3u8, открываем с помощью текстового редактора и видим примерно вот такой текст: Текст
#EXTM3U #EXT-X-TARGETDURATION:3 #EXT-X-ALLOW-CACHE:YES #EXT-X-PLAYLIST-TYPE:VOD #EXT-X-VERSION:3 #EXT-X-MEDIA-SEQUENCE:1 #EXTINF:1.000, 6cfGpgIDcrZjA.ts?extra=0F4d1n-wWV6igsS5Ji7x6gYIbtU_aRzsiByqvrumv4W1iznLLoiC552LnsmyKeuuOtw70WTqfYdDCir-nmlL3VlLR9i2Y6IPOudQxWPbZjlslXE7prmIvdLyoLxb3A9NFnHo2KR5NStPg1sk6ZVXrYBh #EXTINF:2.000, c2d2tpKzIsYzM.ts?extra=0F4d1n-wWV6igsS5Ji7x6gYIbtU_aRzsiByqvrumv4W1iznLLoiC552LnsmyKeuuOtw70WTqfYdDCir-nmlL3VlLR9i2Y6IPOudQxWPbZjlslXE7prmIvdLyoLxb3A9NFnHo2KR5NStPg1sk6ZVXrYBh #EXTINF:3.000, a3fWlvLDwmZD4.ts?extra=0F4d1n-wWV6igsS5Ji7x6gYIbtU_aRzsiByqvrumv4W1iznLLoiC552LnsmyKeuuOtw70WTqfYdDCir-nmlL3VlLR9i2Y6IPOudQxWPbZjlslXE7prmIvdLyoLxb3A9NFnHo2KR5NStPg1sk6ZVXrYBh #EXTINF:3.000, edeWZhKTUnazE.ts?extra=0F4d1n-wWV6igsS5Ji7x6gYIbtU_aRzsiByqvrumv4W1iznLLoiC552LnsmyKeuuOtw70WTqfYdDCir-nmlL3VlLR9i2Y6IPOudQxWPbZjlslXE7prmIvdLyoLxb3A9NFnHo2KR5NStPg1sk6ZVXrYBh #EXTINF:3.000, 9df2NqJzcmZj0.ts?extra=0F4d1n-wWV6igsS5Ji7x6gYIbtU_aRzsiByqvrumv4W1iznLLoiC552LnsmyKeuuOtw70WTqfYdDCir-nmlL3VlLR9i2Y6IPOudQxWPbZjlslXE7prmIvdLyoLxb3A9NFnHo2KR5NStPg1sk6ZVXrYBh #EXT-X-ENDLIST
Дальше понимаем, что
9df2NqJzcmZj0.ts?extra=0F4d1n-wWV6igsS5Ji7x6gYIbtU_aRzsiByqvrumv4W1iznLLoiC552LnsmyKeuuOtw70WTqfYdDCir-nmlL3VlLR9i2Y6IPOudQxWPbZjlslXE7prmIvdLyoLxb3A9NFnHo2KR5NStPg1sk6ZVXrYBh
— путь к аудиозаписи. То есть надо подставить к каждому пути хост и, скорее всего, это аудио станет проигрываемым. Быстренько набросав на питоне пару строк кода реализуем это: Код
import re text='''#EXTM3U #EXT-X-TARGETDURATION:3 #EXT-X-ALLOW-CACHE:YES #EXT-X-PLAYLIST-TYPE:VOD #EXT-X-VERSION:3 #EXT-X-MEDIA-SEQUENCE:1 #EXTINF:1.000, 6cfGpgIDcrZjA.ts?extra=0F4d1n-wWV6igsS5Ji7x6gYIbtU_aRzsiByqvrumv4W1iznLLoiC552LnsmyKeuuOtw70WTqfYdDCir-nmlL3VlLR9i2Y6IPOudQxWPbZjlslXE7prmIvdLyoLxb3A9NFnHo2KR5NStPg1sk6ZVXrYBh #EXTINF:2.000, c2d2tpKzIsYzM.ts?extra=0F4d1n-wWV6igsS5Ji7x6gYIbtU_aRzsiByqvrumv4W1iznLLoiC552LnsmyKeuuOtw70WTqfYdDCir-nmlL3VlLR9i2Y6IPOudQxWPbZjlslXE7prmIvdLyoLxb3A9NFnHo2KR5NStPg1sk6ZVXrYBh #EXTINF:3.000, a3fWlvLDwmZD4.ts?extra=0F4d1n-wWV6igsS5Ji7x6gYIbtU_aRzsiByqvrumv4W1iznLLoiC552LnsmyKeuuOtw70WTqfYdDCir-nmlL3VlLR9i2Y6IPOudQxWPbZjlslXE7prmIvdLyoLxb3A9NFnHo2KR5NStPg1sk6ZVXrYBh #EXTINF:3.000, edeWZhKTUnazE.ts?extra=0F4d1n-wWV6igsS5Ji7x6gYIbtU_aRzsiByqvrumv4W1iznLLoiC552LnsmyKeuuOtw70WTqfYdDCir-nmlL3VlLR9i2Y6IPOudQxWPbZjlslXE7prmIvdLyoLxb3A9NFnHo2KR5NStPg1sk6ZVXrYBh #EXTINF:3.000, 9df2NqJzcmZj0.ts?extra=0F4d1n-wWV6igsS5Ji7x6gYIbtU_aRzsiByqvrumv4W1iznLLoiC552LnsmyKeuuOtw70WTqfYdDCir-nmlL3VlLR9i2Y6IPOudQxWPbZjlslXE7prmIvdLyoLxb3A9NFnHo2KR5NStPg1sk6ZVXrYBh #EXT-X-ENDLIST''' host='https://cs9-5v4.vkuseraudio.net/p16/d5fce44eae6dbc/' al = re.findall('n.+?.ts?extra=.+?n',text) for r in al: text=text.replace(r,'n'+host+r.strip('n')+'n') print(text) input()
и получаем уже играбельный .m3u файл. НО! Проблема в том, что:
- Этот файл можно проигрывать только пока ссылки на промежутки аудио действительны
- Конвертировать файл можно только на том компьютере, на котором он был получен т.к. ссылки привязана к ip адресу пк.
Поняв все это я решил написать программу на клиентском js, чтобы ее можно было исполнять в командной строке. Вот что у меня получилось: Программа
class music_get{ constructor(){ this.el=document.getElementsByClassName("audio_row"); this.str_param=[]; this.json=[]; this.last_len=this.el.length; this.make_str(this.el); this.load_audio_to_json(0,this.str_param[0]); } parse(element_){ //функция, возвращающая id аудио, который надо передать в запросе, чтобы получить ссылку. //let i=JSON.parse(element_.attributes['data-audio'].nodeValue),s1=i[13].split("/"); //return i[1]+"_"+i[0]+"_"+s1[2]+"_"+s1[s1.length-2]; let i = AudioUtils.asObject(JSON.parse(element_.getAttribute('data-audio'))); return i.fullId+"_"+i.actionHash+"_"+i.urlHash; } encode_url(t) { //функция, декодирующая ссылку на аудиозапись let c = {v:(t)=> { return t.split('').reverse().join('')},r: (t, e) => {t = t.split('');for (let i, o = _ + _, a = t.length; a--; ) ~(i = o.indexOf(t[a])) && (t[a] = o.substr(i - e, 1));return t.join('')}, s: (t,e)=> { let i = t.length;if (i) { let o = function(t, e) {let i = t.length,o = [];if (i) {let a = i;for (e = Math.abs(e); a--; ) e = (i * (a + 1) ^ e + a) % i,o[a] = e }return o}(t, e), a = 0;for (t = t.split(''); ++a {return c.s(t, e ^ vk.id)},x: (t, e)=> {let i = [];return e = e.charCodeAt(0),each(t.split(''), (t, o) => {i.push(String.fromCharCode(o.charCodeAt(0) ^ e))}),i.join('')} },_ = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMN0PQRSTUVWXYZO123456789+/=',h=(t)=>{ if (!t || t.length % 4 == 1) return !1;for (var e, i, o = 0, a = 0, s = ''; i = t.charAt(a++); ) ~(i = _.indexOf(i)) && (e = o % 4 ? 64 * e + i : i, o++ % 4) && (s += String.fromCharCode(255 & e >> ( - 2 * o & 6)));return s}; if ((!window.wbopen || !~(window.open + '').indexOf('wbopen')) && ~t.indexOf('audio_api_unavailable')) { let e = t.split('?extra=')[1].split('#'),i=''===e[1]?'':h(e[1]); if (e = h(e[0]), 'string' != typeof i || !e) return t;for (var o, a, s = (i = i ? i.split(String.fromCharCode(9)) : []).length; s--; ) {if (o = (a = i[s].split(String.fromCharCode(11))).splice(0, 1, e) [0], !c[o]) return t; e = c[o].apply(null, a)}if (e && 'http' === e.substr(0, 4)) return e}return t } end(){ //для каждой аудиозаписи в html код добавляем кнопку each(this.json,(_,item)=>{ let els = document.querySelectorAll('[data-full-id="'+item.fullId+'"]')[0]; if(els.children[0].children[6].children.length===3)return; els.children[0].children[6].innerHTML+="" els.children[0].children[6].children[2].attributes.info=item; }); } make_str(mass){ //функция, добавляющая в массив str_param строки с id аудио, которые будут передаваться в запросе. each(mass,(i,e)=>{ if(Math.floor(i/10)===i/10) this.str_param.push(this.parse(e)); else this.str_param[this.str_param.length-1]+=","+this.parse(e); }); } load_audio_to_json(i,l){ //посылаем запрос на сервер вк, в котором в ответ приходит массив с аудио, //каждый элемент которого мы добавляем в массив this.json ajax.post("/al_audio.php",{act:'reload_audio',al:'1',ids:l},{onDone:(a)=>{ //each - функция, которая есть на сайте vk.com - похожа на array.forEach each(a,(_,c)=>{ c=AudioUtils.asObject(c); //ну естественно декодируем ссылку, как же без этого) c.url = this.encode_url(c.url); this.json.push(c); }); //рекурсия if(this.str_param.length-1===i) this.end(); else this.load_audio_to_json(i+1,this.str_param[i+1]); }}); } _update_scroll(){ //функция, вызывающаяся при скролле страницы. if(this.el.length===this.last_len)return; let c = this.el.length,offset=c-this.last_len; this.last_len=c; let arr = Array.from(this.el).splice(-offset); this._load_button(arr); } _load_button(list){ //функция, которая подгружает новые кнопки. let leng=this.str_param.length-1; this.make_str(list); this.load_audio_to_json(leng,this.str_param[leng]); } } class music_download{ //constructor(){} download(e){ this.info = e.attributes.info; //если формат аудио - .mp3, то просто открываем ссылку в новом окне if(this.info.url.indexOf(".mp3?")!==-1) window.open(this.info.url); else //с недавнего времени вк стало поддерживать формат .m3u8, который является аудиоплейлистом(текстом), //в котором содержатся ссылки на промежутки аудио .ts, но ссылки без хоста. //Исправим это следуюшей функцией response: fetch(this.info.url).then((e)=>e.text().then((e)=>this.response(e))); } response(data){ let alls = data.match(/n.+?.ts?/ig), host=this.info.url.split("index.m3u8")[0]; each(alls,(_,e)=>data=data.replace(e,"n"+host+e.replace('n',''))); //скачиваем полученный файл this.download_data(this.info.title.replace(/[-/\:*?"|]/gim,'')+".m3u8",data); } download_data(f_n, t) { let e = document.createElement('a'); e.setAttribute('href', //'data:text/plain;charset=utf-8,' 'data:text/html;base64,'+ btoa(t)); e.setAttribute('download', f_n); e.style.display = 'none'; document.body.appendChild(e); e.click(); document.body.removeChild(e); } } var mus = new music_get(); //функция скролла window.onscroll=()=>mus._update_scroll();
В результате получается примерно вот, что: Дальше, скачав все аудио в одну папку, я написал следующий код на питоне, чтобы конвертировать все аудио .m3u8 в .ts: Код
import requests,re,os def convert_mp3(f): z=open(f).read() con=list(map(lambda e: e.rstrip('n').rstrip('#EXT-X-ENDLIST').rstrip("n") if '#EXTM3U' not in e else '' ,re.split('#EXTINF:d+.d+,n',z))) z = b'' for r in con: if(r==''):continue; z+=requests.get(r).content open(f.strip(".m3u8")+".ts",'bw').write(z) z=set() for file in os.listdir(): if file.endswith(".m3u8"): z.add(file) convert_mp3(file) z=',n'.join(z) input(f"Файлы:{z} переконвертированны.nНажмите Enter, чтобы выйти!")
Впринципе, можно попытаться соединить отрывки .ts на js и потом скачать весь файл, но у меня не получилось (P.S. у кого получится — пишите в комментарииP.P.S. Забыл сказать, что яндекс.браузер до сих пор возвращает ссылки на .mp3)
Update:
Как правильно заметил можно скачивать сразу mp3: код
class music_get{ constructor(){ this.el=document.getElementsByClassName("audio_row"); this.s=[]; this.j=[]; this.last_len=this.el.length; this.make_str(this.el); this.load_audio_to_json(0,this.s[0]); } parse(element_){ //функция, возвращающая id аудио, который надо передать в запросе, чтобы получить ссылку. //let i=JSON.parse(element_.attributes['data-audio'].nodeValue),s1=i[13].split("/"); //return i[1]+"_"+i[0]+"_"+s1[2]+"_"+s1[s1.length-2]; let i = AudioUtils.asObject(JSON.parse(element_.getAttribute('data-audio'))); return i.fullId+"_"+i.actionHash+"_"+i.urlHash; } encode_url(t) { //функция, декодирующая ссылку на аудиозапись let c = {v:(t)=> { return t.split('').reverse().join('')},r: (t, e) => {t = t.split('');for (let i, o = _ + _, a = t.length; a--; ) ~(i = o.indexOf(t[a])) && (t[a] = o.substr(i - e, 1));return t.join('')}, s: (t,e)=> { let i = t.length;if (i) { let o = function(t, e) {let i = t.length,o = [];if (i) {let a = i;for (e = Math.abs(e); a--; ) e = (i * (a + 1) ^ e + a) % i,o[a] = e }return o}(t, e), a = 0;for (t = t.split(''); ++a {return c.s(t, e ^ vk.id)},x: (t, e)=> {let i = [];return e = e.charCodeAt(0),each(t.split(''), (t, o) => {i.push(String.fromCharCode(o.charCodeAt(0) ^ e))}),i.join('')} },_ = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMN0PQRSTUVWXYZO123456789+/=',h=(t)=>{ if (!t || t.length % 4 == 1) return !1;for (var e, i, o = 0, a = 0, s = ''; i = t.charAt(a++); ) ~(i = _.indexOf(i)) && (e = o % 4 ? 64 * e + i : i, o++ % 4) && (s += String.fromCharCode(255 & e >> ( - 2 * o & 6)));return s}; if ((!window.wbopen || !~(window.open + '').indexOf('wbopen')) && ~t.indexOf('audio_api_unavailable')) { let e = t.split('?extra=')[1].split('#'),i=''===e[1]?'':h(e[1]); if (e = h(e[0]), 'string' != typeof i || !e) return t;for (var o, a, s = (i = i ? i.split(String.fromCharCode(9)) : []).length; s--; ) {if (o = (a = i[s].split(String.fromCharCode(11))).splice(0, 1, e) [0], !c[o]) return t; e = c[o].apply(null, a)}if (e && 'http' === e.substr(0, 4)) return e}return t } end(){ //для каждой аудиозаписи в html код добавляем кнопку each(this.j,(_,i)=>{ let e = document.querySelectorAll('[data-full-id="'+i.fullId+'"]')[0],q=e.children[0].children[6]; if(q.children.length===3)return; q.innerHTML+="" }); } _g(info){ if(info.url.indexOf(".mp3?")!==-1) return info.url; else return info.url.replace("/index.m3u8",".mp3").replace(//w{11}//,'/'); } make_str(mass){ //функция, добавляющая в массив s строки с id аудио, которые будут передаваться в запросе. each(mass,(i,e)=>{ if(Math.floor(i/10)===i/10) this.s.push(this.parse(e)); else this.s[this.s.length-1]+=","+this.parse(e); }); } load_audio_to_json(i,l){ //посылаем запрос на сервер вк, в котором в ответ приходит массив с аудио, //каждый элемент которого мы добавляем в массив this.j ajax.post("/al_audio.php",{act:'reload_audio',al:'1',ids:l},{onDone:(a)=>{ //each - функция, которая есть на сайте vk.com - похожа на array.forEach each(a,(_,c)=>{ c=AudioUtils.asObject(c); //ну естественно декодируем ссылку, как же без этого) c.url = this.encode_url(c.url); this.j.push(c); }); //рекурсия if(this.s.length-1===i) this.end(); else this.load_audio_to_json(i+1,this.s[i+1]); }}); } _update_scroll(){ //функция, вызывающаяся при скролле страницы. if(this.el.length===this.last_len)return; let c = this.el.length,offset=c-this.last_len; this.last_len=c; let arr = Array.from(this.el).splice(-offset); this._load_button(arr); } _load_button(list){ //функция, которая подгружает новые кнопки. let leng=this.s.length-1; this.make_str(list); this.load_audio_to_json(leng,this.s[leng]); } } //функция скролла var m = new music_get(); window.onscroll=()=>m._update_scroll();
сжатый код:
eval(function(p,a,c,k,e,r){e=function(c){return(c35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\b'+e(c)+'\b','g'),k[c]);return p}('8 p=7(){5.y=O.1a("1b");5.s=[];5.j=[];5.C=5.y.o;5.J(5.y);5.D(0,5.s[0])};p.q.E=7(a){a=P.Q(1c.E(a.1d("R-1e")));n a.S+"T"+a.1f+"T"+a.1g};p.q.U=7(a){8 b={v:7(a){n a.t("").1h().F("")},r:7(a,b){a=a.t("");A(8 k=1i 0,e=d+d,c=a.o;c--;)~(k=e.B(a[c]))&&(a[c]=e.V(k-b,1));n a.F("")},s:7(a,b){8 c=a.o;u(c){8 e=b,d=a.o,f=[];u(d){8 g=d;A(e=W.1j(e);g--;)e=(d*(g+1)^e+g)%d,f[g]=e}e=0;A(a=a.t("");++e2*e&6)));n f};u((!M.Z||!~(M.1p+"").B("Z"))&&~a.B("1q")){8 f=a.t("?1r=")[1].t("#"),g=""===f[1]?"":c(f[1]);u(f=c(f[0]),"1s"!=1t g||!f)n a;A(8 h,l=(g=g?g.t(H.I(9)):[]).o;l--;){u(h=(c=g[l].t(H.I(11))).K(0,1,f)[0],!b[h])n a;f=b[h].1u(1v,c)}u(f&&"1w"===f.V(0,4))n f}n a};p.q.12=7(){8 a=5;G(5.j,7(b,d){8 c=O.1x('[R-1y-X="'+d.S+'"]')[0].N[0].N[6];3!==c.N.o&&(c.1z+="")})};p.q.13=7(a){n-1!==a.z.B(".16?")?a.z:a.z.17("/1M.1N",".16").17(/\/\w{11}\//,"/")};p.q.J=7(a){8 b=5;G(a,7(a,c){W.1O(a/10)===a/10?b.s.L(b.E(c)):b.s[b.s.o-1]+=","+b.E(c)})};p.q.D=7(a,b){8 d=5;1P.1Q("/1R.1S",{1T:"1U",1V:"1",1W:b},{1X:7(b){G(b,7(a,b){b=P.Q(b);b.z=d.U(b.z);d.j.L(b)});d.s.o-1===a?d.12():d.D(a+1,d.s[a+1])}})};p.q.18=7(){u(5.y.o!==5.C){8 a=5.y.o,b=a-5.C;5.C=a;a=1Y.1Z(5.y).K(-b);5.19(a)}};p.q.19=7(a){8 b=5.s.o-1;5.J(a);5.D(b,5.s[b])};8 m=20 p;M.21=7(){n m.18()};',62,126,'|||||this||function|var|||||||||||||||return|length|music_get|prototype|||split|if||||el|url|for|indexOf|last_len|load_audio_to_json|parse|join|each|String|fromCharCode|make_str|splice|push|window|children|document|AudioUtils|asObject|data|fullId|_|encode_url|substr|Math|id|charCodeAt|wbopen|||end|_g|40px|5px|mp3|replace|_update_scroll|_load_button|getElementsByClassName|audio_row|JSON|getAttribute|audio|actionHash|urlHash|reverse|void|abs|vk|abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMN0PQRSTUVWXYZO123456789|charAt|64|255|open|audio_api_unavailable|extra|string|typeof|apply|null|http|querySelectorAll|full|innerHTML|href|target|_blank|style|float|right|height|width|background|doc472427950_504561254|no|repeat|index|m3u8|floor|ajax|post|al_audio|php|act|reload_audio|al|ids|onDone|Array|from|new|onscroll'.split('|'),0,{}))
Как вы скачиваете музыку с вконтакте?
- 67.5%через дополнение для браузера
- 19.4%через специальные сайты
- 7.7%через js
- 12.9%через чат-бота VkMusicBot
Проголосовали 77 пользователей. Воздержались 69 пользователей.
Форматы файлов
Добавить в закладки и поделиться
Чтобы добавить описание формата файла в закладки, щелкните здесь или
Поиск файлов с поддерживаемым форматом
Введите исходный и конечный форматы файла. Мы проверим, возможно ли такое конвертирование:
Преобразуйте ваш файл в:
Объявление
Формат файлов M3U8 Audio
Файлы M3U8, как и файлы M3U, представляют собой файлы списков воспроизведения. Они используются в многих медиаплеерах. Форматирование файла списка воспроизведения аналогично форматированию файлов M3U. При этом файлы M3U8 используют стандарт кодирования символов UTF-8. Это превращает плейлисты M3U8 в более подходящее средство хранения плейлистов, содержащих песни с названиями, написанными на разных языках с разными наборами символов.
Технические сведения о файлах M3U8
Между файлами M3U и M3U8 не существует никакой разницы, кроме используемой кодировки символов. Файлы M3U также могут использовать кодировку UTF-8, однако этот формат плейлистов чаще всего использует другие кодировки. M3U8 использует исключительно UTF-8. Текстовый файл содержит информацию о расположении песен в списке воспроизведения.
Дополнительная информация о формате M3U8
Расширение файла | .m3u8 |
Категория файлов | Audio |
Файл-пример | Загрузите файл example.m3u8 (0,02 KiB) |
Связанные программы | |
Полезные ссылки | Узнайте больше о M3U8 здесь |
Разработчики | N/A |
Конвертируйте ваш файл M3U8 в другой формат
Объявление
- https://fb.ru/article/469692/chto-eto-za-format-m-u-chem-otkryit-fayl
- https://www.azfiles.ru/extension/m3u8.html
- https://en.wikipedia.org/wiki/m3u
- https://habr.com/post/457438/
- https://www.online-convert.com/ru/file-format/m3u8