Форум программистов, компьютерный форум, киберфорум
C#: ASP.NET MVC
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
3 / 3 / 5
Регистрация: 11.11.2015
Сообщений: 413

Прослушать mp3 по ссылке

26.09.2017, 08:21. Показов 3134. Ответов 43
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток, коллеги! Какой самый лучший способ прослушать mp3 при нажатии на ссылку (не скачивать)?

MP3 файлы хранятся в файловой шаре (\\virtualMachine\Records\111.mp3).
Вставить напрямую в тег не получится, файл не будет воспроизводиться:
HTML5
1
<audio src='file:\\virtualMachine\Records\111.mp3' autoplay controls controlsList='nodownload'></audio>
Предполагаю при клике на ссылку "Прослушать запись" отправлять запрос Home/GetRecord(Guid Id), в этом методе копировать запись в wwwroot/Record и возвращать на клиент src до файла.

Здесь возникло пара вопросов.
1. Как скопировать файл из шары в wwroot?
Думаю что то подобное нужно использовать
C#
1
 using (var fileStream = new FileStream(Path.Combine(callsFolder, fileName), FileMode.Create))
, но гугл упорно показывает примеры с UploadFiles(IFormFile file) - не то что нужно
2.Можно ли в
HTML5
1
<audio></audio>
передавать сразу поток, без копирования файла в wwwroot/Record? Если да то не будет ли этот вариант дольше по времени работать?
PS: Спасибо за отзывчивость

Добавлено через 2 минуты
Было бы удобно считать файл в массив байтов, либо поток и передать клиенту, но как скормить тегу <audio> byte[] или streem?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
26.09.2017, 08:21
Ответы с готовыми решениями:

Необходимость запустить по ссылке MediaPlayer для воспроизведения MP3 с моего сайта
Я только учусь создавать WEB страницы и у меня возникла необходимость запустить по ссылке MediaPlayer для воспроизведения MP3 с моего...

Как воспроизвести MP3 файл по ссылке?
Здравствуйте! Имеется ссылка на mp3 файл &quot;http://sait.ru/file.mp3&quot;. Нужно сделать, что бы по нажатию на кнопку этот файл...

Как сделать чтобы файл mp3 загружался по ссылке
Не могу понять как сделать чтобы списком передавались url на файлы типо ...

43
Эксперт .NET
 Аватар для Usaga
14093 / 9310 / 1349
Регистрация: 21.01.2016
Сообщений: 34,973
26.09.2017, 09:52
Alex_trader, в src нужно вставлять нормальный URL ведущий на ваше веб-приложение. А метод действия, на который этот URL будет указывать, уже должен лезть за файлом куда надо (раз файл не в wwwroot лежит) и выдавать браузеру в виде stream. Соответственно, в урле должен быть идентификатор файла, чтобы контроллер знал за каким именно файлом нужно лезть.

Добавлено через 8 минут
И ещё один важный момент: браузер не полезет по URL ведущему в локальные ресурсы машины\сети со страницы полученной от веб-сервера (вопрос безопасности).
0
3 / 3 / 5
Регистрация: 11.11.2015
Сообщений: 413
26.09.2017, 12:06  [ТС]
Usaga, делаю так, но проигрывание аудио не начинается, не подскажете что не так?
C#
1
2
3
4
5
6
7
8
9
10
11
public async Task<IActionResult> GetCallRecord(Guid commutationId)
        {
            if (commutationId == Guid.Empty) return this.BadRequest();
          
            byte[] bytes = await this.WebApiInvoke("CallRegistry/GetCallRecord", "GET", new Dictionary<string, object>{
            {
                "commutationId", commutationId
            }});
            MemoryStream ms = new MemoryStream(bytes);
            return this.File(ms, "audio/mpeg");
        }
Добавлено через 2 минуты
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
 public byte[] GetCallRecord(Guid commutationId)
        {
            try
            {
                var folder = "//share/RecordedFiles/";
                var fileName = "111.mp3";
 
                var filePath = folder + fileName;
                var fileExists = System.IO.File.Exists(filePath);
 
                if (fileExists)
                {
                    return File.ReadAllBytes(filePath);
                }
                else
                {
                    return new byte[0];
                }
            }
            catch (Exception e)
            {
                return new byte[0];
            }
        }
