Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Опять про mp3 Добавлено: 07.07.04 23:01  

Автор вопроса:  Neco | Web-сайт: neco.pisem.net | ICQ: 247906854 
Я уже задавал этот вопрос, но мне никто не ответил. 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()
    ;Dim fNum As Integer
    ;Dim sTagIdent As String * 3
    ;Dim sTitle As String * 30
    ;Dim sArtist As String * 30
    ;Dim sAlbum As String * 30
    ;Dim sYear As String * 4
    ;Dim 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-сайт: xury.zx6.ru
 Профиль | | #5
Добавлено: 10.07.04 05:58
2San, ты гений! А как открыть файл для бинари, опять забыл, не мог бы помочь? :-/

Ответить

Номер ответа: 6
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #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

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам