как узнать длину аудиофайла?

AndreyAAA

Client
Регистрация
07.05.2016
Сообщения
1 201
Благодарностей
74
Баллы
48
Можно ли как то просто узнать длительность аудио файла?
 

ZULI

Client
Регистрация
09.09.2020
Сообщения
423
Благодарностей
165
Баллы
43
Интилект предлагает такой вариант

C#:
using NAudio.Wave;
using System;

class Program
{
    static void Main()
    {
        string audioFilePath = "путь_к_вашему_файлу.mp3"; // Замените на путь к вашему аудио файлу

        // Используем WaveFileReader для чтения информации о звуковом файле
        using (var audioFile = new AudioFileReader(audioFilePath))
        {
            // Длительность в секундах
            double durationInSeconds = audioFile.TotalTime.TotalSeconds;

            Console.WriteLine($"Длительность аудио файла: {durationInSeconds} секунд");
        }
    }
}
Думаю можноадаптировать под зену.
 

zombie

Client
Регистрация
14.08.2012
Сообщения
479
Благодарностей
117
Баллы
43
Я делал с помощью TagLibSharp.dll
Надо добавить либу и выполнить код

C#:
string file_path = project.Variables["file_path"].Value; // тут свой путь к mp3 файлу например

return TagLib.File.Create(file_path).Properties.Duration.Seconds;
 

Вложения

  • Спасибо
Реакции: AndreyAAA

AndreyAAA

Client
Регистрация
07.05.2016
Сообщения
1 201
Благодарностей
74
Баллы
48
Интилект предлагает такой вариант

C#:
using NAudio.Wave;
using System;

class Program
{
    static void Main()
    {
        string audioFilePath = "путь_к_вашему_файлу.mp3"; // Замените на путь к вашему аудио файлу

        // Используем WaveFileReader для чтения информации о звуковом файле
        using (var audioFile = new AudioFileReader(audioFilePath))
        {
            // Длительность в секундах
            double durationInSeconds = audioFile.TotalTime.TotalSeconds;

            Console.WriteLine($"Длительность аудио файла: {durationInSeconds} секунд");
        }
    }
}
Думаю можноадаптировать под зену.
Мне этот код чатгп давал, я несколько часов ему обьяснял что мне нужна переменная там, короче не получилось все равно
 

AndreyAAA

Client
Регистрация
07.05.2016
Сообщения
1 201
Благодарностей
74
Баллы
48
Я делал с помощью TagLibSharp.dll
Надо добавить либу и выполнить код

C#:
string file_path = project.Variables["file_path"].Value; // тут свой путь к mp3 файлу например

return TagLib.File.Create(file_path).Properties.Duration.Seconds;
Спасибо проверю сейчас)
 

AndreyAAA

