Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

C++

Войти
Регистрация
Восстановить пароль
 
oldalexi
1 / 1 / 0
Регистрация: 13.03.2014
Сообщений: 13
#1

Считать Tag из mp3 в wstring - C++

31.01.2015, 16:33. Просмотров 376. Ответов 4
Метки нет (Все метки)

Привет. Мне нужно считать из mp3 файла, исполнителя. Я понял, что нужно:
1) Открыть файл в бинарном виде.
2) Найти позицию от которой нужно читать я это делал так:
C++
1
2
failIn.seekg(sizeof(failIn) - 128) // т.к. тег - 128 байт
int pos = file.tellg();
3) считать в wstring.
C++
1
failIn >> str
Но, при считывание выводится "ерунда". Я точно, что-то делаю неправильно. Но что?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.01.2015, 16:33
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Считать Tag из mp3 в wstring (C++):

wstring - C++
Здраствуите ,вобщем маленькая запара ,хочу узнать возможно ли под WinApi использовать wstring вот пример в чем у меня запара wstring...

Wstring to string как конвертировать - C++
wstring to string как конвертировать Есть текст типа wstring s="fdgd123 2133" как его переделать в string

Получить int из std::wstring - C++ Builder
void __fastcall TAdminForm::DelClick(TObject* Sender) { std::wstring name; name = ((TButton*)Sender)->Name.w_str(); for(int i =...

Свойство tag - C++ Builder
Здравствуйте! У меня создаютса динамически image на форме. У каждной групы етих image есть свой tag! У таймере прописан некий код...

Очистка Edit по Tag -ам - C++ Builder
Привет, подскажите пожалуйста пожалуйста как работать с параметром Tag на который находиться на Object inspector, а именно как очистить...

Работа со свойством Tag - C++ Builder
Есть Image1, Image2...Image10 у них Tag соответсвенно 1,2...10 Так вот, для всех Image нужно обработать функцию MouseMove Я создаю...

4
castaway
Эксперт С++
4884 / 3019 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 10
Завершенные тесты: 1
31.01.2015, 21:03 #2
1. Откуда ты знаешь точную позицию исполнителя в файле?
2. Почему ты решил, что исполнитель записан в том формате, в котором ты его хочешь считать?
0
oldalexi
1 / 1 / 0
Регистрация: 13.03.2014
Сообщений: 13
01.02.2015, 01:18  [ТС] #3
1. на тег отводится 128 байт. Я считываю его полностью и там уже выбираю исполнителя.
2. он может быть записан в string или в wstring(можно открыть блокнотом файл mp3 и там внизу последние 128 байт прочитать)
Я нашёл способ, спасибо, что откликнулся. Может кому пригодится
C++
1
2
3
4
5
6
7
8
9
wifstream failIn(L"D:\\w\\...", ios::ate); 
    if (failIn.is_open())
        cout << "Open" << endl;
    int k = failIn.tellg();
    failIn.seekg(k - 128);
    wstring str;
    getline(failIn, str);
       wcout << str << endl;
/*Тут можно использовать и всё без w*/
0
demmax2004
60 / 138 / 35
Регистрация: 31.10.2014
Сообщений: 721
Записей в блоге: 1
01.02.2015, 10:11 #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//MP3tag.h
 
#ifndef __MP3tag_h
#define __MP3tag_h
 
struct TAGdata
{
    char tag[3];
    char title[30];
    char artist[30];
    char album[30];
    char year[4];
    char comment[30];
    int genre;
};
 
#endif
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
//mp3reader.cpp
//snags the tag off the last 128 bytes of an MP3 file.
 
#include "MP3tag.h"
#include <iostream>
#include <fstream>
#include <string>
 
using namespace std;
 
int main()
{
    TAGdata tagStruct;
    char  fileName[fileNameLength+1];
    ifstream mp3File;
    char buffer[mp3TagSize+1];
 
    cout << "MP3 File Name? ";
    cin.getline(fileName,fileNameLength);
 
    mp3File.open(fileName);
    buffer[mp3TagSize] = '\0';  //just a precaution
 
    if (mp3File){
        cout << "Successful open of " << fileName << endl;
    }else{
        cerr << "***Aborting*** Could not open " << fileName << endl;
        return 1;
    }
 
    //move file pointer to 128 bytes off the end of the file.
    mp3File.seekg(-(mp3TagSize),ios::end);
    if(mp3File.fail()){
        cerr << "Could not seek, Aborting " << endl;
        return 1;
    }
 
    //get the data
    mp3File.read(reinterpret_cast <char *>(&tagStruct),mp3TagSize);
    if(mp3File.fail()){
        cerr << "Could not read after seeking, Aborting " << endl;
        return 1;
    }
 
        mp3File.close();
    return 0;
}
1
oldalexi
1 / 1 / 0
Регистрация: 13.03.2014
Сообщений: 13
01.02.2015, 22:04  [ТС] #5
У Вас намного лучше. Спасибо demmax2004
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.02.2015, 22:04
Привет! Вот еще темы с ответами:

Обработка нажатия кнопки, Tag - C++ Builder
Здравствуйте. На форме 54 кнопки, при нажатии на кнопку в массив должен передаваться её tag. Нашел вот это ((Button)sender)-&gt;Tag, а пример...

Treewiew. Tag. Image. ImageList - C++ Builder
Помогите, пожалуйста. Мне нужно _привязать_ свойство Tag _нескольких_ _определенных_ картинок к _определенному_ родительскому узлу в...

Чтение mp3-tag-ов - C++/CLI
Доброго времени суток всем! Появилась проблема с считыванием тегов из mp3-файлов...Примеры, которые находил считывают теги только в...

ID3-Tag'и из MP3-файла - Delphi
Здравствуйте. Для прочтения ID3 тегов из файла нашёл вот такой код: Процедура читающая теги из MP3: function...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Yandex
Объявления
01.02.2015, 22:04
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru