录制音频

QT 录制音频 音频的推流和封装与视频是类似的,主要在于录制和重采样部分。 QT再window的安装可以参考博客: vs2017 配置QT环境 主要是在创建QT项目的时候加入 multimedia库,利用这个库用来录制音频的。 QAudioFormat 这个类是用来设置录制音频的参数的,如下: QAudioFormat fmt; fmt.setSampleRate(sampleRate);// ... 阅读详情
package com.creative.RecorderDemo;

import java.io.File;
import java.io.IOException;

import android.app.Activity;
import android.media.MediaPlayer;
import android.media.MediaRecorder;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class RecorderDemoActivity extends Activity
{
	private File _recordAudioFile;
	private MediaRecorder _mediaRecorder;
	private MediaPlayer _mediaPlayer;

	@Override
	public void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		
		Button recordBtn = (Button)findViewById(R.id.recordBtn);
		Button stopBtn   = (Button)findViewById(R.id.stopBtn);
		Button playBtn   = (Button)findViewById(R.id.playBtn);
		Button deleteBtn = (Button)findViewById(R.id.deleteBtn);
		
		// 开始录制
		recordBtn.setOnClickListener(new OnClickListener(){

			@Override
			public void onClick(View v)
			{
				try
				{
					_recordAudioFile = File.createTempFile("record", ".amr");//初始化File对象并调用其createTempFile()创建一个录音文件
					_mediaRecorder = new MediaRecorder();//对MediaRecorder对象进行初始化,使用其setAudioSource()方法设置声音源为麦克风
					_mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);//
					_mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.DEFAULT);//调用setOutputFormat()方法设置输出格式为默认的格式
					_mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);//调用setAudioEncoder()设置编码为默认的编码
					_mediaRecorder.setOutputFile(_recordAudioFile.getAbsolutePath());//设置输出文件的路径
					_mediaRecorder.prepare();//最后还要MediaRecorder对象的prepare()方法和start()方法进行资源的初始化和正式开始进行录音的操作
					_mediaRecorder.start();//
					
				} catch (IOException e)
				{
					e.printStackTrace();
				}
			}});
		
		// ֹͣ停止录制
		stopBtn.setOnClickListener(new OnClickListener(){/////////////定制录制的时候,需要先判断MediaRecorder对象时否为空
	//////////////////		,如果不为空将调用其stop()方法和release()方法,停止录制并释放相应的资源
			@Override
			public void onClick(View v)
			{
				if (_mediaRecorder != null)
				{
					_mediaRecorder.stop();
					_mediaRecorder.release();
					_mediaRecorder = null;
				}
			}});
		
		// 播放录音
		playBtn.setOnClickListener(new OnClickListener(){
//////在播放音频的时候则需要使用之前创建的Mediaplayer对象,对Mediaplayer对象进行初始化后调用其setDataSource()设置音频播放源为刚刚生成的录音文件,调用prepare()方法进行资源初始化。
	///最后,调用其start()方法就可以进行音频的播放了
			@Override
			public void onClick(View v)
			{
				_mediaPlayer = new MediaPlayer();
				try
				{
					_mediaPlayer.setDataSource(_recordAudioFile.getAbsolutePath());
					_mediaPlayer.prepare();
					_mediaPlayer.start();
				} catch (IOException e)
				{
					e.printStackTrace();
				}
			}});
		
		// 删除录音
		deleteBtn.setOnClickListener(new OnClickListener(){

			@Override
			public void onClick(View v)
			{
				_recordAudioFile.delete();
			}});
	}
}

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
	android:orientation   ="vertical" android:layout_width="fill_parent"
	android:layout_height ="fill_parent">
	<LinearLayout 
		android:orientation      = "horizontal"
		android:layout_width     = "fill_parent" 
		android:layout_height    = "wrap_content"
		android:gravity          = "center_horizontal" 
		android:layout_marginTop = "20dp">
		<Button 
			android:id           ="@+id/recordBtn"
			android:layout_width ="wrap_content" 
			android:layout_height="wrap_content"
			android:text         ="开始录制" />
		<Button 
			android:id           ="@+id/stopBtn" 
			android:layout_width ="wrap_content"
			android:layout_height="wrap_content" 
			android:text         ="停止录制" />
		<Button 
			android:id           ="@+id/playBtn" 
			android:layout_width ="wrap_content"
			android:layout_height="wrap_content" 
			android:text         ="播放录音" />
		<Button 
			android:id           ="@+id/deleteBtn" 
			android:layout_width ="wrap_content"
			android:layout_height="wrap_content" 
			android:text         ="删除录音" />
	</LinearLayout>
