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

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

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

Регистрация: Jun 2009
Сообщений: 40
Attention Резать mp3

Доброго времени суток.

Предположим что у нас есть mp3 файл длиной в 60 секунд, и он представлен объектом типа Sound. Нам необходимо вырезать кусок начиная с 30 секунды по 45 секунду и получить так же Sound но уже длиной 15 секунд. 2 дня убил на Sound.extract() так ничего и не получилось.

Может кто-то сталкивался с такой задачей?

Старый 16.07.2011, 11:33
3p.station вне форума Посмотреть профиль Отправить личное сообщение для 3p.station Найти все сообщения от 3p.station
  № 2  
Ответить с цитированием
3p.station
 
Аватар для 3p.station

блогер
Регистрация: Oct 2009
Адрес: кочевник. Киев
Сообщений: 453
Записей в блоге: 5
вникните в этот классик(изменение скорости проигрывания трека) - его можно допилить и под вашу задачу
Код AS3:
package audio
{
	import flash.events.Event;
	import flash.events.SampleDataEvent;
	import flash.media.Sound;
	import flash.net.URLRequest;
	import flash.utils.ByteArray; 
 
	public class Audio 
	{
 
		private var _sound:Sound;
 
		private var _playbackSpeed:Number = 1; 
 
		private var _mp3:Sound;
		private var _loadedMP3Samples:ByteArray;
		private var _dynamicSound:Sound;
 
		private var _phase:Number;
		private var _numSamples:int;
 
		public function Audio()
		{
		}
 
		public function play():void
		{
			var bytes:ByteArray = new ByteArray();
			_sound.extract(bytes, int(_sound.length * 44.1));
			playBytes(bytes);
		}
 
		private function playBytes(bytes:ByteArray):void
		{
			stop();
			_dynamicSound = new Sound();
			_dynamicSound.addEventListener(SampleDataEvent.SAMPLE_DATA, onSampleData);
 
			_loadedMP3Samples = bytes;
			_numSamples = bytes.length / 8;
 
			_phase = 0;
			_dynamicSound.play();
		}
 
		private function onSampleData( event:SampleDataEvent ):void
		{
			var l:Number;
			var r:Number;
 
			var outputLength:int = 0;
			while (outputLength < 2048) { 
				// until we have filled up enough output buffer
 
				// move to the correct location in our loaded samples ByteArray
				_loadedMP3Samples.position = int(_phase) * 8; // 4 bytes per float and two channels so the actual position in the ByteArray is a factor of 8 bigger than the phase
 
				// read out the left and right channels at this position
				l = _loadedMP3Samples.readFloat();
				r = _loadedMP3Samples.readFloat();
 
				// write the samples to our output buffer
				event.data.writeFloat(l);
				event.data.writeFloat(r);
 
				outputLength++;
 
				// advance the phase by the speed...
				_phase += _playbackSpeed;
 
				// and deal with looping (including looping back past the beginning when playing in reverse)
				if (_phase < 0) {
					_phase += _numSamples;
				} else if (_phase >= _numSamples) {
					_phase -= _numSamples;
				}
			}
		}
 
		public function set playbackSpeed(value:Number):void
		{
			_playbackSpeed = value;
		}
 
		public function stop():void
		{
			if (_dynamicSound) {
				_dynamicSound.removeEventListener(SampleDataEvent.SAMPLE_DATA, onSampleData);
				_dynamicSound = null;
			}
		}
 
		public function get sound():Sound 
		{ 
			 return(_sound);
		} 
 
		public function set sound(value:Sound):void 
		{ 
			 _sound = value;
		} 
 
		public function get phase():Number 
		{ 
			 return(_phase);
		} 
		public function set phase(value:Number):void 
		{ 
			 _phase = value;
		} 
 
	}
}
__________________
мира и гармонии

Старый 16.07.2011, 11:55
КорДум вне форума Посмотреть профиль Отправить личное сообщение для КорДум Найти все сообщения от КорДум
  № 3  
Ответить с цитированием
КорДум
 
Аватар для КорДум

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
Немного оффтопа. Зачем вы пишете так:
Код AS3:
return(_phase);
? Это не функция.
__________________
тут я

