我有G729编码的音频文件.我需要以编程方式将它们转换为WAV PCM(16位8kHz单声道),这也是在做其他事情的工具流程中.我有一个可执行文件,可以帮我.但每次转换时产生外部进程对资源来说过于沉重.特别是如果我需要其中许多并行完成.寻找一个.NET库或代码,让我在我的进程中调用它.
我目前在Android中使用AudioTrack和AudioRecord类.
我使用纯PCM数据,但我想知道我的其他编解码器的选项是什么?
从这个页面看来,我只能使用AMR窄带进行编码和解码?
我目前设置Audio类如下:
arec = new AudioRecord(MediaRecorder.AudioSource.MIC,
11025,
AudioFormat.CHANNEL_CONFIGURATION_MONO,
AudioFormat.ENCODING_PCM_16BIT,
buffersize);
atrack = new AudioTrack(AudioManager.STREAM_VOICE_CALL,
11025,
AudioFormat.CHANNEL_CONFIGURATION_MONO,
AudioFormat.ENCODING_PCM_16BIT,
buffersize,
AudioTrack.MODE_STREAM);
Run Code Online (Sandbox Code Playgroud)
所以我的问题是如何将编码从PCM更改为其他支持的编解码器之一?
当我尝试在AudioFormat上更改ENCODING_PCM_16BIT时,我只能获得默认或无效编码选项以及PCM选项.
如果有人知道任何或任何帮助,那么在Android上编辑和解码音频教程的任何链接都会很棒.
谢谢
编辑:我已将我的代码更改为以下内容:
arec = new AudioRecord(MediaRecorder.AudioSource.MIC,
11025,
AudioFormat.CHANNEL_CONFIGURATION_MONO,
**MediaRecorder.AudioEncoder.AMR_NB**,
buffersize);
atrack = new AudioTrack(AudioManager.STREAM_VOICE_CALL,
11025,
AudioFormat.CHANNEL_CONFIGURATION_MONO,
**MediaRecorder.AudioEncoder.AMR_NB**,
buffersize,
AudioTrack.MODE_STREAM);
Run Code Online (Sandbox Code Playgroud)
代码运行正常,但我想知道它实际上将音频编码为AMR_NB,如果这不是一个正确的方法吗?
我在使用原始PCM时遇到了缓冲区溢出,但由于使用MediaRecorder.AudioEncoder.AMR_NB而不是AudioFormat.PCM使用新代码,因此没有出现
一般视频播放器通过单播连接媒体服务器,但我需要播放器使用多播/广播接收媒体流.
场景:媒体服务器---> AP - (组播/广播视频流) - >播放器(android手机)
有没有Android SDK支持这个功能?或者没有开发软件编解码器和RTP堆栈的解决方案?
詹姆士.
我从相机收到MJPEG Stream.当我用十六进制编辑器查看视频数据时,似乎它不包含任何流信息.我只看到一个接一个的原始JPEG,但没有关于帧速率的信息等.
MJPEG是否缺少任何元信息,或者它与我正在使用的相机有关?如果没有关于流的信息,玩家怎么知道播放视频的速度有多快?
我想针对以下问题寻求某种明确的答案:
ffprobe?我在这个主题上找到了一些链接:
此外,基于H.264的QuickTime电影现在也支持透明的Alpha层,它是H.264规范的可选部分。
H.264解码器中对alpha通道的支持现在可以在Intel®Integrated Performance Primitives 6.0版本中获得。
MPEG4 Simple Studio Profile支持辅助通道,这些通道可用于alpha或深度-甚至可能包括位移,运动矢量,法线等。
但是,我从未见过具体的示例,甚至从未见过有关如何使用这些已宣布功能的详细信息。
我从某处获得了一些ADTS AAC原始数据(实际上是从解复用的文件中提取的),理论上它应该被纠正编码.它看起来像这样:
帧1:
21 19 94 ED A1 09 45 58 09 40 02 CA AA 85 D4 E5 C5 58 A9 73 00 0C 75 1C 5D A7 4E 52 40 90 38 71 9C 65 D5 C4 22 0B 28 7D EF F8 42 33 15 03 BA 6C DE B1 74 B4 A1 4E 0A 21 05 15 34 6B FD D9 E7 8F BF FF 79 5C D3 7D 90 79 F6 65 57 08 3A …
我正在尝试使用JuicyPixels库加载PNG,我能够成功完成此操作但我无法弄清楚底层图像的类型.在库中,DynamicImage定义如下.
data DynamicImage =
ImageY8 (Image Pixel8)
| ImageYA8 (Image PixelYA8)
| ImageRGB8 (Image PixelRGB8)
| ImageRGBA8 (Image PixelRGBA8)
| ImageYCbCr8 (Image PixelYCbCr8)
Run Code Online (Sandbox Code Playgroud)
通过简单的试验和错误,我能够通过这样做发现它是ImageRGBA8.
img = (\(ImageRBA8 t) -> t) dynImage
Run Code Online (Sandbox Code Playgroud)
然后就是这么做
imageData img
Run Code Online (Sandbox Code Playgroud)
在ghci中打印图像数据,所有其他类型都会出错.那么如何DynamicImage在没有试验错误的情况下找出已加载的类型.我确信这很简单,我只是遗漏了一些东西.
我一直在学习matplotlib的动画包,所有的例子似乎都把文件保存为.mp4.该文档未提及任何其他特定格式.matplotlib是否可以使用其他文件格式来保存动画?如果是这样,他们是什么?
许多媒体称firefox在webrtc中支持h264,但我找不到任何信息.
如何在webrtc中启用h264?
这是我的mediaConstraints
var mediaConstraints = {
video: {
mandatory: {
maxWidth: 640,
maxHeight: 480
}
},
audio: true
};
Run Code Online (Sandbox Code Playgroud) 我正在尝试为Chromium添加额外的编解码器支持,以便HTML5媒体播放.我已经安装了chrome-codecs-ffmpeg-extras软件包,以包含比原始下载更多的内容.
我很好奇,如果有人知道工作量/是否可以分叉铬代码并添加额外的编解码器支持(.ts,.avi,etcc).是否像迫使铬使用不同的ffmpeg库或可能使用VLC解码其所有视频一样简单?