</LinearLayout>


RKMedia下的音频录制 - 这里需要注意:瑞芯微的音频推流不支持mp2的推流,所以虽然编码上用的是mp2,但是推流的时候不能用,只能用RTSP_CODEC_ID_AUDIO_G711A, RTSP_CODEC_ID_AUDIO_G711U ,所以编码的也需要改。-- 下面的结构体用哪个,看enCodecType参数填的那个,如果填RK_CODEC_TYPE_MP2,就是选对应的结构体,也就是下面这个。-- 只需要在编码代码的基础上,加上RTSP的初始化和在回调函数中,存到本地文件换成,将数据推到服务器中。 阅读详情

相关推荐

WebRTC音频录制方案(采用前端录制,基于Jitsi 框架)

音频流通常通过 MediaStream 进行传输和处理,在 Jitsi Meet 中,音频流的处理也会通过相关的 WebRTC API 完成。在前端代码中,可以通过定时任务或特定的时机,将每一段音频数据独立上传至后台。在WebRTC某些业务场景中,需要对实时视频通话中的音视频进行录制并存储,用于后续的质检,由于视频容量太大,采用前端进行音频录制模式是一种较为轻量并且松耦合的方案。通过 Jitsi 框架,我们可以实时获取视频通信中的音频数据,并通过 Web Audio API 进行音频数据提取和处理。

江左散人的专栏 1732

用Matlab录制、读取音频

又Get了一个技能!用matlab录制、读取、截取音频 matlab录制音频主要用的是audiorecorder函数,可以在命令行help一下它的用法,主要用法如下: recorder = audiorecorder recorder = audiorecorder(Fs,nBits,nChannels) recorder = audiorecorder(Fs,nBits,nChannels,ID) 没有输入参数时,默认创建采样率为8000Hz,8bit,单通道的对象,有输入参数时,则由Fs指定采样率,单位

weixin_44846910的博客 1万+

录制系统音频

使用NAudio Nuget包,很容易实现录制系统音频。 首先将NAudio Nuget包安装到项目中。 Demo使用的是WPF,WinForm实现一样。 简单的界面,一个Button和一个TextBlock。 <Window x:Class="NAudioCaptureSystemAudioWPFTest.MainWindow" xmlns="http://s...

singhwong 660

如何进行音频录制?实用的音频录制方法合集

其中它的音频录制功能,不仅可以选择录制声音来源和设置录音时长,还可以将录制后的文件存储为mp3或wav格式。音频录制是一种重要的技能,可以用于各种场合,比如我们可以使用音频录制技术录制不同乐器和声音的音频,并在后期进行处理和混音,制作出完整的音乐作品等等。打开迅捷音频转换器,在软件顶部菜单栏中找到“音频录制”工具,接着根据自身需求来“选择输出格式”和“声音来源”,在选择完毕后,点击“开始录制”按钮即可。打开手机录音机,在软件首页中点击红色的录制按钮,就可以进行音频录制操作啦。,快跟我一起往下看看吧。

xiehewe的博客 2621

Android实现音频录制的两种方式

在移动APP开发中,每逢APP应用设计到多媒体开发的时候,都会让很多的程序员头疼不已,而且项目的开发进度会放慢、项目 的难度也会加大蛮多,同时APP的测试也会增加。Android中的多媒体开发,有音频的播放、音频的录制、视频的播放、视频的录制 等,虽然Android的SDK中提供了一些基础的开发API类,如音频的录制就提供了两种方式:AudioRecord录制音频和MediaRecorder录 制音频。AudioRecord类相对于MediaRecorder来说,更加接近底层,为我们封装的方法也更少。然而实

zyxNobita专栏 1376

音频(三) - 录制播放PCM音频流和WMV音频文件

版权声明:本文为原创文章,未经允许不得转载 博客地址:http://blog.youkuaiyun.com/kevindgk GitHub地址:https://github.com/KevinDGK/MyAudioDemo 一录制和播放PCM音频流 录制 播放 测试 二录制和播放WAV音频文件 WAV简介 录制 播放 测试 三运行 四小结引用 联系方式 一、录制和播放PCM音频流1.录

一路向东 6614

iOS 音频的录制、播放及音频文件管理

音频会话 音效播放 音乐播放 音频录制 音频管理 音频队列服务 参考地址

LOLITA0164的博客 2万+

FFmpeg编程录制音频(Mac OS)

