FFmpeg
WaitForDone
这个作者很懒,什么都没留下…
展开
-
关于H264编码的问题
在解码后再编码时发生了Application provided invalid, non monotonically increasing dts to muxer in stream 原因是解码后我们得到一个AVFrame ,这里的AVFrame的pkt_pts记录了AvPacket 的pts,然后我们调用avcodec_encode_video2时,要知道AVFrame的pts原创 2016-06-24 11:43:28 · 1042 阅读 · 0 评论 -
记录FFmpeg遇见的坑
利用av_frame_clone可以将一个frame clone后,其实也只是v_frame_alloc()+av_frame_ref()。但是有时候在音频帧的clone后不知道为什么会导致了返回了NULL。这个时候就懵逼了。这个debug进去后发现了一个问题,就是channel_layout没有设置导致的。这个因为是我手动设置解码器,所以忘记弄了,这个一般直接读取的话没有那个错误。原创 2017-07-13 17:37:31 · 3792 阅读 · 1 评论 -
关于FFmpeg 利用videotoolbox硬编
在https://trac.ffmpeg.org/wiki/HWAccelIntro介绍下,我们知道ffmpeg不单单支持videotoolbox的硬解,还加上了硬编的能力。在这里介绍一下videotoolbox的硬编,首先mac在编译ffmpeg时候你要加上--enable-videotoolbox,编译后就可以用videotoolbox的硬编了。在使用时候跟普通的软件编译没有什么大不同,这原创 2017-06-14 16:24:16 · 7630 阅读 · 1 评论 -
利用addr2line调试崩溃的bug
在linux下,程序莫名奇妙崩溃,而且不是固定的崩溃,这种情况,你肯定很捉急。这里你可以利用addr2line定位到程序崩溃的地点。首先你先到/var/log/syslog,这里log不一定是这个文件,有可能时间久了,压缩了。然后打开它,你会发现general protection ip:43917e sp:7fa0ca7a3cd0 error:0 in 。 ip 指是编码器的编译后命令addre原创 2017-04-26 09:23:45 · 1906 阅读 · 0 评论 -
合成视频遇见的坑
打算弄个合成片头的软件,根据想法是打算只将片头按照正片的编码格式编码后写入新的视频,那样只需要重编片头部分,不需要重编正片。但发现如果直接复制正片的视频编码器信息的话有一个问题出现了,那就是播放片头后,正片没有办法播放。这是怎么回事呢?而且不是全部,只是某些视频。初步怀疑是SPS 和 PPS, 因为合成的片头跟正片不是同一个sps,所以导致这种情况。接着我在每个pkt前都加上了一个sps和pp原创 2017-03-16 14:38:55 · 918 阅读 · 0 评论 -
ffmpeg工作遇见坑
在以往的output里一直复制input的condeccontext,今天沿用代码时候发现视频播放时候有很大部分缺失,查看一下发现output的timebase比起input的timebase大很多,这不正常。反复对比之前跟现在的差别,发现了我在input的时候多了一个打开解码器的过程,这个导致了我output的timebase不同。这次Mark下来防止以后再遇见。在重编码视频时候我发现视原创 2017-01-12 16:34:53 · 2068 阅读 · 0 评论 -
swr_convert音频重采样成AV_SAMPLE_FMT_FLTP
在网上很多的教程,利用swr_convert来进行音频的重采样,但有时候我们发现有些转换成AV_SAMPLE_FMT_S16是没有问题的,但一旦是AV_SAMPLE_FMT_FLTP 时候,程序直接崩溃,这是因为网上有些教程里那个buffer是自定义一个连续的片段,然后直接丢给swr_convert,但这样在s16上是没有问题,s16上只占用了frame->data[0],但一旦是AV_SAMPL原创 2017-03-14 09:07:24 · 4667 阅读 · 2 评论 -
Opencv的Mat多图像合成坑
将ffmpeg解码后得到的YUV数据进行画面合成时候,你发现除了avfifter这个万能胶水在多个不是同一个timebase或者更准确说是帧率不同时候,你会发现效率慢得让人难以接受外,还有时候不能成功。这时我们不得不重新认识一下,要自己手动合并,这里我用了opencv这个库。一切进行十分顺利,直到合成后发现画面的UV数据完全错误,这时因为用了Mat的Rect这个共享时候没有重定向对的地方,一般原创 2017-02-13 16:51:15 · 1248 阅读 · 0 评论 -
windows下qt编译ffmpeg
这里用到工具qt自带的mingw+msys下载msys后,参考http://blog.csdn.net/caoshangpa/article/details/50947926就可以编译好ffmpeg,这里说一下,你也可以自己带上x264等工具编译一次,但有个坑是qt5.6里,我这边用widgets Application时就出现了ffmpeg的链接不上,不知道是我姿势不好还是该版本原创 2016-12-15 15:34:04 · 2745 阅读 · 0 评论 -
关于Hls导致了wa的使用高
Nginx开启了Hls后top后发现wa的使用,使用iotop发现nginx一直在写io,导致了wa的高,从而导致了cpu一直在等待io。更坑的是多路的情况下才出现这个问题,一直以为自己的程序cpu处理不过来导致的。最后不断优化,还是出现这个问题。还是使用top发现了wa一直高,而正是wa的高导致了 load average一直居高不下。使用iostat可以直观看到io的瓶颈问题,最后就是靠lso原创 2016-10-24 09:56:09 · 635 阅读 · 0 评论 -
ffmpeg 利用AVFilter音频重采样
前段时间一直在搞pcm转aac ,一开始打算直接来一个frame就编码,但发现因为pcm音频包每个packet是320个字节,AAC每个Packet是1024个字节。所以要加入个filter来转换。不过你也可以自己弄个buffer,等包够1024再编码,不建议这样做。如果只是想研究就可以,因为pts那些很烦,很容易导致一些奇怪的问题出现。在此可以参考http://www.cnblogs.com/wa原创 2016-07-15 13:47:40 · 2551 阅读 · 0 评论 -
关于Windows media播放时AAC没有声音ffmpeg
在做项目时候,遇到不小坑,主要是国内的资料太少以及英语水平勉强,所以才让自己的问题一直靠猜想以及验证中,浪费不小时间。这里这个问题一开始我怀疑是没有加上adts头导致的。但最后发现不是这个问题,还有media 的播放格式也有严格的控制,这里可以到官网看看。 我这边是因为codec里有一个profile属性,只有在FF_PROFILE_AAC_LOW的情况下,media才可以在网页上播放,不然会在原创 2016-09-07 15:06:36 · 2598 阅读 · 0 评论 -
录制播放后时间不对问题
这次项目里,我发现我录制的视频里有个问题是关于那个播放时候十分快,当时以为时间戳不同步导致的,但10几秒的视频最后变成2分钟,这个问题有可能是因为把packet封装的时候将视频和音频混了导致的,你可以打印packet的streamid和视频的id看看。在此记录一下自己犯了这个问题。原创 2016-08-17 08:34:20 · 2970 阅读 · 1 评论 -
记录这次空指针的原因
当初因为要将输入和输出分离,从而以为将那些代码直接带走就可以。但在这发生了空指针的现象,十分让人恼火的是这个错误是时不时才出现,导致不知哪里出现这个问题。最后才发现是当时做了一个断线重连的机制,导致当初的对象删除,从而使指针指向空的对象,这个坑因为当时后面加上需求,忽略了这种情况。 当初为了保护资源,只返回个限定的指针,因为当初是在整个对象之内,所以就算断线重连也不会发生这种情况,在此写下,以备以原创 2016-08-16 15:44:28 · 429 阅读 · 0 评论 -
文章标题
在项目时候一直使用av_free_packet,然后因为项目的AVPacket是使用了动态申请,一直使用这个以为可以delete,但事实上,av_free_packet只是释放掉那个包里面的数据,而整个结构没有delete,从而导致了内存泄漏,在此写下已给后面的人一个提示。原创 2016-07-28 09:37:12 · 381 阅读 · 0 评论 -
ffmpeg初始化文件头信息时
if(ofmt_ctx->oformat->flags & AVFMT_GLOBALHEADER) o_video_stream->codec->flags |= CODEC_FLAG_GLOBAL_HEADER;要将其头设上flags,不然会导致AVStream的priv_pts不存在。还有X264编码时,你会发现总是少了前面几秒的,那个要在循环体结束后重新再接。原创 2016-06-24 16:18:44 · 1501 阅读 · 0 评论 -
ffmpeg莫名其妙的问题
AVFormatContext* ifcon =NULL,这里一定要将其设置为NULL,不然会导致一些奇怪的问题出现。原创 2016-06-23 14:37:14 · 436 阅读 · 0 评论 -
ffmpeg 奇葩问题2
前段时间一直搞固定码率的问题,在这里不得不吐槽国内的资料。在固定码率那里如果只是根据网上那种将bit_rate, rc_max_rate, rc_min_rate, 以及rc_buffer_size设置到特定的码率下,在ts的模式下,你会发现还是vbr的编码而不是网上说的cbr。这个是第一个坑,大部分人转载了那篇不知哪里来的文章,而且没有验证或者是特定格式的问题,导致了不是cbr的出现,原创 2017-09-19 14:58:35 · 969 阅读 · 0 评论