我是 gstreamer 的新手,我想录制音频和视频并将其保存为 .mp4 格式,使用网络摄像头录制视频并使用 MIC 录制音频这是我的管道
gst-launch-1.0 -e v4l2src !队列 !x264enc!h264解析!队列 !qtmux0。阿尔萨斯RC!'音频/x-raw,速率=44100,深度=24'!音频转换!音频重采样!沃阿森克!aacparse!qtmux!文件接收器位置=test.mp4
当我执行它时,视频仅录制 10 秒,音频甚至没有录制,它给出了一些消息,例如
警告:来自元素 /GstPipeline:pipeline0/GstAlsaSrc:alsasrc0:无法足够快地录制音频附加调试信息:gstaudiobasesrc.c(866):gst_audio_base_src_create():/GstPipeline:pipeline0/GstAlsaSrc:alsasrc0:删除了 425565 个样本。这很可能是因为下游无法跟上并且消耗样本太慢。
帮助我克服这个问题提前谢谢你
我无法sounddevice在 python 中使用录制音频。此代码之前可以在旧版本的 Mac OS 上运行。
python3代码如下:
import sounddevice as sd
import numpy as np
fs = 48000
duration=5
rec = sd.rec(int(duration * fs), samplerate=fs, channels=1, blocking=True)
print(rec)
Run Code Online (Sandbox Code Playgroud)
输出是
array([[0.],
[0.],
[0.],
...,
[0.],
[0.],
[0.]], dtype=float32)
Run Code Online (Sandbox Code Playgroud)
虽然此处并未显示所有值,但我已确认它们全部为零。当声音记录正确时,这些值大部分都是非零的。
我已确认设备设置正确:
sd.default.device # Output is [2, 3]
python3 -m sounddevice
0 DisplayPort, Core Audio (0 in, 2 out)
1 DisplayPort, Core Audio (0 in, 2 out)
> 2 MacBook Pro Microphone, Core Audio (1 in, 0 out)
< 3 MacBook …Run Code Online (Sandbox Code Playgroud) 根据最新更新,在后台 js 中捕获麦克风和扬声器音频以进行实时音频处理的正确方法是什么。我被困在这个我已经尝试了所有媒体记录器 api、记录 js api 和 chrome 桌面捕获,但所有这些都返回麦克风音频。他们都无法捕获扬声器的音频。请提出一种实现此场景的方法
以下是捕获麦克风但不捕获扬声器的示例代码:
var audioChunks;
startRecord.onclick = e => {
startRecord.disabled = true;
stopRecord.disabled=false;
// This will prompt for permission if not allowed earlier
navigator.mediaDevices.getUserMedia({audio:true})
.then(stream => {
audioChunks = [];
rec = new MediaRecorder(stream);
rec.ondataavailable = e => {
audioChunks.push(e.data);
if (rec.state == "inactive"){
let blob = new Blob(audioChunks,{type:'audio/x-mpeg-3'});
recordedAudio.src = URL.createObjectURL(blob);
recordedAudio.controls=true;
recordedAudio.autoplay=true;
audioDownload.href = recordedAudio.src;
audioDownload.download = 'mp3';
audioDownload.innerHTML = 'download';
}
}
rec.start();
})
.catch(e=>console.log(e));
}
stopRecord.onclick = e …Run Code Online (Sandbox Code Playgroud) 我用来flutter-sound在我的 flutter 应用程序中录制(然后播放)一些音频。然而,我遇到了一个有趣的问题:在 iOS 模拟器上它可以工作,但在实际的 iOS 设备上我遇到了一个模糊的错误。两者都在相同版本的 iOS (15.4) 上运行。
这是启动和停止录制/播放的代码,很简单:
Future<void> startRecording(GlobalState curState) async {
setState(() {
recording = true;
});
curState.startRecording();
Directory directory = Directory(pathToAudio);
if (filePathText.isNotEmpty && File(filePathText).existsSync()) {
File(filePathText).deleteSync();
}
if (!directory.existsSync()) {
directory.createSync();
}
await _recordingSession.startRecorder(
toFile: (filePathName()),
codec: (Platform.isIOS ? Codec.pcm16WAV : Codec.aacMP4),
audioSource: AudioSource.microphone,
);
}
Future<void> stopRecording(GlobalState curState) async {
setState(() {
recording = false;
});
String? fileURL = await _recordingSession.stopRecorder();
print("the file is recorded!!!");
print("FILEPATH:");
print(fileURL);
curState.stopRecording();
if (fileURL …Run Code Online (Sandbox Code Playgroud) 我需要重复将1024+连续4字节浮点数(范围-1到1)转换为2字节短路(范围-32768到32767)并写入磁盘.
目前我通过循环执行此操作:
short v = 0;
for (unsigned int sample = 0; sample < length; sample++)
{
v = (short)(inbuffer[sample * 2] * 32767.0f);
fwrite(&v, 2, 1, file);
}
Run Code Online (Sandbox Code Playgroud)
这是有效的,但浮点计算和循环是昂贵的.有什么办法可以优化吗?
我正在开发一个记录声音的应用程序.此外,我希望用户能够用自己的声音评论某些情况.我认为配置一个音频会话并创建两个具有不同文件URL的AVAudioRecorder实例就足够了.但这不起作用,第二个录音机确实创建了它的音频文件,但它没有录制任何声音.
有谁知道如何实现两个实际在一台设备上工作的AVAudioRecorder实例?
仅使用一个AVAudioRecorder进行录制,但使用两者都不起作用.
我有一个解决方法,但这是我想要避免的一堆代码......
谢谢!
我正在尝试将录制的音频文件保存在我想要的文件夹中,而不是默认文件夹.但不知怎的,我没有这样做.
我的代码:
Intent recordIntent = new Intent(MediaStore.Audio.Media.RECORD_SOUND_ACTION);
Uri mUri = Uri.fromFile(new File(Environment.getExternalStorageDirectory(), "/Record/sound_"+ String.valueOf(System.currentTimeMillis()) + ".amr"));
recordIntent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, mUri);
startActivityForResult(recordIntent, RESULT_OK);
Run Code Online (Sandbox Code Playgroud)
它确实调用了录音机应用程序.并且当我按下停止按钮时,它返回到我的应用程序并出现一个吐司,说它已保存.但是,而不是保存在我的记录文件夹中,它保存在默认文件夹中.
我意识到logcat中有错误信息:
01-29 01:34:23.900: E/ActivityThread(10824): Activity com.sec.android.app.voicerecorder.VoiceRecorderMainActivity has leaked ServiceConnection com.sec.android.app.voicerecorder.util.VRUtil$ServiceBinder@405ce7c8 that was originally bound here
Run Code Online (Sandbox Code Playgroud)
当我调用相机应用程序时,我不确定代码是否有效.
我正在从MainActivity启动一项服务,该服务无限期地运行以查找传入和传出的记录.
为什么示例"switch-case"不起作用?
没有错误发生,但我只能记录每个传入和传出.
录制呼叫后服务将被终止,它将被重新创建START_STICKY但永远不会开始.
请帮忙.提前致谢!
是否还有其他代码记录android中的传入和传出呼叫?
package com.exampled.demoserv;
import java.io.File;
import java.io.IOException;
import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.media.MediaRecorder;
import android.os.Environment;
import android.os.Handler;
import android.os.IBinder;
import android.telephony.PhoneStateListener;
import android.telephony.TelephonyManager;
import android.widget.Toast;
public class ParentalService extends Service
{
@Override
public void onCreate()
{
//Toast.makeText(getApplicationContext(), "Service Created", Toast.LENGTH_SHORT).show();
}
@Override
public int onStartCommand(Intent intent, int flags, int startId)
{
// TODO Auto-generated method stub
//Toast.makeText(getApplicationContext(), "Subu's Monitoring sTARTED", Toast.LENGTH_SHORT).show();
startMonitor();
return START_STICKY_COMPATIBILITY;
}
@Override
public IBinder onBind(Intent arg0)
{ …Run Code Online (Sandbox Code Playgroud) 当我学习Cocoa Audio Queue文档时,我在音频编解码器中遇到了几个术语.在名为AudioStreamBasicDescription的结构中定义.
以下是术语:
1.采样率
2.数据包
3.帧
4.通道
我知道sample rate和channel.我是如何被其他两个混淆的.其他两个术语是什么意思?
您也可以通过示例回答这个问题.例如,我有一个双通道PCM-16信号源,采样率为44.1kHz,这意味着每秒有2*44100 = 88200字节的PCM数据.但如何packet和frame?
提前谢谢你!
我已成功为iOS编写了一个使用AVAudioRecorder的简单录制应用程序.到目前为止它可以与内置麦克风或外接麦克风配合使用,如果它插入耳机插孔.如何选择通过USB"闪电端口"连接的音频源?我是否需要深入了解Core Audio?
具体来说,我正在尝试连接Apogee Electronics ONE USB音频接口.
audio-recording ×10
audio ×3
android ×2
c ×2
ios ×2
objective-c ×2
codec ×1
core-audio ×1
flutter ×1
gstreamer ×1
ipad ×1
javascript ×1
pcm ×1
python ×1
swift3 ×1