社区
多媒体/流媒体开发
帖子详情
Linux下调用ffmpeg库录像问题
wenzheng101
2011-11-22 05:01:38
我调用ffmpeg的库,将h264码流录制成avi文件。但是录出来的文件用播放器播放时,大约在11~12秒左右就会出现模糊,然后又恢复正常,并且这个现象是周期性的,请问大家这是什么原因造成的?
...全文
321
13
打赏
收藏
Linux下调用ffmpeg库录像问题
我调用ffmpeg的库,将h264码流录制成avi文件。但是录出来的文件用播放器播放时,大约在11~12秒左右就会出现模糊,然后又恢复正常,并且这个现象是周期性的,请问大家这是什么原因造成的?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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
打赏
举报
回复
出现模糊,可能是丢帧了吧,是怎么样的模糊,整个图像模糊黑掉还是有运动物体部分模糊?
利用
ffmpeg
从USB摄像头获取视频并保存为H264的TS流的C语言源代码
利用
ffmpeg
的API从USB摄像头获取视频并保存为H264的TS流的C语言源代码
最简单的基于
FFMPEG
+SDL的视频播放器(
Linux
)
FFMPEG
工程浩大,可以参考的书籍又不是很多,因此很多刚学习
FFMPEG
的人常常感觉到无从下手。 该播放器代码十分简单,只有约100行左右。但是几乎包含了使用
FFMPEG
播放一个视频所有必备的API,并且使用SDL显示解码出来的视频。十分适合新手学习
FFmpeg
。 这个是
Linux
下的代码,在Ubuntu下测试可以运行,前提是安装了
FFmpeg
和SDL。 编译命令: gcc simplest_
ffmpeg
_player.c -g -o smp.out -lSDLmain -lSDL -lavformat -lavcodec -lavutil -lswscale
最简单的基于
FFmpeg
的移动端例子
本解决方案包含了使用
FFmpeg
在移动端处理多媒体的各种例子: [Android] simplest_android_player: 基于安卓接口的视频播放器 simplest_
ffmpeg
_android_helloworld: 安卓平台下基于
FFmpeg
的HelloWorld程序 simplest_
ffmpeg
_android_decoder: 安卓平台下最简单的基于
FFmpeg
的视频解码器 simplest_
ffmpeg
_android_decoder_onelib: 安卓平台下最简单的基于
FFmpeg
的视频解码器-单
库
版 simplest_
ffmpeg
_android_streamer: 安卓平台下最简单的基于
FFmpeg
的推流器 simplest_
ffmpeg
_android_transcoder: 安卓平台下移植的
FFmpeg
命令行工具 simplest_sdl_android_helloworld: 移植SDL到安卓平台的最简单程序 [IOS] simplest_ios_player: 基于IOS接口的视频播放器 simplest_
ffmpeg
_ios_helloworld: IOS平台下基于
FFmpeg
的HelloWorld程序 simplest_
ffmpeg
_ios_decoder: IOS平台下最简单的基于
FFmpeg
的视频解码器 simplest_
ffmpeg
_ios_streamer: IOS平台下最简单的基于
FFmpeg
的推流器 simplest_
ffmpeg
_ios_transcoder: IOS平台下移植的
ffmpeg
.c命令行工具 simplest_sdl_ios_helloworld: 移植SDL到IOS平台的最简单程序
最简单的基于
FFmpeg
的封装格式处理 1.2
该解决方案包含了使用
FFmpeg
进行封装格式处理的各种例子: simplest
ffmpeg
demuxer:视音频分离器 simplest
ffmpeg
demuxer simple:视音频分离器(简化版) simplest
ffmpeg
muxer:视音频复用器 simplest
ffmpeg
remuxer:封装格式转换器 1.2版本增加了多平台下编译的支持:Windows,MacOS,以及
Linux
。
70.[开源][安卓]android-
ffmpeg
-master
70.[开源][安卓]android-
ffmpeg
-master 如果想要实现Android
FFmpeg
编译,必须下载安装Android NDK,在开始编译之前,还必须更新
FFmpeg
库
。
多媒体/流媒体开发
2,553
社区成员
20,277
社区内容
发帖
与我相关
我的任务
多媒体/流媒体开发
专题开发/技术/项目 多媒体/流媒体开发
复制链接
扫一扫
分享
社区描述
专题开发/技术/项目 多媒体/流媒体开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章