小编Wil*_*ann的帖子

Java hashCode方法的最大返回值

有人能告诉我intJava String.hashCode()方法可以返回的最大值和最小值是多少?

java hash

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

Android 防止键盘关闭

是否可以防止用户关闭软键盘。换句话说,当我的活动可见时,键盘在屏幕上(始终)可用。这可能吗?如果是这样,你将如何实现它?

keyboard android user-input android-layout

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

如何在Android中使用JNI将资产FileDescriptor正确传递给FFmpeg

我正在尝试使用FFmpeg,JNI和Java FileDescriptor在Android中检索元数据,但它并没有"正常工作".我知道FFmpeg支持管道协议,所以我试图以cat test.mp3 | ffmpeg i pipe:0编程方式进行搜索:" ".我使用以下代码从与Android应用程序捆绑在一起的资产中获取FileDescriptor:

FileDescriptor fd = getContext().getAssets().openFd("test.mp3").getFileDescriptor();
setDataSource(fd, 0, 0x7ffffffffffffffL); // native function, shown below
Run Code Online (Sandbox Code Playgroud)

然后,在我的本机(In C++)代码中,我通过调用以下方式获取FileDescriptor:

static void wseemann_media_FFmpegMediaMetadataRetriever_setDataSource(JNIEnv *env, jobject thiz, jobject fileDescriptor, jlong offset, jlong length)
{
    //...

    int fd = jniGetFDFromFileDescriptor(env, fileDescriptor); // function contents show below

    //...
}

// function contents
static int jniGetFDFromFileDescriptor(JNIEnv * env, jobject fileDescriptor) {
    jint fd = -1;
    jclass fdClass = env->FindClass("java/io/FileDescriptor");

    if (fdClass != NULL) {
        jfieldID fdClassDescriptorFieldID = …
Run Code Online (Sandbox Code Playgroud)

java-native-interface android metadata ffmpeg android-ndk

5
推荐指数
2
解决办法
4828
查看次数

从C++调用C函数,"无匹配函数"错误

我已经定义了以下头文件(在C中),省略了函数实现,因为不需要:

#ifndef FFMPEG_MEDIAMETADATARETRIEVER_H_
#define FFMPEG_MEDIAMETADATARETRIEVER_H_

#include <libavcodec/avcodec.h>
#include <libavformat/avformat.h>
#include <libavutil/dict.h>

int setDataSource(AVFormatContext** pFormatCtx, const char* path);

#endif /*FFMPEG_MEDIAMETADATARETRIEVER_H_*/
Run Code Online (Sandbox Code Playgroud)

在C++中,我定义了第二个头文件:

#ifndef MEDIAMETADATARETRIEVER_H
#define MEDIAMETADATARETRIEVER_H

using namespace std;

extern "C" {
  #include "ffmpeg_mediametadataretriever.h"
}

class MediaMetadataRetriever
{
public:
    MediaMetadataRetriever();
    ~MediaMetadataRetriever();
    int setDataSource(const char* dataSourceUrl);
};

#endif // MEDIAMETADATARETRIEVER_H
Run Code Online (Sandbox Code Playgroud)

在,mediametadataretriever.cpp中我定义了以下函数:

int MediaMetadataRetriever::setDataSource(
    const char *srcUrl)
{
    // should call C function
    AVFormatContext* pFormatCtx;
    return setDataSource(&pFormatCtx, srcUrl);
}
Run Code Online (Sandbox Code Playgroud)

当我尝试在Eclipse中编译这个(C++)项目时,我得到一个"No matching function call ..."错误,该错误与:

return setDataSource(&pFormatCtx, srcUrl);
Run Code Online (Sandbox Code Playgroud)

如果我注释掉了这个电话,代码编译得很好:

int MediaMetadataRetriever::setDataSource(
    const char *srcUrl)
{ …
Run Code Online (Sandbox Code Playgroud)

c c++ compiler-construction

4
推荐指数
1
解决办法
1360
查看次数

使用ant检查是否存在可执行命令

是否可以检查命令是否作为ant任务的一部分存在.例如,我想确保"yasm"命令作为ant任务的一部分存在.这可能吗?如果是这样,你能提供一个例子吗?

ant

3
推荐指数
2
解决办法
2820
查看次数

Android Intent用于新的一天或重要时间的变化

Android中是否有意图在重大时间变化(如新的一天)上广播.我正在寻找类似于iOS中广播的重要时间变化通知的内容.我正在尝试安排在每天开始时进行处理.我知道这可能与AlarmManager有关但我想避免安排我自己的警报,如果有另一种方式.

android alarmmanager android-intent

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

Android中的Charset检测

我的Android应用程序检索SHOUTcast元数据并显示它.我正在使用非英语字符集.基本上,元数据显示为乱码.如何执行字符编码检测并正确显示文本?很抱歉,如果这是一个非常重要的问题,我对这个主题并不精通.

有问题的流是:http://skully.hopto.org:8000

android metadata character-encoding

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

如何在C++中从文件中读取大端整数?

说我有一个二进制文件; 它包含正二进制数,但以大端编写为32位整数

我该如何阅读此文件?我现在有这个.

int main() {
    FILE * fp;
    char buffer[4];
    int num = 0;
    fp=fopen("file.bin","rb");
    while ( fread(&buffer, 1, 4,fp) != 0) {

        // I think buffer should be 32 bit integer I read,
        // how can I let num equal to 32 bit big endian integer?
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c++

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

将视频帧编码为PNG时的绿色图像

我编写了以下代码将解码后的视频帧转换为PNG图像.代码不会崩溃,但存储在'avpkt'中的图像数据会产生全绿色图像.我究竟做错了什么?任何帮助,将不胜感激.

// pFrame - the decoded frame
// avpkt - the packet to fill with the converted image
void convert_image(AVCodecContext *pCodecCtx, AVFrame *pFrame, AVPacket *avpkt, int *got_packet_ptr) {
    AVCodecContext *codecCtx;
    AVCodec *codec;

    *got_packet_ptr = 0;

    codec = avcodec_find_encoder(TARGET_IMAGE_CODEC);
    if (!codec) {
        printf("avcodec_find_decoder() failed to find decoder\n");
        goto fail;
    }

    codecCtx = avcodec_alloc_context3(codec);
    if (!codecCtx) {
        printf("avcodec_alloc_context3 failed\n");
        goto fail;
    }

    codecCtx->bit_rate = pCodecCtx->bit_rate;
    codecCtx->width = pCodecCtx->width;
    codecCtx->height = pCodecCtx->height;
    codecCtx->pix_fmt = TARGET_IMAGE_FORMAT;
    codecCtx->codec_type = AVMEDIA_TYPE_VIDEO;
    codecCtx->time_base.num = pCodecCtx->time_base.num;
    codecCtx->time_base.den = …
Run Code Online (Sandbox Code Playgroud)

ffmpeg

0
推荐指数
1
解决办法
2333
查看次数