Страница: 1 |
Страница: 1 |
Вопрос: Опять про mp3
Добавлено: 07.07.04 23:01
Автор вопроса: Neco | Web-сайт:
Я уже задавал этот вопрос, но мне никто не ответил. 8(
Как узнать инфу (не тэги!) о файле мп3? Т.е. битность, кол-во каналов и частоту?
Заранее спасибо за ответ!
Ответы
Всего ответов: 7
Номер ответа: 1
Автор ответа:
dNW
Вопросов: 30
Ответов: 683
Профиль | | #1
Добавлено: 08.07.04 07:30
Контрол наверно какой-то мп3шный нужен, который их читает
Номер ответа: 2
Автор ответа:
Chill
ICQ: 554200
Вопросов: 101
Ответов: 343
Профиль | | #2
Добавлено: 09.07.04 14:32
Private Sub Form_Load()
 im fNum As Integer
 im sTagIdent As String * 3
 im sTitle As String * 30
 im sArtist As String * 30
 im sAlbum As String * 30
 im sYear As String * 4
 im sComment As String * 30
fNum = FreeFile
'Замените ярлык 'c:\MySong.mp3' любым вашим файлом.
Open "c:\MySong.mp3" For Binary As fNum
Seek #fNum, LOF(fNum) - 127
Get #fNum, , sTagIdent
If sTagIdent = "TAG" Then
Get #fNum, , sTitle
Get #fNum, , sArtist
Get #fNum, , sAlbum
Get #fNum, , sYear
Get #fNum, , sComment
End If
Close #fNum
MsgBox sTitle & "," & sArtist & "," & sAlbum & "," & sYear & "," & sComment
End Sub
Номер ответа: 3
Автор ответа:
Chill
ICQ: 554200
Вопросов: 101
Ответов: 343
Профиль | | #3
Добавлено: 09.07.04 14:33
И мыло посмотри...
Номер ответа: 4
Автор ответа:
2San
Вопросов: 11
Ответов: 68
Профиль | | #4
Добавлено: 09.07.04 20:29
Структура MPEG аудио-файла.
Файл состоит из одного или нескольких фреймов.
Фрейм имеет заголок и данные.
Длина фрейма.
Длина фрейма определяется форматом MPEG, и может менятся.
Фрейм кончается там, где начинается следующий. (см. Заголовок фрейма)
Заголовок фрейма.
Заголовк фрейма состоит из 4-ех байт, с которых начинается каждый фрейм. Заголовок у каждого фрейма может быть разным.
Байт 0 1 2 3
binary 11111111 111aabbc ddddeefg hhjjkmpp
1 - Синхронизация
a - Версия
b - Layer
c - Защита от ошибок
d - Код битрейта
e - Код sample rate
f - Padding
g - Extension
h - Каналы
j - Mode extension
k - Сopyright
m - Original
p - Emphasis
1 - Синхронизация.
Должен быть: 11111111 111xxxxx
a - Версия
0 = mpeg 2.5
2 = mpeg 2
3 = mpeg 1
b - Layer
3 = layer I
2 = layer II
1 = layer III
c - Защита от ошибок.
0 = on
1 = off
d - Код битрейта.
mpeg 1
(hex) layer I layer II layer III
$0 0 0 0
$1 32 32 32
$2 64 48 40
$3 96 56 48
$4 128 64 56
$5 160 80 64
$6 192 96 80
$7 224 112 96
$8 256 128 112
$9 288 160 128
$a 320 192 160
$b 352 224 192
$c 384 256 224
$d 416 320 256
$e 448 384 320
mpeg 2, mpeg 2.5
(hex) layer I layer II layer III
$0 0 0 0
$1 32 8 8
$2 48 16 16
$3 56 24 24
$4 64 32 32
$5 80 40 40
$6 96 48 48
$7 112 56 56
$8 128 64 64
$9 144 80 80
$a 160 96 96
$b 176 112 112
$c 192 128 128
$d 224 144 144
$e 256 160 160
e - Код sample rate.
mpeg 1 mpeg 2 mpeg 2.5
0 = 44100 Hz 22050 Hz 11025 Hz
1 = 48000 Hz 24000 Hz 12000 Hz
2 = 32000 Hz 16000 Hz 8000 Hz
f - Padding.
1 = unused bits are filled (padding required)
0 = all bits in frame are used
g - Extension.
0 = none
1 = private
h - Channel mode
0 = stereo
1 = joint stereo
2 = dual channel
3 = mono
j = Mode extension.
Только для Join-Stereo
layer I & II layer III
0 = 4 0
1 = 8 4
2 = 12 8
3 = 16 16
k - Copyright.
0 = no
1 = yes
m - Original.
0 = no
1 = yes
p - Emphasis.
0 = none
1 = 50/15 microseconds
2 = "reserved" must not be used !
3 = CITT j.17
Подсчет длины фреймов:
mpeg 1
layer I :
frame_lenght = (48000*bitrate)/sampling_freq + padding
layer II & III :
frame_lenght = (144000*bitrate)/sampling_freq + padding
mpeg 2
layer I:
frame_lenght = (24000*bitrate)/sampling_freq + padding
layer II & III:
frame_lenght = (72000*bitrate)/sampling_freq + padding
Расчет продолжительности трека:
track_time = Int((file_size / frame_lenght) / 38.5) '38.5 Frames per Second
Номер ответа: 5
Автор ответа:
Morpheus
Вопросов: 224
Ответов: 3777
Web-сайт:
Профиль | | #5
Добавлено: 10.07.04 05:58
2San, ты гений! А как открыть файл для бинари, опять забыл, не мог бы помочь?
Номер ответа: 6
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #6
Добавлено: 10.07.04 12:01
dim nf as integer:nf=freefile
open sFileName for binary access as nf
.......
close nf
Можешь еще в поиске форума поискать вот это "for binary", я думаю что совпадений двадцать точно будет
Номер ответа: 7
Автор ответа:
2San
Вопросов: 11
Ответов: 68
Профиль | | #7
Добавлено: 10.07.04 12:12
Dim d(3) As Byte
Open "C:\file.mp3" For Binarry As #1
Get #1, , d
Close
If (d(0) = 255 AND (d(1) AND &HE0) = &HE0) Then 'проверяем синхронизацию
'обрабатываем остальные байты массива b
End If