0
Эксперт .NET
 Аватар для Usaga
14093 / 9310 / 1349
Регистрация: 21.01.2016
Сообщений: 34,973
26.09.2017, 12:07
Alex_trader, смотрите в инструментах разработчика, что с сервера возвращается. Смотрите в отладчике, что на сервере происходит. Не вчера же C#-ом занялись.
0
3 / 3 / 5
Регистрация: 11.11.2015
Сообщений: 413
26.09.2017, 12:07  [ТС]
Байты приходят, не пустые, но аудио не воспроизводится
0
Эксперт .NET
 Аватар для Usaga
14093 / 9310 / 1349
Регистрация: 21.01.2016
Сообщений: 34,973
26.09.2017, 12:10
Это что за ерунда такая?

C#
1
2
3
4
            catch (Exception e)
            {
                return new byte[0];
            }
Добавлено через 1 минуту
Alex_trader, теги оформляете как положено, по инструкции?
0
3 / 3 / 5
Регистрация: 11.11.2015
Сообщений: 413
26.09.2017, 12:34  [ТС]
0
3 / 3 / 5
Регистрация: 11.11.2015
Сообщений: 413
26.09.2017, 12:35  [ТС]
Usaga, ответ пришёл норм, тип медиа, как понять причину по которой не воспроизводится звук?
0
Эксперт .NET
 Аватар для Usaga
14093 / 9310 / 1349
Регистрация: 21.01.2016
Сообщений: 34,973
26.09.2017, 12:39
Alex_trader, сложно сказать.

Попробуйте воспроизвести файл на локальной странице. Без веб-серверов. Простейшую страничку сделайте и рядом с ней mp3 нужный бросьте. Начните с этого.
0
3 / 3 / 5
Регистрация: 11.11.2015
Сообщений: 413
26.09.2017, 12:46  [ТС]
HTML5
1
<audio id="15402ba4-74b2-435e-b10d-8bd338299b39" src="CallRegistry/GetCallRecord?commutationId=15402ba4-74b2-435e-b10d-8bd338299b39" autoplay="" controls="" controlslist="nodownload"></audio>
тег в браузере выглядит так
0
Эксперт .NET
 Аватар для Usaga
14093 / 9310 / 1349
Регистрация: 21.01.2016
Сообщений: 34,973
26.09.2017, 12:48
Alex_trader, а если так сделать:

HTML5
1
<audio id="15402ba4-74b2-435e-b10d-8bd338299b39" src="CallRegistry/GetCallRecord?commutationId=15402ba4-74b2-435e-b10d-8bd338299b39" autoplay="autoplay" controls="controls"></audio>
0
3 / 3 / 5
Регистрация: 11.11.2015
Сообщений: 413
26.09.2017, 12:51  [ТС]
Кинул файлик 1.mp3 в папку wwwroot, так всё работатет
HTML5
1
<audio src="1.mp3" autoplay="" controls="" controlslist="nodownload"></audio>
0
Эксперт .NET
 Аватар для Usaga
14093 / 9310 / 1349
Регистрация: 21.01.2016
Сообщений: 34,973
26.09.2017, 12:53
Alex_trader, сравните заголовки рабочего ответа и ответа от вашего веб-приложения. Сравните размеры данных, сравните содержимое ответов (байтов).
0
3 / 3 / 5
Регистрация: 11.11.2015
Сообщений: 413
26.09.2017, 13:49  [ТС]
Usaga,
Цитата Сообщение от Usaga Посмотреть сообщение
Сравните размеры данных, сравните содержимое ответов (байтов)
Структура проекта: WebIF -> WebApi -> WebApi(File.ReadAllBytes(filePath))
Ответ: WebIF(byte[107642]) -> WebApi(byte[80729]) -> WebApi(byte[60480])