之前我们使用FFmpeg命令行工具进行了简单的音视频操作,这次在Mac OS环境下编写代码实现简单的音频录制功能。

qq_52703909的博客 1294

react 录制音频_如何在React Native中录制音频

react 录制音频In this tutorial, we are going to learn how to record and play audio to React Native apps. We are going to build a simple screen that supports features such as recording audio, playing audio...

weixin_26738395的博客 2028

iOS 音频录制

iOS实现音频录制常用的三种方式录制之前应对AVAudioSeeion进行设置AVAudioSession *audioSession = [AVAudioSession sharedInstance]; [audioSession setCategory:AVAudioSessionCategoryRecord error:nil]; //设置为录音模式, 如果需要可以对采样率sampleRat...

Ha_Song_Code的博客 1301

uniapp:仿微信发送音频,录制音频。

防微信发送音频,录制音频功能

sunluyi的博客 2245

如何录制音频文件mp3?给你推荐好用的几款音频录制软件

&nbsp;&nbsp;&nbsp;&nbsp;其实我们生活中对于音频录制的需求是比较大的,比如开会的时候为了防止漏掉要点,又或者在上课的时候老师语速过快我们来不及记笔记,这些情况出现的时候我们都可以用录音来解决这些问题。那今天在这里我也跟大家一起分享一下音频录制软件有哪些,有需要的小伙伴就继续往下读吧。方法一:使用电脑录音机进行音频录制&nbsp;&nbsp;&nbsp;&nbsp;我们的电脑设备本身就有相关的软件可以录音,以Win10为例,

qq_39891419的博客 2519

Matlab:录制和播放音频

Matlab:录制和播放音频

希望我的博客,能帮上你解决学习中工作中所遇到的问题 1846

Matlab进行录制、存储、绘制、读取音频

clear all clc music=audiorecorder(11025,16,2); %创建一个保存音频信息的对象,它包含采样率,时间和录制的音频信息等等。 %44100表示采样为44100Hz(可改为8000, 11025, 22050等, %此数值越大,录入的声音质量越好,相应需要的存储空间越大) %16为用16bits存储,2为两通道即立体声(也可以改为1即单声道)。 record...

taw19960426的博客 1万+

QT进行音频录制

这段代码演示了如何使用QT的`QAudioRecorder`类进行音频录制。首先,创建了一个`QAudioRecorder`对象并设置了音频输入设备、输出位置和输出格式。然后,通过调用record()方法开始录制,通过调用stop()方法停止录制。

xuyonjin的博客 1137

Hierarchical-Localization 环境配置与依赖管理全攻略

本文提供了Hierarchical-Localization(hloc)视觉定位工具箱从零开始的环境配置与依赖管理全攻略。针对Windows、Ubuntu和macOS三大操作系统,详细解析了Python版本选择、PyTorch与CUDA版本匹配、pycolmap版本锁定等核心依赖的安装步骤,并汇总了权重文件格式、NumPy版本、路径配置等常见问题的排查与解决方案,旨在帮助用户高效搭建稳定的hloc开发环境。

weixin_29066781的博客 335

鸿蒙媒体开发系列07——AVRecorder音频录制

在HarmonyOS系统中,多种API都提供了音频录制开发的支持,不同的API适用于不同录音输出格式、音频使用场景或不同开发语言。因此,选择合适的音频录制API,有助于降低开发工作量,实现更佳的音频录制效果。功能较完善的音频、视频录制ArkTS/JS API,集成了音频输入录制、音频编码和媒体封装的功能。开发者可以直接调用设备硬件如麦克风录音,并生成m4a音频文件。用于音频输入的的ArkTS/JS API,仅支持PCM格式,需要应用持续读取音频数据进行工作。

harmonyClassRoom的博客 1948

百度API实现人流量数量检测(动态)

百度的这个API还挺好用的,对与不追求高精度的人来说非常适用,结合他官方给的文档,极易上手。 需要做的就是通过API Key和Secret Key获取的access_token。 然后稍微修改下代码就行,但是他给的代码并没有直接从摄像头获取视频,而是读取一个文件夹,那么就需要自己先对摄像头的输出视频进行处理。 识别结果如下,"person_num"是当前画面的人数,in是累计进入的人数,out是累计走出去的人数。 他这个有个缺点就是返回值里边并没有实时返回in和out的值,而是都是0,但是这个图片上有,图片

qq_42479987的博客 3379
上一篇: Toast
下一篇: 音乐播放器
Hello______world
博客等级 码龄14年 16粉丝 106原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值