社区
多媒体/流媒体开发
帖子详情
ffmpeg关于av_seek_frame的问题
rainv
2011-03-12 03:45:02
关于av_seek_frame的问题,这个函数看源码不支持相对偏移时间,我想先按照bytes模式来seek frame,
之后再按照time来偏移相对时间。但是看源码是每次av_seek_frame都是从stream的开始位置,即SEEK_SET
位置,而不是SEEK_CUR位置。各位大侠有什么好的解决办法么?
ffmpeg仔细看了api,貌似没有这个接口。
...全文
358
4
打赏
收藏
ffmpeg关于av_seek_frame的问题
关于av_seek_frame的问题,这个函数看源码不支持相对偏移时间,我想先按照bytes模式来seek frame, 之后再按照time来偏移相对时间。但是看源码是每次av_seek_frame都是从stream的开始位置,即SEEK_SET 位置,而不是SEEK_CUR位置。各位大侠有什么好的解决办法么? ffmpeg仔细看了api,貌似没有这个接口。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
rainv
2011-03-15
打赏
举报
回复
thank you.
rainv
2011-03-15
打赏
举报
回复
嗯,看了,seek实现部分还根据不同的视频格式进行不同的实现。mpeg等。
CyberLogix
2011-03-15
打赏
举报
回复
av_seek_frame里面的调用很复杂,你没有考虑到的FFMPEG都考虑到了,他先会使用INDEX信息seek,如果没有找到则会使用binary_search,如果还不行他会使用byte_search,你去看一下里面的流程就知道了
每次av_seek_frame都是从stream的开始位置,即SEEK_SET
位置,而不是SEEK_CUR位置
没有必要从SEEK——CUR开始,因为这是多媒体文件,不是一般的二进制文件
blackmash
2011-03-15
打赏
举报
回复
为什么有相对偏移时间这个需求呢?
如果你按照bytes来先seek,mp4/mov格式的文件你可能会seek不了。
seek bytes比较适用的是MPG和TS。
但是看不出,为什么一定要用SEEK_CUR,而不用SEEK_SET?
ffmpeg
指定时间解码
av
_
seek
_
frame
实现了对固定时间开始解码的功能,使用
av
_
seek
_
frame
函数,讲解过程。学习
ffmpeg
的必备资料
av
player源代码
一直以来, 在多媒体播放器这块, 即使目前有许多开源的播放器项目, 但要写一个播放器仍然是件非常困难的事, 如果在windows上你有可能需要熟悉DShow, 另外的话, 你需要学习一堆开源项目(比如
FFmpeg
, MPC, VLC, Mplayer), 而且多数都是基于linux, 在windows上学习起来很不容易, 然而这些开源项目对于一些希望快速实现自己播放器, 就显得很困难. 因此, 我创建了这个项目, 致力于以最简单的方法实现自己的播放器, 并提供一个可以很方便使用的接口. 目前, 在这个代码中, 主要链接到
FFmpeg
来进行解码, 并将其改造成一个通用的播放器框架. 在这个框架中能够接受各种数据的读入, 可以很方便的封装自己的数据读取模块, 也可以很方便的定制自己的视频渲染模块和音频播放模块, 你只需要参考其中的实现即可. 另外在当前的实现中, 因为个人精力实在有限, 所以借鉴了一些开源项目的代码(如Mplayer), 并且该代码主要基于windows平台, 有移植到linux等其它平台的打算. 所以, 我希望有朋友能参与到这个项目中一起研究和学习, 并完成这个目标. 在 https://github.com/Jackarain/
av
player/downloads 中有已经编译好的exe可供测试, 测试命令如下:
av
player.exe test.mp4 或者
av
player.exe http://edstream.googlecode.com/files/stream.m3u8 或者
av
player.exe gq.flv.torrent gq.flv.torrent 是从优酷找的一个超清视频文件做的种子. 整个项目分为几个模块: 1.
av
core 这只是一个包装类, 实现windows上的窗口创建以及消息响应, 比如: 右击暂停/开始, 单击按屏幕宽百分比
seek
, F2全屏切换. 在这个模块中,
av
player类是外部接口类, 具体实现在player_impl类中. 在player_impl类中, 初始化各模块结构指针由下面几个函数实现, void init_file_source(media_source *ms); void init_audio(audio_render *ao); void init_video(video_render *vo); 你可以根据自己的需求来修改这些函数实现. media_source是一个提供数据访问的结构, 包含一些函数指针, 如果你需要重新从其它地方读取数据进来提供给播放器, 那么你可以参照这个结构体, 实现这些函数并指向它, 就可以获得从你指定的地方读取数据来进行播放, 这里实现了一个从文件读取数据播放的dll. audio_render是用于播放音频的结构, 同样包含了一些函数指针, 只要实现这些函数指针, 就可以改变音频输出, 比如把音频数据写到文件, 这里实现了2种方式输出音频, 一种是使用dsound来输出音频, 另一种是使用w
av
eout来输出音频. video_render是用于渲染视频的结构, 原理同上, 需要注意的是render_one_
frame
的data是YUV420格式. 2. lib
av
这是一个基于
ffmpeg
的播放框架, 该框架不包含视频渲染和音频播放以及数据读取, 若需要可以实现上述结构体各函数即可, 这个框架中主要完成了使用
ffmpeg
解码, 以及音视频同步,
seek
操作处理, 并提供一些基本的控制播放器的函数(在
av
play.h中定义). 3. audio 是一个音频播放输出模块实现, 主要实现了audio_render中那几个函数指针. 在这个模块中实现了2套音频输出dsound和w
av
eout. 4. video 是一个视频渲染模块的实现, 实现了video_render中的那几个函数指针. 在这个模块中, 实现了3套视频渲染输出d3d, ddraw, opengl这些方式(还有gdi方式渲染没有添加到video_out.h中). 5.
av
player 是一个使用
av
core实现一个简单播放器的示范, 如果要创建一个播放器, 只需要
av
player.h, 然后使用创建一个
av
player对象, 就可以创建一个播放器, 关于如何使用
av
core的具体细节可以参考
av
player/main.cpp. 最后, 任何方式(包括商业或非商业)修改或引用该项目的全部或部分源码(或dll), 请在你的软件中或产品文档中必须清楚的声明引用了该项目, 并注明url(https://github.com/Jackarain/
av
player), 你可以偷偷的不这样做, 但这样做是令人欣赏的做法. 最后本程序作者不承担使用该程序所带来的任何
问题
并拥有一切解释权. mail: jack.wgm@gmail.com
ffmpeg
开发
av
_
seek
_
frame
遇到的坑
ffmpeg
是当前最重要的开源多媒体工程,我之前和现在做的很多项目都用到了
ffmpeg
。我会在本文中不断更新一些使用和移植优化
ffmpeg
的心得,和大家一起交流提高。为了方便查看采用Q&A的形式。 Q0:视频文件里包含多路视频流时如何调用
av
_
seek
_
frame
? A:根据流数量,按照流索引依次调用
av
_
seek
_
frame
,如下图代码所示: Q1:我用一个解码循环解一遍...
播放器进度条,
ffmpeg
中
av
_
seek
_
frame
()的使用方法
av
_
seek
_
frame
有两种使用方法 1.当参数stream_index为-1时,会选择一个默认流,时间戳会从以
AV
_TIME_BASE为单位 //
seek
到1.25秒 double sec = 1.25;//1.25秒 int64_t timestamp = sec *
AV
_TIME_BASE;
av
_
seek
_
frame
(pFormatCtx,-1,timestamp,
AV
SEEK
_FL...
ffmpeg
中
av
_
seek
_
frame
使用样例
av
_
seek
_
frame
使用时需要使用四个参数
av
_
seek
_
frame
(fmt_ctx, -1 , 20 *
AV
_TIME_BASE,
AV
SEEK
_FLAG_ANY);参数一: fmt_ctx为容器内容; 参数二: 流索引, stream_index 参数三: 将要定位处的时间戳 参数四:
seek
功能flag容器即
AV
FormatContext, 其中包含了一些视频标准格式中对应
多媒体/流媒体开发
2,542
社区成员
20,281
社区内容
发帖
与我相关
我的任务
多媒体/流媒体开发
专题开发/技术/项目 多媒体/流媒体开发
复制链接
扫一扫
分享
社区描述
专题开发/技术/项目 多媒体/流媒体开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章