主要玩家似乎是x264和xvid,两者都是GPL.这意味着我们无法将解码功能集成到回放应用程序中,而无需将整个事物作为GPL许可,因此我们也无法使用.
首选目标平台是Linux.任何非病毒开放许可证都没问题,我们非常乐意提供我们对库所做的任何更改的来源,而不是我们的整个应用程序.
有没有什么?或者我们现在应该在开发过程中使用GPL作为测试,并计划在发货之前用商业许可的编解码器替换它?
我正在编写一个C++库,用于在不同格式/编解码器之间解码和编码音频.我有一个例程,可以在加载所需的编解码器库之前快速检测格式.
对于WAV文件,可以在文件开头简单地查找ASCII值"RIFF"和"WAVE".这同样适用于FLAC,我们可以简单地读取前4个字节,即"fLaC".
但是如何快速检测文件是否是MP3?我不能依赖文件扩展名.我也无法尝试解码第一个MP3帧,因为文件开头可能还有其他数据(例如:ID3,封面图片等).
我收到了对此Web服务的GET响应
@GET
@Path("/nnnnnn")
public Response pfpfpfpf(@BeanParam NNNNNN n)
Run Code Online (Sandbox Code Playgroud)
该班NNNNN有:
@QueryParam("parameter")
private String parameter;
Run Code Online (Sandbox Code Playgroud)
为此,parameter有一个得到和设置.
我发送了一个带有查询参数的get请求,它正在自动绑定到我的选项NNNNN,一切都很棒.
但是,现在我在查询网址中发送日语字符串.我在发送之前用UTF-8对参数进行编码,我必须使用UTF-8解码它们.
但我的问题是我应该在哪里调用URLDecoder?我试图在该参数的getter中调用它,但它不起作用,我一直有类似的东西,C3%98%C2%B4%C3%98%C2 而不是日语字符
简短版本:将MP3(并且理想情况下是AAC/Ogg/WMA)中的数据编码成Java阵列或ByteBuffer的最佳方法是什么?
我正在整理一个程序,它将减慢和加速声音文件作为其功能之一.这适用于WAV文件,这是一个标题加上需要发送到扬声器的确切二进制数据,现在我需要为MP3实现它(理想情况下,这也支持AAC,Ogg和WMA,但是那些不太受欢迎的格式,这不是必需的).Android没有公开接口来解码MP3而不播放它,所以我需要创建该接口.
虽然我对其他人开放,但有三种选择可供选择:
1)编写我自己的解码器.我已经有一个功能帧检测器,我希望用于选项(3),现在应该只需要实现霍夫曼解码表.
2)使用JLayer或等效的Java库来处理解码.我不清楚这里的许可证后果是什么.
3)连接到libmedia库/ MediaPlayerService.这就是SoundPool所做的事情,而且该服务的使用量使我相信,虽然它正式不稳定,但实现并不是任何地方.这意味着编写JNI代码以连接到服务,但我发现这是一个很深的兔子洞.在表面上,我遇到了sp <>模板的问题.
是否可以用0-9a-zA-Z字符序列表示十六进制字符序列(0-9A-F),因此结果序列更小并且可以解码?
例如:
$hex = '5d41402abc4b2a76b9719d911017c592';
echo $string = encode($hex); // someASCIIletters123
echo decode(string) == $hex; //true
Run Code Online (Sandbox Code Playgroud) 我通过libavcodec解码视频,使用以下代码:
//Open input file
if(avformat_open_input(&ctx, filename, NULL, NULL)!=0)
return FALSE; // Couldn't open file
if(avformat_find_stream_info(ctx, NULL)<0)
return FALSE; // Couldn't find stream information
videoStream = -1;
//find video stream
for(i=0; i<ctx->nb_streams; i++)
{
if((ctx->streams[i])->codec->codec_type==AVMEDIA_TYPE_VIDEO)
{
videoStream=i;
break;
}
}
if (videoStream == -1)
return FALSE; // Didn't find a video stream
video_codec_ctx=ctx->streams[videoStream]->codec;
//find decoder
video_codec=avcodec_find_decoder(video_codec_ctx->codec_id);
if(video_codec==NULL)
return FALSE; // Codec not found
if(avcodec_open(video_codec_ctx, video_codec)<0)
return -1; // Could not open codec
video_frame=avcodec_alloc_frame();
scaled_frame=avcodec_alloc_frame();
static struct SwsContext *img_convert_ctx;
if(img_convert_ctx == NULL) …Run Code Online (Sandbox Code Playgroud) 我有以下网址: $url = 'http://mysite.com/?p=welcome&x=1&y=2';
我需要解码它以便header("Location: $url");实际工作.
但是,使用urldecode($url)不起作用,因为它没有解码&- > &因此浏览器被重定向到http://mysite.com/?p=welcome&x=1&y=2失败.
我需要它来解码,使它看起来像: http://mysite.com/?p=welcome&x=1&y=2
我怎么做?
我正在使用OpenCV的VideoCapture(使用ffmpeg支持编译)从IP摄像机传输H264内容.
到目前为止,工作正常,但每隔一段时间我就会出现解码错误(来自我假设的ffmpeg):
[h264 @ 0x103006400] mb_type 137 in I slice too large at 26 10
[h264 @ 0x103006400] error while decoding MB 26 10
[h264 @ 0x103006400] negative number of zero coeffs at 25 5
[h264 @ 0x103006400] error while decoding MB 25 5
[h264 @ 0x103006400] cbp too large (421) at 35 13
[h264 @ 0x103006400] error while decoding MB 35 13
[h264 @ 0x103006400] mb_type 121 in P slice too large at 20 3
[h264 @ 0x103006400] error …Run Code Online (Sandbox Code Playgroud) 我已经使用ffmpeg成功实现了一个视频播放器.我现在正在尝试使用硬件解码,但我面临一些问题.我发现了一篇帖子,我将其作为起点:http://comments.gmane.org/gmane.comp.video.ffmpeg.libav.user/13523
我已经更新了为解码器设置必要内容的代码.更新后的代码可以在这里找到:https://drive.google.com/file/d/0B5ufHdoDzA4ieVk5UVpxcDNzRHc/view?usp=sharing
这就是我用它来初始化解码器的方法:
// Prepare the decoding context
AVCodec *codec = nullptr;
_codecContext = _avFormatContext->streams[_streamIndex]->codec;
if ((codec = avcodec_find_decoder(_codecContext->codec_id)) == 0)
{
std::cout << "Unsupported video codec!" << std::endl;
return false;
}
_codecContext->thread_count = 1; // Multithreading is apparently not compatible with hardware decoding
InputStream *ist = new InputStream();
ist->hwaccel_id = HWACCEL_AUTO;
ist->hwaccel_device = "dxva2";
ist->dec = codec;
ist->dec_ctx = _codecContext;
_codecContext->coded_width = _width;
_codecContext->coded_height = _height;
_codecContext->opaque = ist;
dxva2_init(_codecContext);
_codecContext->get_buffer2 = ist->hwaccel_get_buffer;
_codecContext->get_format = …Run Code Online (Sandbox Code Playgroud) 我解析一个schematic file具有以下结构
该.schematic文件格式是由社区创建到存储的Minecraft世界的部分与第三方程序使用。原理图为NBT格式
该命名二进制变量(NBT)文件格式是使用的游戏的Minecraft为各种事情非常简单的结构化的二进制格式
块Data Value小号定义的Minecraft地形的部分。
我检索了block data每个Minecraft块,并需要弄清楚如何解码这些字节。这是《我的世界》Stairs方块的一个例子
例如,阶梯块数据包括:
我可以使用nbt-js解析整个原理图文件,这使我可以像这样访问块数据:
var b = schem.value.Data.value[index];
Run Code Online (Sandbox Code Playgroud)
我使用以下代码解码楼梯块数据位数据
var facing = b & 0x03;
var half = (b >> 2) & 0x01;
var shape = (b >> 3) & 0x03;
Run Code Online (Sandbox Code Playgroud)
这些配置值对于确定应如何渲染楼梯楼梯至关重要。例如,我使用面值旋转块:
block.rotateX(facing);
Run Code Online (Sandbox Code Playgroud)
但是,对于每种块类型,位的解释都不同,这在我能找到的任何地方都没有定义。