标签: codec

无法播放24位音频

我正在尝试用我的AutoHotkey应用程序播放24位音频文件.它只使用SoundPlay.Windows 7没有问题,但Windows XP用户无法播放24位文件.

文件说:

所有Windows操作系统都应该能够播放.wav文件.但是,如果操作系统上未安装正确的编解码器或功能,则其他文件(.mp3,.avi等)可能无法播放.

文章中提到的可能的修复方法如何在Windows Media Player播放24位WAV文件正在修复Windows Media Player的问题,但不适用于autohotkey:

分步指南

  1. 下载传统高清音频过滤器
  2. regsvr32.exe AudioTypeConvert.ax
  3. 在Windows媒体播放器(工作)和AHK(没有声音)中播放24位文件.
  4. 要卸载的regsvr32.exe/u AudioTypeConvert.ax

预期行为:Windows Media Player和AutoHotkey应用程序中的音频文件回放没有错误.实际行为:仅在Windows Media Player中播放没有错误的音频文件,并且不在Windows XP下的AutoHotkey应用程序中播放.

进一步的调查

正如AutoHotKey论坛中所提到的,SoundPlay在底层使用mciSendString,可以通过直接调用来获取有关错误性质的更多信息.

使用mciSendString替代DLL调用我得到错误消息320,它对应于MCIERR_WAVE_OUTPUTSINUSE

所有可以播放当前格式文件的波形设备都在使用中.等到其中一个设备空闲; 然后,再试一次.

如何在AutoHotkey应用程序中在Windows XP中播放24位音频文件?

基于SoundPlay的测试应用(下载)

#NoEnv 
SetWorkingDir %A_ScriptDir%
FileSelectFile, f
SoundPlay, %f%
Msgbox, You should hear audio - except for 24bit wave files under Windows XP.
Run Code Online (Sandbox Code Playgroud)

基于MCI的测试应用程序(下载)

#NoEnv 
SetWorkingDir %A_ScriptDir%
FileSelectFile, f …
Run Code Online (Sandbox Code Playgroud)

audio windows-xp autohotkey codec mci

10
推荐指数
1
解决办法
1707
查看次数

android中的H264编码器?

在尝试修复简单的视频录制应用程序*时,我遇到了一些问题.我想我正确地遵循了一系列步骤.以下是对我提出问题的代码部分的简化.按下按钮后,此代码仅作为回调执行:

if ( mRecorder != null){
    mRecorder.reset();
    mRecorder.release();
}
mRecorder = new MediaRecorder();
if(mViewer.hasSurface){
    mRecorder.setPreviewDisplay(mViewer.holder.getSurface());
    Log.d(TAG,"Surface has been set");
}
try {
    Log.d(TAG,"Sleeping for 4000 mili");
    Thread.sleep(4000);
    Log.d(TAG,"Waking up");
} catch (InterruptedException e) {
    Log.e(TAG,"InterruptedException");
    e.printStackTrace();
}
mRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);  
mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
mRecorder.setVideoFrameRate(12);
mRecorder.setVideoSize(176, 144);
mRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.MPEG_4_SP);
mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
mRecorder.setMaxDuration(MAX_DURATION_TEST);

String targetFile = "/sdcard/webcamera/temp.mp4";
File localFile = new File(targetFile);
if(localFile.exists()){
    Log.d(TAG,"Local file exists");
}else{
    Log.d(TAG,"Local file does not exist");
}
mRecorder.setOutputFile(targetFile);
try {
    mRecorder.prepare();
    bPrepared = true;
    Log.i(TAG,"prepared");
    return;
} catch (IllegalStateException e) { …
Run Code Online (Sandbox Code Playgroud)

android codec video-encoding h.264 video-recording

10
推荐指数
1
解决办法
2万
查看次数

如何从MediaCodec解码器的输出中提取PCM样本

我正在尝试从解码的mp4缓冲区获取PCM样本以进行进一步处理.我首先从用手机的相机应用程序记录的视频文件中提取音轨,当我收到'audio/mp4'mime键时,我确保选择了音轨:

MediaExtractor extractor = new MediaExtractor();
try {
    extractor.setDataSource(fileUri.getPath());
} catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}
int numTracks = extractor.getTrackCount();
for(int i =0; i<numTracks; ++i) {
    MediaFormat format = extractor.getTrackFormat(i);
    String mime = format.getString(MediaFormat.KEY_MIME);
    //Log.d("mime =",mime);
    if(mime.startsWith("audio/")) {
        extractor.selectTrack(i);
        decoder = MediaCodec.createDecoderByType(mime);
        decoder.configure(format, null, null, 0);

        //getSampleCryptoInfo(MediaCodec.CryptoInfo info)
        break;
    }
}
if (decoder == null) {
    Log.e("DecodeActivity", "Can't find audio info!");
    return;
}
decoder.start();
Run Code Online (Sandbox Code Playgroud)

