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

C# ASP.NET MVC

Войти
Регистрация
Восстановить пароль
 
 
Alex_trader
3 / 3 / 1
Регистрация: 11.11.2015
Сообщений: 413
#1

Прослушать mp3 по ссылке - C# MVC

26.09.2017, 08:21. Просмотров 431. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.09.2017, 08:21
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Прослушать mp3 по ссылке (C# MVC):

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

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

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

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

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

Прослушать ExpandableListView - Программирование Android
Здраствуйте, у меня есть код прослушки, он работает! но мне нужно вытянуть текст который находитса в етом chold_view код: ...

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

Добавлено через 8 минут
И ещё один важный момент: браузер не полезет по URL ведущему в локальные ресурсы машины\сети со страницы полученной от веб-сервера (вопрос безопасности).
0
Alex_trader
3 / 3 / 1
Регистрация: 11.11.2015
Сообщений: 413
26.09.2017, 12:06  [ТС] #3
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
Usaga
Эксперт .NET
2253 / 1921 / 352
Регистрация: 21.01.2016
Сообщений: 7,368
Завершенные тесты: 2
26.09.2017, 12:07 #4
Alex_trader, смотрите в инструментах разработчика, что с сервера возвращается. Смотрите в отладчике, что на сервере происходит. Не вчера же C#-ом занялись.
0
Alex_trader
3 / 3 / 1
Регистрация: 11.11.2015
Сообщений: 413
26.09.2017, 12:07  [ТС] #5
Байты приходят, не пустые, но аудио не воспроизводится
0
Usaga
Эксперт .NET
2253 / 1921 / 352
Регистрация: 21.01.2016
Сообщений: 7,368
Завершенные тесты: 2
26.09.2017, 12:10 #6
Это что за ерунда такая?

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

Попробуйте воспроизвести файл на локальной странице. Без веб-серверов. Простейшую страничку сделайте и рядом с ней mp3 нужный бросьте. Начните с этого.
0
Alex_trader
3 / 3 / 1
Регистрация: 11.11.2015
Сообщений: 413
26.09.2017, 12:46  [ТС] #10
HTML5
1
<audio id="15402ba4-74b2-435e-b10d-8bd338299b39" src="CallRegistry/GetCallRecord?commutationId=15402ba4-74b2-435e-b10d-8bd338299b39" autoplay="" controls="" controlslist="nodownload"></audio>
тег в браузере выглядит так
0
Usaga
Эксперт .NET
2253 / 1921 / 352
Регистрация: 21.01.2016
Сообщений: 7,368
Завершенные тесты: 2
26.09.2017, 12:48 #11
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
Alex_trader
3 / 3 / 1
Регистрация: 11.11.2015
Сообщений: 413
26.09.2017, 12:51  [ТС] #12
Кинул файлик 1.mp3 в папку wwwroot, так всё работатет
HTML5
1
<audio src="1.mp3" autoplay="" controls="" controlslist="nodownload"></audio>
0
Usaga
Эксперт .NET
2253 / 1921 / 352
Регистрация: 21.01.2016
Сообщений: 7,368
Завершенные тесты: 2
26.09.2017, 12:53 #13
Alex_trader, сравните заголовки рабочего ответа и ответа от вашего веб-приложения. Сравните размеры данных, сравните содержимое ответов (байтов).
0
Alex_trader
3 / 3 / 1
Регистрация: 11.11.2015
Сообщений: 413
26.09.2017, 13:49  [ТС] #14
Usaga,
Цитата Сообщение от Usaga Посмотреть сообщение
Сравните размеры данных, сравните содержимое ответов (байтов)
Структура проекта: WebIF -> WebApi -> WebApi(File.ReadAllBytes(filePath))
Ответ: WebIF(byte[107642]) -> WebApi(byte[80729]) -> WebApi(byte[60480])

Добавлено через 1 минуту
Usaga, Подскажите, почему по мере прохождения сервисов, массив байтов увеличивается?
0
Usaga
Эксперт .NET
2253 / 1921 / 352
Регистрация: 21.01.2016
Сообщений: 7,368
Завершенные тесты: 2
26.09.2017, 13:58 #15
Alex_trader, потому, что где-то баг. Ставьте точки останова, изучайте логику работы, смотрите содержимое массива.
0
26.09.2017, 13:58
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.09.2017, 13:58
Привет! Вот еще темы с ответами:

Прослушать запись в файл - C++
Доброе утро! Стоит задача записи некоторых атрибутов в CAD файл (UG) без ее запуска. Если изменять текущие атрибуты в файле без...

Прослушать на клик LinearLayout - Программирование Android
Здраствуйте, у меня есть LinearLayout со своими компонентами внутри... я ево несколько раз добавляю в активити, тойсть делаю список... как...

прослушать денамично добавленые кнопки - Программирование Android
подскажыте как прослушать денамично добавленые кнопки вот код добавления: btnNew = new Button(this); ...

Возможно ли локально прослушать SMTP? - Безопасность
Привет народ. Подскажите, пожалуйста, возможно ли прослушать SMTP запрос с ПК на SMTP-сервер локально, так как это можно сделать с HTTP? ...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

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