Client
Регистрация
07.05.2016
Сообщения
1 201
Благодарностей
74
Баллы
48
Компиляция кода Ошибка в действии "CS0103" "The name 'TagLib' does not exist in the current context". [Строка: 5; Cтолбец: 8]
скопирова фаил dll в директорию нужную, запустил, и не работает(
 

Meteorburn

Client
Регистрация
23.05.2016
Сообщения
1 448
Благодарностей
564
Баллы
113
Ещё один вариант через ffprobe (составная часть ffmpeg) с расширенной инфой в JSON формате. Получает длину как у видео, так и у аудио файлов. Тестовый шаблон прикрепил.

На выходе:
118346

118341

json info:
{
    "streams": [
        {
            "index": 0,
            "codec_name": "mp3",
            "codec_long_name": "MP3 (MPEG audio layer 3)",
            "codec_type": "audio",
            "codec_tag_string": "[0][0][0][0]",
            "codec_tag": "0x0000",
            "sample_fmt": "fltp",
            "sample_rate": "44100",
            "channels": 2,
            "channel_layout": "stereo",
            "bits_per_sample": 0,
            "initial_padding": 0,
            "r_frame_rate": "0/0",
            "avg_frame_rate": "0/0",
            "time_base": "1/14112000",
            "start_pts": 353600,
            "start_time": "0:00:00.025057",
            "duration_ts": 2066227200,
            "duration": "0:02:26.416327",
            "bit_rate": "128000",
            "disposition": {
                "default": 0,
                "dub": 0,
                "original": 0,
                "comment": 0,
                "lyrics": 0,
                "karaoke": 0,
                "forced": 0,
                "hearing_impaired": 0,
                "visual_impaired": 0,
                "clean_effects": 0,
                "attached_pic": 0,
                "timed_thumbnails": 0,
                "non_diegetic": 0,
                "captions": 0,
                "descriptions": 0,
                "metadata": 0,
                "dependent": 0,
                "still_image": 0
            },
            "tags": {
                "encoder": "LAME3.99r"
            },
            "side_data_list": [
                {
                    "side_data_type": "Replay Gain"
                }
            ]
        }
    ],
    "chapters": [

    ],
    "format": {
        "filename": "D:\\Downloads\\VideoAudioAnalysis\\\\files\\audio.mp3",
        "nb_streams": 1,
        "nb_programs": 0,
        "format_name": "mp3",
        "format_long_name": "MP2/3 (MPEG audio layer 2/3)",
        "start_time": "0:00:00.025057",
        "duration": "0:02:26.416327",
        "size": "2343078",
        "bit_rate": "128022",
        "probe_score": 51
    }
}
 

Вложения

Последнее редактирование:
  • Спасибо
Реакции: AndreyAAA

AndreyAAA

Client
Регистрация
07.05.2016
Сообщения
1 201
Благодарностей
74
Баллы
48
Ещё один вариант через ffprobe (составная часть ffmpeg) с расширенной инфой в JSON формате. Получает длину как у видео, так и у аудио файлов. Тестовый шаблон прикрепил.

На выходе:
Посмотреть вложение 118346
Посмотреть вложение 118341
json info:
{
    "streams": [
        {
            "index": 0,
            "codec_name": "mp3",
            "codec_long_name": "MP3 (MPEG audio layer 3)",
            "codec_type": "audio",
            "codec_tag_string": "[0][0][0][0]",
            "codec_tag": "0x0000",
            "sample_fmt": "fltp",
            "sample_rate": "44100",
            "channels": 2,
            "channel_layout": "stereo",
            "bits_per_sample": 0,
            "initial_padding": 0,
            "r_frame_rate": "0/0",
            "avg_frame_rate": "0/0",
            "time_base": "1/14112000",
            "start_pts": 353600,
            "start_time": "0:00:00.025057",
            "duration_ts": 2066227200,
            "duration": "0:02:26.416327",
            "bit_rate": "128000",
            "disposition": {
                "default": 0,
                "dub": 0,
                "original": 0,
                "comment": 0,
                "lyrics": 0,
                "karaoke": 0,
                "forced": 0,
                "hearing_impaired": 0,
                "visual_impaired": 0,
                "clean_effects": 0,
                "attached_pic": 0,
                "timed_thumbnails": 0,
                "non_diegetic": 0,
                "captions": 0,
                "descriptions": 0,
                "metadata": 0,
                "dependent": 0,
                "still_image": 0
            },
            "tags": {
                "encoder": "LAME3.99r"
            },
            "side_data_list": [
                {
                    "side_data_type": "Replay Gain"
                }
            ]
        }
    ],
    "chapters": [

    ],
    "format": {
        "filename": "D:\\Downloads\\VideoAudioAnalysis\\\\files\\audio.mp3",
        "nb_streams": 1,
        "nb_programs": 0,
        "format_name": "mp3",
        "format_long_name": "MP2/3 (MPEG audio layer 2/3)",
        "start_time": "0:00:00.025057",
        "duration": "0:02:26.416327",
        "size": "2343078",
        "bit_rate": "128022",
        "probe_score": 51
    }
}
Выполнение действия CSharp OwnCode: Run "ffprobe" Instance. Не удается найти указанный файл
Сбойное действие: Run "ffprobe" Instance
Ошибку выдало, только я не понял что это за фаил и где его брать
 

Meteorburn

Client
Регистрация
23.05.2016
Сообщения
1 448
Благодарностей
564
Баллы
113
Выполнение действия CSharp OwnCode: Run "ffprobe" Instance. Не удается найти указанный файл
Сбойное действие: Run "ffprobe" Instance
Ошибку выдало, только я не понял что это за фаил и где его брать
Архив смотрите, там есть все файлы для работы шаблона.
 
  • Спасибо
Реакции: AndreyAAA

Moonwalker

Client
Регистрация
16.03.2016
Сообщения
1 364
Благодарностей
957
Баллы
113
Компиляция кода Ошибка в действии "CS0103" "The name 'TagLib' does not exist in the current context". [Строка: 5; Cтолбец: 8]
скопирова фаил dll в директорию нужную, запустил, и не работает(
В ссылки из GAC добавил же? Или просто положил в папку?
 

AndreyAAA

Client
Регистрация
07.05.2016
Сообщения
1 201
Благодарностей
74
Баллы
48
Получилось, круто), спасибо. Почему то файлы пропали сначала,не заметил.
 

AndreyAAA

Client
Регистрация
07.05.2016
Сообщения
1 201
Благодарностей
74
Баллы
48
А может кто помочь еще? У меня в моем шаблоне уже есть директивы и общий код и ссылки из GAS, как мне добавить то что есть к уже существующим?
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)