我正在尝试使用ffmpeg渲染帧并将其从视频转换为OpenGL纹理以放置在四边形上.我已经筋疲力尽了谷歌并没有找到答案,我找到了答案,但似乎没有一个有效.
基本上,我avcodec_decode_video2()用来解码帧然后sws_scale()将帧转换为RGB然后glTexSubImage2D()从它创建一个openGL纹理,但似乎无法使任何东西工作.
我确保"目标"AVFrame在SWS上下文设置中具有2维的功能.这是我的代码:
SwsContext *img_convert_ctx = sws_getContext(pCodecCtx->width,
pCodecCtx->height, pCodecCtx->pix_fmt, 512,
256, PIX_FMT_RGB24, SWS_BICUBIC, NULL,
NULL, NULL);
//While still frames to read
while(av_read_frame(pFormatCtx, &packet)>=0) {
glClear(GL_COLOR_BUFFER_BIT);
//If the packet is from the video stream
if(packet.stream_index == videoStream) {
//Decode the video
avcodec_decode_video2(pCodecCtx, pFrame, &frameFinished, &packet);
//If we got a frame then convert it and put it into RGB buffer
if(frameFinished) {
printf("frame finished: %i\n", number);
sws_scale(img_convert_ctx, pFrame->data, pFrame->linesize, 0, pCodecCtx->height, pFrameRGB->data, pFrameRGB->linesize);
glBindTexture(GL_TEXTURE_2D, texture);
//gluBuild2DMipmaps(GL_TEXTURE_2D, …Run Code Online (Sandbox Code Playgroud) 我正在使用HttpClient遇到一个奇怪的问题.我正在使用带有HttpPost的DefaultHttpClient().我正在使用HttpGet 100%成功,但现在尝试切换到HttpPost,因为我正在使用的REST API需要POST参数而不是GET.(仅限某些API调用,所以我知道GET调用工作正常,因此它不是API的错误).
此外,我尝试在我写的一个简单的PHP脚本上使用HttpPost查找POST参数'var'并将其回显到屏幕,传递此参数如下工作正常:
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
postMethod = new HttpPost("http://www.examplewebsite.com");
nameValuePairs.add(new BasicNameValuePair("var", "lol"));
try {
postMethod.setEntity(new UrlEncodedFormEntity(nameValuePairs));
response = httpClient.execute(postMethod, responseHandler);
Log.i("RESTMethod", response);
...
Run Code Online (Sandbox Code Playgroud)
问题是,当我尝试对API执行相同的调用时(但明显将params更改为API参数),我收到以下错误:
Authentication error: Unable to respond to any of these challenges: {}
Run Code Online (Sandbox Code Playgroud)
我请求的页面是一个HTTPS页面,这可能是问题吗?
但是对API上的原始HTTP页面执行相同类型的POST请求会产生相同的错误,除非我注释掉StringEntity部分然后它运行(但返回xml并且我想传递一个参数来请求JSON中的数据) .
这似乎是一个非常奇怪的问题(非https部分),但无法真正找到任何关于这个问题的帮助,所以很抱歉,如果答案在那里.
有任何想法吗?
提前致谢,
Infinitifzz
编辑:好的,我无处可去所以我想如果我引导你进入API可能会有所帮助,那就是8Tracks API,你可以看到你需要为所有请求传递一个dev键(api_key)而我我坚持使用https来记录用户:http://www.8tracks.com/sessions.xml "part.
希望这会有所帮助因为我走到了尽头.
谢谢,
Infinitifizz
我一直试图让这个水平导航现在排序过去几个小时,没有任何工作.我试过reset.css样式表,*{padding:0; 保证金:0)等我的图像链接之间仍然存在间隙.
你看,导航是由内联显示的无序图像链接列表组成,但每个图像之间,左,右,上,下都有间隙,我看不出原因.它在所有浏览器中都是一样的.
这是该页面的链接,因此来源:Beansheaf Temporary
链接到css: http://pentathlongb-yorkshire.co.uk/tomsmith/Beansheaf/styles/fund2.css
该网站的其余部分显然还没有完成,这只是我现在担心的导航.
我把头发拉过这一头.
我有一个应用程序,当您按下菜单项时,我希望它显示输入警报对话框.当用户点击"确定"时,他们输入到对话框中的EditText的文本想要返回以便稍后在活动中使用.
所以我想:
name = input.getText().toString(); //input is an EditView which is the setView() of the dialog
Run Code Online (Sandbox Code Playgroud)
在"确定"按钮的onClick内部可以工作,但事实并非如此.Eclipse告诉我,我无法在onClick中设置名称,因为它不是最终的,但如果我将名称的定义更改为final,则无法明显更改,因此无法在onClick()中设置.
以下是此位的完整代码:
String routeName = "";
AlertDialog.Builder alert = new AlertDialog.Builder(this);
alert.setTitle("Title");
alert.setMessage("Message");
// Set an EditText view to get user input
final EditText inputName = new EditText(this);
alert.setView(inputName);
alert.setPositiveButton("Set Route Name", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
routeName = inputName.getText().toString();
}
});
alert.show();
Run Code Online (Sandbox Code Playgroud)
我必须在这里做一些非常愚蠢的事情因为我已经搜索了很长时间并且发现没有其他人有同样的问题.
有谁能请赐教?
感谢您的时间,
InfinitiFizz
我目前正在开发一个网站,主导航由图像链接组成,因为用于它们的字体不是标准的.
我的客户唯一的担心是这会搞乱搜索引擎优化吗?我可以在图像中添加alt文本,例如"link 1",还是使用锚标记的name属性?或者将导航作为锚标签与其中的链接名称更好:<a href="...">link 1</a>?
我是SEO的新手,所以真的不知道向他推荐什么,
谢谢你的时间,
InfinitiFizz
我正在尝试将facebook集成到我的应用程序中,因此遵循以下教程:Facebook Android但我无法获得第一个示例(单点登录).当我的应用程序加载时,我得到了facebook对话框,但它只是说"发生错误.请稍后重试." 在底部有一个facebook风格的"Ok"按钮,logcat中没有任何内容:

我按照教程中的步骤操作,但我猜测APP ID或keytool生成的hashkey有问题.以下是我遵循的步骤:
我不知道为什么logcat中没有任何内容,但是当我安装它时,控制台总是会毫不犹豫地说:ActivityManager: Warning: Activity not started, its current task has been brought to the front
我找不到任何我的应用程序的logcat引用或我从facebook sdk得到的错误是: Facebook-ProxyAuth(4828): Failed to read calling package's signature.
我已经在这几个小时了,任何帮助将不胜感激.我无法相信facebook SDK和Android的帮助是如此粗略,Facebook应该为自己感到羞耻.
谢谢,
InfinitiFizz
我正在使用IntentService来监听GPS位置更新,以便在用户离开活动时运行.IS将消息中的Location发送给活动的处理程序.
问题是,当用户点击"停止跟踪"按钮时,状态栏通知"跟踪..."仍然存在,因为它是在IntentService中创建的.所以我凌驾于onDestory()所以我可以打电话:
mNotificationManager.cancel(TRACKING);
Run Code Online (Sandbox Code Playgroud)
但问题是,当我实现onDestroy()时,它会在onHandleIntent之后立即调用.如果我删除我的覆盖onDestroy()代码,那么它不会立即被调用并且运行正常,将位置发送回活动以在屏幕上显示.
任何想法为什么onDestroy()会立即调用,如果我实现它,但不是,如果我不?
我在这里很困惑.
谢谢大家,
Infinitifizz
android android-intent android-service android-location android-lifecycle
我是cakePHP的新手,但由于我无法使jQuery与它一起工作,因此接近退出使用它.
我正在使用cakePHP 1.3,所以认为Html和Js助手已经使Javascript和Ajax冗余,但我真的找不到任何关于如何使用Js的帮助/ api文档就足够了.
我首先要做的就是用jQuery将一些数据发送到cakePHP,然后将一些数据返回到jQuery并提醒()它.出于某种原因,这只是不起作用.这是我的代码:
test.js
$('.social').click(function()
{
$.ajax({
type: 'POST',
url: '/activities/add_activity',
data: 'type=social',
dataType: 'json',
success: function(data)
{
alert(data);
},
error: function()
{
alert('wut');
}
});
});
Run Code Online (Sandbox Code Playgroud)
activities_controller.php
function add_activity()
{
if($this->RequestHandler->isAjax())
{
$this->autoRender = false;
$this->autoLayout = false;
$this->header('Content-Type: application/json');
echo json_encode(array('result'=>'hello');
return;
}
}
Run Code Online (Sandbox Code Playgroud)
每当我点击带有class ='social'的按钮时,我都会收到警告"wut",这意味着错误.
我有我的activities_controller.php中包含的RequestHandler组件和Javascript,Js和Ajax助手.
另外,test.js和jquery.js使用html-> script()进行链接; 在default.ctp和所有其他jQuery的东西工作,所以它不是那样的.
我也在我的beforeFilter()中为activities_controller.php得到了这个:
if($this->RequestHandler->isAjax())
{
Configure::write('debug',0);
}
parent::beforeFilter();
Run Code Online (Sandbox Code Playgroud)
有什么想法有什么不对?它是jQuery的东西还是cakePHP的东西?或两者?
提前致谢,
Infinitifizz
PS
我之前从未在jQuery中完成过AJAX,所以也许它与搞乱的东西有关,我只做过简单的javascript AJAX.
我正在开发一个基于GPS的应用程序,刚刚开始添加我的UX功能,如通知和进度条,但我仍然坚持使用持续通知.
由于它是一个GPS应用程序,当用户跟踪开始时,我设置了一个持续通知,以显示他们正在被跟踪,但如何在我的应用程序中点击"停止跟踪"时停止此通知?我必须告诉NotifyManager吗?我基本上试图获得音乐播放器具有的功能,因为当用户按下播放时出现"播放"通知,但是当他们暂停时,正在进行的"播放"通知被破坏.
此外,我以前从未使用过GPS,但我是否应该在服务中进行此操作,以便在我的应用程序被操作系统内存不足时用户不会停止跟踪?或者那不会发生?
notifications gps android android-service android-notifications
我正在使用Ffmpeg创建一个OpenGL视频播放器,我的所有视频都不是2的幂(因为它们是正常的视频分辨率).它使用我的nvidia卡以精细的fps运行,但我发现它不能在较旧的ATI卡上运行,因为它们不支持非二次幂纹理.
我只会在Nvidia卡上使用它,所以我并不太关心ATI问题,但我想知道如果textuers是2的幂,我会得到多少性能提升?是否值得填补它们?
此外,如果它值得,我如何将它们填充到最接近的较大的二次幂?
我一直在搜索,只是无法找到解释或原因发生这种情况,但DateFormat的解析(String)方法只是没有正确解析我的字符串.
我正在尝试将一个String解析为用于HTTP头的日期格式,并获得了自己的String,例如:
Thu, 11 Nov 2010 18:34:22 GMT
Run Code Online (Sandbox Code Playgroud)
其格式如下:
E, d MMM yyyy HH:mm:ss z
Run Code Online (Sandbox Code Playgroud)
但是当我使用df.parse(dateStr);它时,我就是这样做的:
Thu Nov 11 18:34:22 GMT 2010
Run Code Online (Sandbox Code Playgroud)
这与我想要的完全不同,为什么GMT之后的那一年呢?为什么不再有逗号?为什么这个月之后的日期呢?
我现在对此完全感到困惑,无法找到解决方案,但我确实需要以该格式提供日期.逗号弄乱了吗?还是冒号?
谢谢你的时间,
Infinitifizz
PS
忘了提这个,但我尝试过dateformat.setLenient(false)并没有什么区别.
PPS
我正在尝试这样做来比较日期与date1.before(date2)和after()等,看看是否有一个比另一个更新,但我不能这样做,因为解析不起作用.
即使它们看起来相同但只是格式不同,它们也不一样,因为在它们两个上调用getTime()之后(当我提供了2个相同的日期时)长度不一样.截至日期为:
星期四,2010年11月11日19:38:52 GMT对文件的lastModified()
如果我输入字符串"星期四,2010年11月11日19:38:52 GMT",然后比较他们的长片一旦使用parse()将字符串转换为日期,然后在该日期调用getTime()我得到:
lastModified = 1289504332671 fromString = 1289504332000
它只是最后3位不同,这有什么意义吗?
再次感谢您的时间和抱歉,我没有把这一点放在第一位,
Infinitifizz
我目前正在尝试将 .NET JSON 编码器转换为 NETMF,但遇到了问题,Convert.ToString()因为 NETMF 中没有这样的东西。
编码器的原始行如下所示:
Convert.ToString(codepoint, 16);
Run Code Online (Sandbox Code Playgroud)
在查看了文档后,Convert.ToString(Int32, Int32)它说它是int32通过提供 int 作为第一个参数和提供基数作为第二个参数来将 an 转换为 int 2、8、10 或 16。
有哪些低级代码可以说明如何执行此操作或者我将如何执行此操作?
正如您从代码中看到的,我只需要从 an 转换Int32为Int16。
编辑
啊,编码器接下来也想做:
PadLeft(4, '0');
Run Code Online (Sandbox Code Playgroud)
在字符串上,这只是在字符串的开头添加 4 '0' + '0' + '0' + '0' 吗?
我正在使用OpenGL,Ffmpeg和SDL播放视频,目前正在优化获取帧,解码帧,将它们从YUV转换为RGB,将它们上传到纹理并在四边形上显示纹理的过程.这些阶段中的每一个都由单独的线程执行,并且它们被写入由SDL互斥体和条件控制的共享缓冲区(除了上传和显示纹理,因为它们需要在相同的上下文中).
我让播放器在单独的线程上使用解码,转换和OpenGL上下文工作正常但是我意识到因为视频是每秒25帧,我只从缓冲区获得转换后的帧,将其上传到OpenGL并将其绑定/显示OpenGL线程中有40毫秒.由于这个40ms的间隙,渲染循环绕过大约6-10次,没有显示它显示的每一帧的下一帧.
因此我决定为纹理设置一个缓冲区也是一个好主意,并设置一个纹理数组,用glGenTextures()和我需要的glParameters等创建和初始化.
当自最后一帧刷新以来还没有40ms时,运行一个方法,该方法从转换缓冲区中获取下一个转换后的帧,并通过绑定它然后调用glTexSubImage2D()将其上传到纹理缓冲区中的下一个自由纹理.当自最后一帧刷新以来已经过了40ms,运行了一个单独的方法,它从纹理缓冲区中抓取下一个GLuint纹理并将其与glBindTexture()绑定.因此,我只是将之前正在完成的工作(从转换缓冲区,上传,显示中获取)拆分为单独的方法(从转换缓冲区中获取,上传到纹理缓冲区|并从纹理缓冲区中获取,显示)以利用40ms之间的浪费时间刷新.
这听起来合理吗?因为当跑步时,视频一直以零星的方式停止,有时大约4帧被播放(假设每40ms)但是然后有2秒的间隙,然后显示1帧,然后是3秒的间隙而且视频完全无法观看.
代码几乎与我如何管理从解码缓冲区中获取解码帧的转换线程,将它们从YUV转换为RGB然后将它们放入转换缓冲区,因此无法看到大量瓶颈可能存在的位置.
瓶颈可能在OpenGL方面吗?事实是我将新的图像数据存储到10个不同的纹理这个问题就像从纹理缓冲区中抓取新纹理一样,原始数据在视频内存上的内存位置方面可能距离最后一个数百万英里. ?这是我唯一的尝试答案,但我不太了解OpenGL如何在内部工作,这就是我在这里发帖的原因.
有人有什么想法吗?
android ×5
opengl ×3
textures ×3
.net ×1
ajax ×1
c# ×1
cakephp ×1
css ×1
date ×1
date-format ×1
date-parsing ×1
datetime ×1
facebook ×1
ffmpeg ×1
gps ×1
html ×1
http-get ×1
http-post ×1
httpclient ×1
https ×1
hyperlink ×1
image ×1
java ×1
javascript ×1
jquery ×1
margin ×1
padding ×1
seo ×1
texturing ×1