Старый 16.07.2011, 12:03
DJDrugsounD вне форума Посмотреть профиль Отправить личное сообщение для DJDrugsounD Найти все сообщения от DJDrugsounD
  № 4  
Ответить с цитированием
DJDrugsounD
 
Аватар для DJDrugsounD

Регистрация: Jun 2011
Сообщений: 153
ещё почитайте это

Старый 16.07.2011, 12:50
Aquahawk вне форума Посмотреть профиль Отправить личное сообщение для Aquahawk Посетить домашнюю страницу Aquahawk Найти все сообщения от Aquahawk
  № 5  
Ответить с цитированием
Aquahawk
 
Аватар для Aquahawk

Регистрация: Nov 2010
Адрес: Москва
Сообщений: 915
Записей в блоге: 4
Отправить сообщение для Aquahawk с помощью ICQ Отправить сообщение для Aquahawk с помощью Skype™
Цитата:
Сообщение от КорДум Посмотреть сообщение
Немного оффтопа. Зачем вы пишете так:
Код AS3:
return(_phase);
? Это не функция.
Тоже поофтоплю. А зачем спрашиваете? Кодстаил такой. Мне тоже не особо нравится, но почему бы и нет. Точки с запятой вы же ставите, и я ставлю, а кто-то не ставит. Тоже необязательный элемент который закреплён в кодстайле.

Старый 16.07.2011, 13:40
Drabuna вне форума Посмотреть профиль Отправить личное сообщение для Drabuna Найти все сообщения от Drabuna
  № 6  
Ответить с цитированием
Drabuna

Регистрация: Jun 2009
Сообщений: 40
Я вникал в этот код пока гуглил. Проблема в том что SampleDataEvent диспатчится через определенное время повторно, и Sound.extract может извлечь от 2048 до 8192 образцов за раз, а мне надо извлечь сразу нужное количетсво образцов для 15 секунд, дабы мне не пришлось проигрывать 15 секунд трэка, чтобы каким то образом определить сколько раз надо вызывать extract в SampleDataEvent.

Старый 17.07.2011, 01:04
3p.station вне форума Посмотреть профиль Отправить личное сообщение для 3p.station Найти все сообщения от 3p.station
  № 7  
Ответить с цитированием
3p.station
 
Аватар для 3p.station

блогер
Регистрация: Oct 2009
Адрес: кочевник. Киев
Сообщений: 453
Записей в блоге: 5
Цитата:
Сообщение от КорДум Посмотреть сообщение
Немного оффтопа. Зачем вы пишете так:
Код AS3:
return(_phase);
? Это не функция.
да както в привычку вошло
знаешь(думаю можно на ты) так бывает когда развитие то происходит, но не ключевые моменты так и остаются
исправлюсь, спасибо!
__________________
мира и гармонии


Последний раз редактировалось 3p.station; 17.07.2011 в 01:07.
Старый 17.07.2011, 01:28
КорДум вне форума Посмотреть профиль Отправить личное сообщение для КорДум Найти все сообщения от КорДум
  № 8  
Ответить с цитированием
КорДум
 
Аватар для КорДум

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
Давай на "ты" =)
Я не придирался. Ловил случай развеять сомнения
__________________
тут я

Старый 17.07.2011, 20:10
Drabuna вне форума Посмотреть профиль Отправить личное сообщение для Drabuna Найти все сообщения от Drabuna
  № 9  
Ответить с цитированием
Drabuna

Регистрация: Jun 2009
Сообщений: 40
Давайте по теме.

Старый 18.07.2011, 12:26
ZGG вне форума Посмотреть профиль Отправить личное сообщение для ZGG Найти все сообщения от ZGG
  № 10  
Ответить с цитированием
ZGG
 
Аватар для ZGG

Регистрация: Nov 2005
Адрес: 26°58′49.06″ 49°24′35.72″ Ymaps
Сообщений: 119
Отправить сообщение для ZGG с помощью ICQ Отправить сообщение для ZGG с помощью Skype™
Вот нашел примерчик, можно поковырять декомпилятором.
Вложения
Тип файла: zip mp3cutter.zip (25.1 Кб, 47 просмотров)
__________________
ЛОГИКА - залог программирования!

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

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

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


 


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


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