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

AndreyAAA

Client
Joined
May 7, 2016
Messages
1,257
Reaction score
82
Points
48
Можно ли как то просто узнать длительность аудио файла?
 

ZULI

Client
Joined
Sep 9, 2020
Messages
428
Reaction score
165
Points
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
Joined
Aug 14, 2012
Messages
482
Reaction score
121
Points
43
Я делал с помощью TagLibSharp.dll
Надо добавить либу и выполнить код

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

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

Attachments

  • Thank you
Reactions: AndreyAAA

AndreyAAA

Client
Joined
May 7, 2016
Messages
1,257
Reaction score
82
Points
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
Joined
May 7, 2016
Messages
1,257
Reaction score
82
Points
48
Я делал с помощью TagLibSharp.dll
Надо добавить либу и выполнить код

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

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

AndreyAAA

Client
Joined
May 7, 2016
Messages
1,257
Reaction score
82
Points
48
Компиляция кода Ошибка в действии "CS0103" "The name 'TagLib' does not exist in the current context". [Строка: 5; Cтолбец: 8]
скопирова фаил dll в директорию нужную, запустил, и не работает(
 

Meteorburn

Client
Joined
May 23, 2016
Messages
1,493
Reaction score
579
Points
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
    }
}
 

Attachments

Last edited:
  • Thank you
Reactions: AndreyAAA

AndreyAAA

Client
Joined
May 7, 2016
Messages
1,257
Reaction score
82
Points
48
Ещё один вариант через ffprobe (составная часть ffmpeg) с расширенной инфой в JSON формате. Получает длину как у видео, так и у аудио файлов. Тестовый шаблон прикрепил.

На выходе:
View attachment 118346
View attachment 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
Joined
May 23, 2016
Messages
1,493
Reaction score
579
Points
113
Выполнение действия CSharp OwnCode: Run "ffprobe" Instance. Не удается найти указанный файл
Сбойное действие: Run "ffprobe" Instance
Ошибку выдало, только я не понял что это за фаил и где его брать
Архив смотрите, там есть все файлы для работы шаблона.
 
  • Thank you
Reactions: AndreyAAA

Moonwalker

Client
Joined
Mar 16, 2016
Messages
1,768
Reaction score
1,361
Points
113
Компиляция кода Ошибка в действии "CS0103" "The name 'TagLib' does not exist in the current context". [Строка: 5; Cтолбец: 8]
скопирова фаил dll в директорию нужную, запустил, и не работает(
В ссылки из GAC добавил же? Или просто положил в папку?
 

AndreyAAA

Client
Joined
May 7, 2016
Messages
1,257
Reaction score
82
Points
48
Получилось, круто), спасибо. Почему то файлы пропали сначала,не заметил.
 

AndreyAAA

Client
Joined
May 7, 2016
Messages
1,257
Reaction score
82
Points
48
А может кто помочь еще? У меня в моем шаблоне уже есть директивы и общий код и ссылки из GAS, как мне добавить то что есть к уже существующим?
 

Users Who Are Viewing This Thread (Total: 1, Members: 0, Guests: 1)