Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Регистрация Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 14.11.2011, 17:41
boriskaaa вне форума Посмотреть профиль Отправить личное сообщение для boriskaaa Найти все сообщения от boriskaaa
  № 1  
Ответить с цитированием
boriskaaa

Регистрация: Nov 2010
Сообщений: 23
По умолчанию Вырезать сэмпл из mp3 файла

Всем привет.

Можно ли вырезать часть звукового файла и сохранить его ?

Т.е я могу загрузить mp3-шку и мне надо вырезать из него определённую часть. Я думал, что может как-то можно через byteArray это сделать, но не знаю как. Это вообще возможно ?

Старый 14.11.2011, 18:21
TWETTI вне форума Посмотреть профиль Отправить личное сообщение для TWETTI Найти все сообщения от TWETTI
  № 2  
Ответить с цитированием
TWETTI
 
Аватар для TWETTI

Регистрация: Dec 2007
Адрес: Россия, Москва
Сообщений: 541
Отправить сообщение для TWETTI с помощью Skype™
Это возможно. Существуют уже готовые библиотеки. Ищите.

Старый 14.11.2011, 18:25
boriskaaa вне форума Посмотреть профиль Отправить личное сообщение для boriskaaa Найти все сообщения от boriskaaa
  № 3  
Ответить с цитированием
boriskaaa

Регистрация: Nov 2010
Сообщений: 23
Я вот это и делаю. Даже на это форуме есть подобные темы, но ответа жалко нет.

Старый 14.11.2011, 19:31
Genzo вне форума Посмотреть профиль Отправить личное сообщение для Genzo Посетить домашнюю страницу Genzo Найти все сообщения от Genzo
  № 4  
Ответить с цитированием
Genzo
 
Аватар для Genzo

блогер
Регистрация: Feb 2010
Адрес: MSK
Сообщений: 859
Записей в блоге: 3
Отправить сообщение для Genzo с помощью ICQ Отправить сообщение для Genzo с помощью Skype™
Sound.extract
__________________
Gamedev != Gaming (http://twitter.com/#!/GenzoDev). Don't forget to [+] if it works.

Старый 14.11.2011, 21:07
Genm вне форума Посмотреть профиль Отправить личное сообщение для Genm Найти все сообщения от Genm
  № 5  
Ответить с цитированием
Genm

Регистрация: Aug 2011
Сообщений: 24
Записей в блоге: 1
Есть примеры использования?

Старый 14.11.2011, 21:44
boriskaaa вне форума Посмотреть профиль Отправить личное сообщение для boriskaaa Найти все сообщения от boriskaaa
  № 6  
Ответить с цитированием
boriskaaa

Регистрация: Nov 2010
Сообщений: 23
Цитата:
Сообщение от Genzo Посмотреть сообщение
Sound.extract
Ну это понятно. Тут дело в том, чтобы применить это дело правильно. Примерчик бы не помешал.

Старый 08.12.2011, 18:27
boriskaaa вне форума Посмотреть профиль Отправить личное сообщение для boriskaaa Найти все сообщения от boriskaaa
  № 7  
Ответить с цитированием
boriskaaa

Регистрация: Nov 2010
Сообщений: 23
Получилось..))

Если кому-то интересно, то вкратце опишу так:

1. Через urlloader загружаем Mp3, как бинарные данные
2. Определяем битрейт (тут возможно 2 варианта, я разобрался только с постоянным битрейтом). Есть либа audiofx, там можно додумать, как вытащить битрейт.
3. если битрейт 256кбит/сек, то например 10-я секунда это (256*1000)/8*10. Пишем цикл с 10 по 20 сек.
Код AS3:
for(var i:Number= (256*1000)/8*10;i< (256*1000)/8*20;i++)
{
 //Заранее создаётся новый byteArray.И в него пихаем данные newArr[k] = curArr[i];
k++;
//k изначально равно 0
 
}
3. Сохраняем всё это дело через
Код AS3:
filereference.save(newArr)
В итоге получаем файл в 10 сек. Ну с какой секунды по какую уже разобраться не составит труда если выбирать по временной шкале отрезок.

Остался один вопрос. Как получить битрейт в данной секунде ?