之后,我遍历轨道,向编解码器提供编码访问单元流,并将解码后的访问单元拉入ByteBuffer(这是我从此处发布的视频呈现示例中回收的代码https://github.com/vecio/MediaCodecDemo):

ByteBuffer[] inputBuffers = decoder.getInputBuffers();
ByteBuffer[] outputBuffers = decoder.getOutputBuffers(); …
Run Code Online (Sandbox Code Playgroud)

audio android codec

10
推荐指数
1
解决办法
5369
查看次数

未加载颤动图像(例外:解析图像编解码器)

当我尝试运行图像资产没有正确加载时,我得到一个例外:

抛出以下断言解析图像编解码器:无法加载资产:/ images/p8.png`

几周前它正在运作,现在它停止了.我试图从不同的PC和Mac运行(使用模拟器),但仍然无法加载图像.而是正确加载字体.

这是我加载图像的方式,它们是在里面呈现的,GridView 下面是代码:

return new Expanded(
      child: new GridView.count(
          crossAxisCount: 2,
          padding: const EdgeInsets.fromLTRB(16.0, 25.0, 16.0, 4.0),
          children: <Widget>[
            new MaterialButton(
              onPressed: () {
                Navigator.of(context).pushNamed('/biliardo');
              },
              child: new Column(
                children: <Widget>[
                  new Image(
                    //parte importante, definire gli asset per trovarli più velocemnte
                    //si inseriscono nel pubspec.yaml
                    image: new AssetImage('/images/p8.png'),
                    height: 100.0,
                    width: 100.0,
                  ),
                  new Text(
                    "BILIARDO",
                    style: new TextStyle(
                      color: (darkTheme) ? Colors.blue : Colors.black,
                    ),
                  )
                ],
              ),
            ),

            .....

    );
Run Code Online (Sandbox Code Playgroud)

pubsec.yaml文件代码:

flutter:
  uses-material-design: …
Run Code Online (Sandbox Code Playgroud)

image codec dart flutter

10
推荐指数
5
解决办法
1万
查看次数

Web 编解码器 API 中要使用的有效编解码器字符串是什么?

我想确切地知道我可以传递哪些字符串codecVideoEncoder.isConfigSupported({ codec, width, height })但到目前为止我还没有找到明确的答案:

  • TS 声明文件仅明确它必须是一个字符串(我希望我能在那里找到字符串常量的并集 ^^)
  • 谷歌的这篇网络编解码器文章仅精确说明这vp8是一个有效的编解码器字符串
  • 规格是一个兔子洞,我很难导航
    • 它们描述了编解码器字符串应该做什么,但不包括广泛的列表
    • 他们明确规定编解码器字符串必须匹配av01.*avc1.*vp8vp09.*。从那里,有一些链接可以找到更多信息,但我找不到如何导航它们。例如,我想知道哪些编解码器以 开头av01.,因此我访问了其注册页面,该页面链接theretherethere。前两个链接没有说明完全限定的编解码器字符串,最后一个链接链接到我最初开始的网络编解码器规范:/
  • 这个关于 mime 类型编解码器的 MDN 页面非常完整,并解释了创建编解码器字符串的规则,但我尝试过的很多内容似乎都不起作用

由于目前只有基于 chromium 的浏览器支持此功能,因此我决定查找 chromium 源代码,并发现列出了更多编解码器字符串的位置:

javascript codec

10
推荐指数
1
解决办法
1138
查看次数

从图像创建视频

有没有办法从Android上的一系列图像创建视频?也许是一种扩展MediaRecorder并能够将图像作为输入的方法.

我尝试真正创建视频并存储它(例如,作为mpeg4文件).

谢谢你的任何建议.

video android image codec

9
推荐指数
2
解决办法
6930
查看次数

FFmpeg fourcc Avi编解码器支持列表?

堆栈溢出有几个类似的问题,但我无法解决这个问题.

我想获得fourccFFMpeg可以解码的avi编解码器的列表.

我知道如何获取所有格式ffmpeg -formats和编解码器,ffmpeg -codecs但两个列表都没有给我一个可访问的列表fourccs.我也找不到文件.

我需要这个名单,让我的应用程序可以访问fourcc一个的avi文件,并确定是否使用ffmpegVfW(或DirectX)尝试解码的文件.

有一些ffmpeg命令能给我这个清单吗?

ffmpeg avi codec

9
推荐指数
2
解决办法
1万
查看次数

适用于iPhone的OPUS音频编解码器编码

最近发布的OPUS Audio编解码器(libopus?)是否可以编译为在移动设备上运行(阅读iPhone/Android)?

我已经搜索并得出结论,te文档声明它在ARM设备上运行,但在尝试编译库之后,它总是在交叉编译时失败.

我错了或者这次没有支持这样的设备吗?

audio voip codec

9
推荐指数
1
解决办法
4396
查看次数

Android Media Codec视频解码

这是我的第一个问题,如果我错过了什么,请告诉我!

使用Android API 16的新Media Codec实现来尝试解码视频,以便我可以发送要作为纹理应用的帧(纹理部分已经完成).所以我已经提出了以下代码,并在堆栈中提供了一些帮助,但在runOutputBuffer()outputBufIndex回来的时候-1(或者我-1在超时时提供的无限循环中)任何人都可以帮助解决这个问题,并且/或者提供任何关于去哪里的建议从那里?

感谢您的帮助,这是我的代码:

public MediaDecoder( BPRenderView bpview )
{

    surface = bpview;
    extractor = new MediaExtractor( );
    extractor.setDataSource( filePath );
    format = extractor.getTrackFormat( 0 );
    mime = format.getString( MediaFormat.KEY_MIME );
    createDecoder( );
    runInputBuffer( );

}

public void createDecoder( )
{

    codec = MediaCodec.createDecoderByType( "video/avc" );
    // format =extractor.getTrackFormat( 0 );
    Log.d( LOG_TAG, "Track Format: " + mime );
    // format.setInteger( MediaFormat.KEY_BIT_RATE, 125000 );
    // format.setInteger( MediaFormat.KEY_FRAME_RATE, 15 );
    // …
Run Code Online (Sandbox Code Playgroud)

media video android decoding codec

9
推荐指数
1
解决办法
2万
查看次数

如何加速OpenH264的解码器

故事

我正在开发一个平滑的60 FPS 1080p(全高清)视频传输应用程序,它以x264编码,通过LAN将编码数据发送到接收设备,接收设备然后使用OpenH264的解码器对其进行解码.我设法让它工作,它工作正常并且稳定,但我发现它非常慢(大约20 FPS而不是所需的60 FPS).

问题

我做了大量测试,发现问题在于OpenH264解码器.

解码器使用我的i5-2500 @ 3.9Ghz的完整核心(总CPU使用率为25%),这太高了.尽管解码器是单线程的,但我在Media Player Classic上测试了原始数据,并且它的播放(60 FPS)仅占CPU使用率的0.3%.(将渲染引擎切换为"旧视频渲染"时,CPU使用率增加到12.8-14.4% - 请参阅注释)

所以我的问题是:我可以做些什么来加速解码过程以及我做错了什么?我无法想象OpenH264会如此缓慢.

额外信息

  • 编码器可以使用大约20%的CPU轻松推出60 FPS 1080p.
  • 连接是有线局域网,可以按> 10MB/s,所以没问题.
  • 发送器和接收器PC都有8GB RAM.

以下是与解码器相关的所有C++代码:

ISVCDecoder *decoder;
SBufferInfo bufferInfo;
SDecodingParam decodingParam;
uint8_t** yuvData;

void init(int width, int height) {
    WelsCreateDecoder(&decoder);
    decodingParam = { 0 };
    decodingParam.sVideoProperty.eVideoBsType = VIDEO_BITSTREAM_AVC;
    decoder->Initialize(&decodingParam);
    bufferInfo = { 0 };

    yuvData = new uint8_t*[3];
    yuvData[0] = new uint8_t[width*height];
    yuvData[1] = new uint8_t[width*height / 4];
    yuvData[2] = new uint8_t[width*height / 4];
}

bool …
Run Code Online (Sandbox Code Playgroud)

c++ performance codec h.264 openh264

9
推荐指数
1
解决办法
1615
查看次数