社区
多媒体/流媒体开发
帖子详情
Linux下调用ffmpeg库录像问题
wenzheng101
2011-11-22 05:01:38
我调用ffmpeg的库,将h264码流录制成avi文件。但是录出来的文件用播放器播放时,大约在11~12秒左右就会出现模糊,然后又恢复正常,并且这个现象是周期性的,请问大家这是什么原因造成的?
...全文
346
13
打赏
收藏
Linux下调用ffmpeg库录像问题
我调用ffmpeg的库,将h264码流录制成avi文件。但是录出来的文件用播放器播放时,大约在11~12秒左右就会出现模糊,然后又恢复正常,并且这个现象是周期性的,请问大家这是什么原因造成的?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
13 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
wenzheng101
2011-12-20
打赏
举报
回复
问题找到,是encoder的问题,编码的数据有丢帧现象。
junbo_wu33
2011-12-16
打赏
举报
回复
你可以使用ffmpeg或者其他工具把你录制的码率剥离出来,看看h264的raw stream播放是否正常。确定问题出在encoder or muxer?
ffmpeg -i inputfile -vcodec copy -an outputfile
此处outputfile你可以写成 *.h264
wenzheng101
2011-11-29
打赏
举报
回复
贴一下代码:
static void write_video_frame(AVFormatContext *oc, AVStream *st)
{
unsigned long ulAddr = 0;
int out_size = 0;
int IsKey = 0;
int ret = 0;
static double InvCnt = 0;
AVCodecContext *c;
c = st->codec;
/* encode the image */
ret = GetVideoInterface( &ulAddr , &out_size, &IsKey, 0);
if(ret != 0)
return;
c->coded_frame->key_frame = IsKey;
if (out_size > 0) {
AVPacket pkt;
av_init_packet(&pkt);
pkt.pts= av_rescale_q(c->coded_frame->pts, c->time_base, st->time_base);
if(c->coded_frame->key_frame)
pkt.flags |= PKT_FLAG_KEY;
pkt.stream_index= st->index;
pkt.data= (uint8_t *)ulAddr;//video_outbuf;
pkt.size= out_size;
st->pts.val = InvCnt ;
InvCnt++;
ret = av_write_frame(oc, &pkt);
} else {
ret = 0;
}
if (ret != 0) {
exit(1);
}
}
wenzheng101
2011-11-29
打赏
举报
回复
高手顶一下啊,求救求救
mountqi
2011-11-28
打赏
举报
回复
是不是你的cpu不够快,导致编码跟不上视频采集的速度? x264还是很耗cpu的。
找个快点的pc试试
wenzheng101
2011-11-28
打赏
举报
回复
不是的,cpu占用率10%都没到。
CyberLogix
2011-11-24
打赏
举报
回复
录制成avi文件没有经过再编码过程吧,那就是MUX的问题了
wenzheng101
2011-11-24
打赏
举报
回复
还有,我发现,如果是有运动物体的话,模糊一般发生在运动物体附近;如果是静止场景的话,有时会整个图像灰一下。
wenzheng101
2011-11-24
打赏
举报
回复
MUX的问题,请大侠说得再详细些吧。
wenzheng101
2011-11-23
打赏
举报
回复
懂ffmpeg的高手帮帮忙啊,给点意见嘛。。。。
dancingmokey
2011-11-23
打赏
举报
回复
帮顶~~~
最近在做嵌入式linux下的流媒体传输
头大~~~
wenzheng101
2011-11-22
打赏
举报
回复
没有丢帧,我调试过。应该是录像的问题吧。。。有时候是整个图像灰掉,有时是部分模糊。
kkkkksn
2011-11-22
打赏
举报
回复
出现模糊,可能是丢帧了吧,是怎么样的模糊,整个图像模糊黑掉还是有运动物体部分模糊?
LINUX
ffmpeg
USB摄像头使用
1、保持在 ubuntu 界面!拔下来usb摄像头,等待个十秒钟左右(可以在虚拟机->可移动设备中查看),再插上 usb 摄像头,会弹出一个设备选择框,将 usb 摄像头连接到虚拟机上。出现/dev/video0 这样格式就说明虚拟机识别了USB摄像头。只是为了单纯的先显示出来,所以没必要用ffpeg。终端运行代码,安装应用程序茄子。就会弹出一个框显示视频。
Qt/C++源码/监控GB28181组件/实时视频/云台控制/预置位/
录像
回放和下载/事件订阅/语音对讲/推流分发
gb28181协议一般会选择udp通信,默认也是udp,早期国标设备都是只支持udp。服务端开启端口监听,设备端填写好对应参数后,会尝试往对应端口发数据进行连接。设备端间隔(心跳间隔默认是60s)发送REGISTER信令,服务端收到后,分析数据中是否带了鉴权信息(也就是用户认证相关信息),没有带的话则应答Unauthorized,带了的话,可以取出认证的信息,和要求的参数对比,比如国标服务端编号、认证密码、域编码信息,不一致则应答信息错误,叫客户端重新发。都没
问题
则表示认证通过。
基于
FFmpeg
的Android摄像头H264编码器实战项目
FFmpeg
是一套强大的开源多媒体处理框架,集成了音视频编解码、转码、封装、滤镜及流媒体传输等全链路能力。其核心组件包括libavcodec(编解码)、(封装/解析)、libavutil(工具函数)、libswscale(图像缩放)和(滤镜处理),为 Android 平台音视频开发提供底层支撑。通过 NDK 编译可实现 ARM/ARM64 架构的高效集成,结合 JNI 桥接 Java 层与 Native 层,广泛应用于直播推流、本地视频编辑与监控系统中。
基于OpenCV的实时视频监控系统设计与实现
OpenCV(Open Source Computer Vision Library)是一个高度优化的开源
库
,专注于实时计算机视觉任务处理。其核心由C/C++编写,支持Python、Java等多语言接口,具备模块化设计,涵盖图像处理、视频分析、特征检测、机器学习等功能。底层依托Intel IPP等加速
库
,可在x86、ARM等架构上高效运行。不同的操作系统采用不同的多媒体框架来抽象和管理视频设备。
Linux
平台广泛使用V4L2(Video for
Linux
2),而Windows则依赖。
H264解码器源码(Android 1.6 版)
H264解码器源码,移植
ffmpeg
中的H264解码部分到Android,深度删减优化,在模拟器(320x480)中验证通过。 程序的采用jni架构。界面部分,文件读取,视频显示都是用java做的,底层的视频解码用C来做满足速度的要求。 在这个版本中,从H264码流中分割出Nal是在java层做的,这样在java层直接
调用
解码时就知道是否有显示视频,缺点的就是耦合度/封装性差一点。
多媒体/流媒体开发
2,554
社区成员
20,277
社区内容
发帖
与我相关
我的任务
多媒体/流媒体开发
专题开发/技术/项目 多媒体/流媒体开发
复制链接
扫一扫
分享
社区描述
专题开发/技术/项目 多媒体/流媒体开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章