Старый 08.12.2011, 19:12
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 8  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
Цитата:
Как получить битрейт в данной секунде
ММ а разве битрейт на каждую секунду свой?!
__________________
Марк Tween

Старый 08.12.2011, 20:41
Alex Lexcuk вне форума Посмотреть профиль Отправить личное сообщение для Alex Lexcuk Посетить домашнюю страницу Alex Lexcuk Найти все сообщения от Alex Lexcuk
  № 9  
Ответить с цитированием
Alex Lexcuk

блогер
Регистрация: Mar 2008
Адрес: Донецк_city
Сообщений: 1,094
Записей в блоге: 5
битрейт в каждой секунде получать незачем, ведь если использовать SampleDataEvent.SAMPLE_DATA, то он сам посебе получается. Пример: загружается файл 350КБ звука и можно вырезать из него каждую десятую часть.
Код AS3:
package  
{
	import flash.display.*;
	import flash.events.*;
	import flash.system.*;
	import flash.text.*;
	import flash.ui.*;
	import flash.utils.*;
	import flash.sampler.*;
	import flash.media.*;
	import flash.net.*;
	import flash.external.*;
	/**
	 * ...
	 * @author Lexcuk
	 * http://murmadillo.tut.su/m/bmw.swf
	 */
	public class DocMp3 extends Sprite
	{
		private var sound:Sound;
		private var soundChanel:SoundChannel;
		private var navTxt:TextField;
		private var mp3Samples:Vector.<Number>;
		private var samples:Vector.<Number>;
		private var pos:uint;
		private var i:uint = 0;
		public function DocMp3() 
		{
			navTxt = new TextField();
			sound = new Sound();
			sound.addEventListener(Event.COMPLETE, soundCompleteHandler);
			sound.load(new URLRequest('bmw.mp3'));
			samples = new Vector.<Number>();
		}
 
		public function soundCompleteHandler(e:Event):void {
			trace('load done');
			var ba:ByteArray = new ByteArray();
			sound.extract(ba, sound.bytesLoaded);
			var n:Number;
			mp3Samples = new Vector.<Number>();
			ba.position = 0;
			while (ba.bytesAvailable > 0) {
				samples.push(n = ba.readFloat());
				mp3Samples.push(n);
			}
			sound = new Sound();
			sound.addEventListener(SampleDataEvent.SAMPLE_DATA, soundSampleDataHandler);
			soundChanel = sound.play();
			createProcentTxt();
		}
 
		private function createProcentTxt():void {
			var str:String = '';
			for (i=0; i<100; i+=10) str = str + "<a href=\'event:"+i+"\'><u>[procent "+i+"]</a>\n";
			navTxt = new TextField();
			navTxt.autoSize = TextFieldAutoSize.LEFT;
			addChild(navTxt);//добавить на рабочее поле
			navTxt.htmlText = str;
			navTxt.addEventListener(TextEvent.LINK, txtLinkHandler);
		}
 
		private function txtLinkHandler(param1:TextEvent):void {
			var procent:Number = Number(param1.text);
			if (procent != 0) procent = procent / 100;
			samples.length = 0;
			for (i = procent*mp3Samples.length; i < procent*mp3Samples.length+mp3Samples.length/10; i++) {
				if (i >= mp3Samples.length) break;
				samples.push(mp3Samples[i]);
			}
		}
 
		private function soundSampleDataHandler(event:SampleDataEvent):void {
			var n:Number = 0;
			pos += 8192/2;
			for (i = pos; i < pos + 8192/2; i++) {
				if (i >= samples.length) { 
					pos = 0; 
					if (soundChanel != null) soundChanel.stop();
					soundChanel = sound.play(); 
					break; 
				}
				event.data.writeFloat(n = samples[i]);
				//event.data.writeFloat(n);//замедлние
			}
		}
 
 
	}
 
}
http://murmadillo.tut.su/m/bmw.swf
ПС: Уменьшите громкость колонок, РОК... Кнопки стоп НЕТУ.
__________________
Гоночка

Создать новую тему Ответ Часовой пояс GMT +4, время: 16:13.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 16:13.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2022, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.