Добавлено через 1 минуту
Usaga, Подскажите, почему по мере прохождения сервисов, массив байтов увеличивается?
0
Эксперт .NET
 Аватар для Usaga
14093 / 9310 / 1349
Регистрация: 21.01.2016
Сообщений: 34,973
26.09.2017, 13:58
Alex_trader, потому, что где-то баг. Ставьте точки останова, изучайте логику работы, смотрите содержимое массива.
0
3 / 3 / 5
Регистрация: 11.11.2015
Сообщений: 413
26.09.2017, 15:10  [ТС]
Usaga, отсюда вопрос, как передавать файл между сервисами?
0
Эксперт .NET
 Аватар для Usaga
14093 / 9310 / 1349
Регистрация: 21.01.2016
Сообщений: 34,973
26.09.2017, 17:05
Alex_trader, так же как и из веб-приложения.

Но один вопрос: файлы на той же машине, что и веб-приложение?
0
3 / 3 / 5
Регистрация: 11.11.2015
Сообщений: 413
27.09.2017, 07:30  [ТС]
Цитата Сообщение от Usaga Посмотреть сообщение
Но один вопрос: файлы на той же машине, что и веб-приложение?
Оконечное WebApi читающее файл на той же машине
0
Эксперт .NET
 Аватар для Usaga
14093 / 9310 / 1349
Регистрация: 21.01.2016
Сообщений: 34,973
27.09.2017, 07:47
Alex_trader, читайте файл из самого веб-приложения. Или организуйте над хранилищем с файлами отдельное веб-приложение (если надо). Вообще, совершенно не обязательно на каждый чих делать по WebAPI.
0
3 / 3 / 5
Регистрация: 11.11.2015
Сообщений: 413
27.09.2017, 07:54  [ТС]
Usaga, Спасибо за помощь! Разобрался
Читаю так файл
C#
1
2
3
4
5
6
  var result = new HttpResponseMessage(HttpStatusCode.OK);
                var stream = new FileStream(filePath, FileMode.Open, FileAccess.Read);
                result.Content = new StreamContent(stream);
                result.Content.Headers.ContentType = new MediaTypeHeaderValue("audio/mpeg");
 
                return result;
потом передаю его между сервисами как HttpResponseMessage
и возвращаю на клиент
C#
1
2
3
 var response = this.WebApiInvoke("CallRegistry/GetCallRecord", "GET", new Dictionary<string, object>{{"commutationId", commutationId}});
            var stream = await response.Content.ReadAsStreamAsync();
            return this.File(stream, "audio/mpeg");
Может кому пригодится
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
27.09.2017, 07:54
Помогаю со студенческими работами здесь

Winmm.dll. Воспроизведение mp3 файлов по прямой ссылке из интернета
Всем хай. Задача: воспроизводить mp3 файлы по прямой ссылке из интернета. Проблема: почему-то не все ссылки воспроизводятся. Пример...

Пропали эскизы папок с mp3 файлами, отсутствуют теги в mp3 файлах
Доброго времени суток, появилась такая проблема: пропали эскизы папок с mp3 файлами, а так же исчезли теги в mp3 файлах, примерно с недели...

Как определить длительность Mp3 файла. MP3 плеер на библиотеке BASS 2.4
В процессе поиска ответов я наткнулся на эту тему https://www.cyberforum.ru/delphi-beginners/thread83454.html Судя по всему, создателю...

Как поставить в Mp3 плеере на кнопку окрытие не одного mp3 файла ??
Привет ! У меня такая проблема я пишу mp3 плеер на Delphi и у меня в нём есть кнопка открытия файлов и при окрытии mp3 файлов можно открыть...

[Решено]STM32F4 + Helix mp3 не кодирует некоторые mp3
Вдохновлённый топиком в сообществе от товарища MykiSmith. На stm32f4Dyscovery прикрутил Hetyx mp3 decoder. Проект взял тут...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение Это мой обзор планшета X220 с точки зрения школьника. Недавно я решила попытаться уменьшить свой. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru