ffmpeg 推流命令提取 所有帧的命令是什么?

FFmpeg从AVPacket中提取出AVFrame帧数据后怎么显示出来_百度知道
FFmpeg从AVPacket中提取出AVFrame帧数据后怎么显示出来
我有更好的答案
用OpenGlView20去显示就可以了
调用displayYUV420pData方法
把解码得到的pFrame传进进去 !
有实力 无所惧
主营:互联网安全 电脑加速 电脑杀毒 电脑办公 电脑漏洞修复
A man becomes learned by asking questions.
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。14:18 提问
ffmpeg提取视频中的帧保存为图片的序号如何从0开始
问题是这样的:我在unbuntu环境下,安装好了ffmpeg,现在希望通过ffmpeg的命令行提取出视频中的帧并保存为图片,这个功能用以下已经实现:
ffmpeg -i yourVideo.mp4 -vf select='eq(pict_type\,I)' -vsync 2 -s 160x90 -f image2 %d.jpeg
以上命令虽然能截取视频中的帧并保存为图片,并且通过命令参数: -f image2 test%d.jpeg 指定了截取的图片是按照数字累加的方式命名的,即:1.jpeg,2.jpeg,3.jpeg,......
但我希望图片保存的文件名是从0开始的,即:0.jpeg,1.jpeg,2.jpeg,......这种形式,而用: -f image2 test%d.jpeg,这个图片序号只能从1开始。
哪位朋友能指点一下,十分感谢
按赞数排序
这个你要看下ffmpeg的源码部分,估计内部处理是从1开始的
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐博客访问: 1418256
博文数量: 141
博客积分: 3552
博客等级: 中校
技术积分: 4058
注册时间:
认证徽章:
熟悉Linux下程序设计及各种应用程序
熟悉C Language
熟悉Glusterfs、FFmpeg、CDN 系统设计,计算机图形系统设计、分布式程序设计
目前主要研究方向:流媒体
分类: LINUX 22:30:02
ffmpeg在做音视频编解码时非常方便,所以很多场景下转码使用的是ffmpeg,铜鼓通过ffmpeg –help命令操作可以看到ffmpeg常见的命令大概分为六部分:
1. ffmpeg信息查询部分
2. 公共做操参数部分
3. 文件主要操作参数部分
4. 视频操作参数部分
5. 音频操作参数部分
6. 字幕操作参数部分
ffmpeg信息查询部分主要参数:
其中通过ffmpeg --help查看到的help信息是基础的信息,如果想获得高级参数部分,可以通过使用ffmpeg --help long参数来查看,如果希望获得全部的帮助信息,可以同过使用ffmpeg --help full参数来获得。
通过-L参数,可以看到ffmpeg目前所支持的license协议,通过-version查看ffmpeg的版本,这里所查看的版本,是详细的版本,包含libavformat、libavcodec、libavutil、libavfilter、libswscale、libswresample的版本,如图:
有时候使用ffmpeg转码,发现无法解析视频文件,或者无法生成视频文件,报一些不支持生成对应的视频文件的错误,这个时候就需要查看当前使用的ffmpeg是否支对应的视频文件格式,需要使用ffmpeg -formats来查看:
bbs.chinaffmpeg.com的孙悟空提示,这个列表比较长,还有一些信息,可以自己执行命令查看
根据上图可以看到,在输出的内容中,分为三部分:
第一列是多媒体文件格式的Demuxing支持与Muxing支持;
第二列是多媒体文件格式;
第三列是文件格式的详细说明。
下面详细介绍ffmpeg的封装转换。
4.1 ffmpeg 的封装转换
FFmpeg的封装转换部分,主要是通过libavformat这部分来完成的功能,通过libavformat库进行mux和demux操作,多媒体文件的格式有很多种,但是还是有好多demux与mux的操作参数是公用的,下面来详细介绍一下这些公用的参数:
通过查看ffmpeg的help full参数,找到AVFormatContext参数部分,在这个参数下面的所有的参数均为封装转换可使用的参数:
avioflags: format的缓冲设置,默认为0,就是有缓冲:
direct: 无缓冲状态;
probesize: 获得文件内容的大小;
formatprobesiz: 设置一个获得文件内容的大小来解析文件的format;
fflags: 设置读取或者写出的格式的形式的标签,分为多种方式:flush_packets,ignidx,genpts,nofillin,noparse,igndts,discardcorrupt,sortdts,keepside,fastseek,latm,nobuffer,bitexact,下面针对这些format读写方式进行一一详解;
flush_packets: &立即将packets数据刷新入文件中;
genpts: 输出是产生
nofillin: 不填写可以精确计算缺失的值;
igndts: 忽略dts;
discardcorrupt: 丢弃损坏的帧;
sortdts: 尝试以dts的顺序为准输出;
keepside: 不合并数据;
fastseek: 快速seek,但是不够精确;
latm: 设置RTP MP4_LATM 生效;
nobuffer: 直接读取或者写出,不存buffer;
bitexact: 不写入随机或者不稳定的数据;
seek2any: 支持随意seek,这个seek可以不以keyframe为参考;
analyzeduration: 指定解析媒体所需要花销的时间,这里设置的值越高,解析的越准确,如果在直播中为了降低延迟,这个可以设置得低一些
codec_whitelist: 设置可以解析的codec的白名单;
format_whitelist: 设置可以解析的format的白名单;
4.2 ffmpeg 的编转码
FFmpeg的编解码部分主要是通过libavcodec这个库来完成的功能,通过libavcodec库进行encode与decode操作,多媒体的编码格式种类很多,但是还是有好多基本的操作参数是共同可以设置的,下面来详细介绍一下这些公用的参数:
通过查看ffmpeg的help full参数可以看到AVCodecContext AVOptions,在这个选项下面的所有参数均为编解码可以使用的参数:
b: 设置音频与视频码率,可以认为是音视频加起来的码率,默认为200k;
使用这个参数可以根据b:v设置视频码率,b:a设置音频码率;
ab: 设置音频的码率,默认是128k;
g: 设置视频GOP大小,关键帧间隔,默认是12帧一个gop
ar: 设置音频采样率,默认为0
ac: 设置音频通道数,默认为0
bf: 设置非B帧之间的B帧个数,默认为0
maxrate:最大码率设置,与bufsize一同使用即可,默认为0
minrate: 最小码率设置,配合maxrate与bufsize可以设置为CBR模式,平时基本没用,默认为0
bufsize:设置控制码率的buffer的大小,默认为0
keyint_min: 设置最小IDR帧间隔,默认为25
sc_threshold: 设置场景切换支持,默认为0
me_threshold: 设置运动估计阀值,默认为0
mb_threshold: 设置宏块阀值,默认为0
profile: 设置音视频的profile,默认为-99
level: 设置音视频的level,默认为-99
timecode_frame_start: 设置GOP帧的开始时间,需要在non-drop-frame默认情况下使用
channel_layout: 设置音频通道的布局格式
threads: 设置编解码等工作的线程数
4.3 ffmpeg 的基本编转码原理
ffmpeg工具主要用途为编码、解码、转码,常用ffmpeg做的为转码操作,使用ffmpeg转码主要原理为:
&通过前两节介绍的参数,可以设置转码的相关参数,如果转码操作则涉及到封装的改变,从而可以通过设置AVCodec与AVFormat的操作参数进行封装与编码的改变,下面举一个例子:
从图中可以看到,上图参数中使用了前面介绍过的参数:
1. 转封装格式从rmvb格式转为mp4;
2. 视频编码从rv40转为mpeg4;
3. 视频码率从原来的377 kb/s 转为 200 kb/s;
4. 视频帧率从原来的 23.98 fps转为 15 fps
可以分析出,这个例子的流程与前面提到的流程相同,首先解封装,需要解的封装为rmvb,然后解码,其中视频编码为rv40,音频编码为cook;然后解码后的视频编码为mpeg4,然后封装为一个没有音频的mp4文件。
阅读(12750) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~
请登录后评论。ffmpeg常用基本命令_百度文库
您的浏览器Javascript被禁用,需开启后体验完整功能,
赠送免券下载特权
10W篇文档免费专享
部分付费文档8折起
每天抽奖多种福利
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
ffmpeg常用基本命令
&&ffmpeg是一款开源软件,主要用于视频、音频的处理
阅读已结束,下载本文需要
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,同时保存到云知识,更方便管理
加入VIP
还剩4页未读,
定制HR最喜欢的简历
你可能喜欢FFMPEG 命令行常用方法示例
FFMPEG以其强大的功能而在音视频领域著称,更重要的是它还是开源的!音视频格式转换、裁剪、拼接、提取字幕或某音轨等等,它都能胜任,可谓一把瑞士军刀,小巧但功能强大,是音视频研究的必备利器之一。
1. 转换成H264编解码ffmpeg -i input_file -vcodec h264 output_file其中 -i 表示输入文件, -vcodec
h264 表示视频编解码方式为 H264。2. 转换成H265编解码ffmpeg -i input_file -vcode hevc output_file其中 -i 表示输入文件, -vcodec
hevc 表示视频编解码方式为 H265,注意ffmpeg 中名称为 hevc,不是H265!3. 设置输出视频的分辨率ffmpeg -i input_file -vcodec h264 -s
output_file其中 -s 表示分辨率。4. 设置输出文件的音视频比特率ffmpeg -i input_file
-vcodec h264 -b:v 10M -b:a 128K output_file其中 -b:v 10M 表示视频码率为10Mbps, -b:a 128K 表示音频码率为 128Kbps,注意FFMPEG对于码率控制,有时候不太准确,跟输入源有一定关系。5. 剪切某段视频ffmpeg -ss 0:05:00 -t 0:1:30 -i input_file -vcodec copy -acodec copy output_file
ffmpeg -ss 300 -t 90
-i input_file -vcodec copy -acodec copy output_file上面的两种方式等价,时间格式支持 HH:MM:SS或者秒数。 -ss 开始时间, -t 持续时间, -vcodec copy 保持原视频编码, -acodec copy 保持原音频编码。6. 分离音视频流保存为不同文件ffmpeg -i input_file -vcodec copy -an output_file_video  //提取视频流
ffmpeg -i input_file -acodec copy -vn output_file_audio  //提取音频流其中 -an 表示不处理音频, -vn 表示不处理视频。7.合并多个音视频文件为一个文件
ffmpeg –i video_file –i audio_file –vcodec copy –acodec copy output_file
8. 提取视频图像保存为图片文件
ffmpeg –i input_file –r 1 –f image2 image-%3d.jpeg
//提取图片
其中 -r 表示提取图像的频率,-f 表示输出格式, %3d 表示文件命名方式(也即生成的图片名为 image-001.jpeg, image-002.jpeg, ...., image-999.jpeg)。
9. 转换成YUV原始文件
ffmpeg -i input_file -vcodec rawvideo -an output_file_yuv
10. YUV序列转出AVI文件
ffmpeg –s w*h –pix_fmt yuv420p –i input.yuv –vcodec mpeg4 output.avi
11. 控制关键帧间隔和B帧
ffmpeg –i input_file
–vcodec h264 –bf 0 –g 25 –s 854x480 –an –f m4v output_file
其中-bf 控制B帧数目,-g 控制关键帧间隔, -f 控制文件格式(format,注意与codec的区别)。
12. 录制rtsp网络数据流
ffmpeg –i rtsp://192.168.1.100:5555/test_stream –vcodec copy out.avi
将rtsp的网络视频流文件保存为 out.avi 本地文件
13. 在多音轨文件中提取某音轨文件
得分两步走,第一步,查看源文件,找到对应的音频序号;第二步,将对应的音频序号流提取出来。如下所示:
&strong&&span style="color:#ff0000;"&D:&ffmpeg
-i Xmen_HEVC_4K_Multi_Audio_28Mbps.mkv&/span&&/strong&
ffmpeg version N-66931-gbbd8c85 Copyright (c)
the FFmpeg developers
built on Oct 17 :12 with gcc 4.9.1 (GCC)
configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-avisynth --enable-bzlib --enable-fontconfi
g --enable-frei0r --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --
enable-libfreetype --enable-libgme --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --enable-lib
opencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinge
r --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-aacenc --
enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-
libx265 --enable-libxavs --enable-libxvid --enable-zlib
54. 10.100 / 54. 10.100
libavcodec
8.100 / 56.
libavformat
9.100 / 56.
libavdevice
1.100 / 56.
libavfilter
libswscale
libswresample
libpostproc
3.100 / 53.
Input #0, matroska,webm, from 'D:\Xmen_HEVC_4K_Multi_Audio_28Mbps.mkv':
: X-MEN__DAYS_OF_FUTURE_PAST.Title800
: libebml v0.7.8 + libmatroska v0.8.1
creation_time
Duration: 02:11:35.18, start: 0.000000, bitrate: 28873 kb/s
Chapter #0:0: start 0.000000, end 213.338000
: (01)00:00:00:000
Chapter #0:1: start 213.338000, end 480.688000
: (02)00:03:33:338
Chapter #0:2: start 480.688000, end 628.628000
: (03)00:08:00:688
Chapter #0:3: start 628.628000, end 838.045000
: (04)00:10:28:628
Chapter #0:4: start 838.045000, end
: (05)00:13:58:045
Chapter #0:5: start , end
: (06)00:17:02:021
Chapter #0:6: start , end
: (07)00:20:16:089
Chapter #0:7: start , end
: (08)00:22:11:330
Chapter #0:8: start , end
: (09)00:26:37:887
Chapter #0:9: start , end
: (10)00:30:32:038
Chapter #0:10: start , end
: (11)00:34:29:776
Chapter #0:11: start , end
: (12)00:36:00:992
Chapter #0:12: start , end
: (13)00:38:18:087
Chapter #0:13: start , end
: (14)00:40:37:101
Chapter #0:14: start , end
: (15)00:45:53:792
Chapter #0:15: start , end
: (16)00:48:53:847
Chapter #0:16: start , end
: (17)00:51:58:156
Chapter #0:17: start , end
: (18)00:54:43:113
Chapter #0:18: start , end
: (19)00:57:51:426
Chapter #0:19: start , end
: (20)01:00:48:186
Chapter #0:20: start , end
: (21)01:03:26:594
Chapter #0:21: start , end
: (22)01:07:09:567
Chapter #0:22: start , end
: (23)01:09:43:596
Chapter #0:23: start , end
: (24)01:13:11:470
Chapter #0:24: start , end
: (25)01:15:31:860
Chapter #0:25: start , end
: (26)01:17:27:726
Chapter #0:26: start , end
: (27)01:19:30:098
Chapter #0:27: start , end
: (28)01:24:50:710
Chapter #0:28: start , end
: (29)01:26:58:254
Chapter #0:29: start , end
: (30)01:31:04:250
Chapter #0:30: start , end
: (31)01:34:03:679
Chapter #0:31: start , end
: (32)01:37:33:180
Chapter #0:32: start , end
: (33)01:41:54:817
Chapter #0:33: start , end
: (34)01:44:52:995
Chapter #0:34: start , end
: (35)01:47:19:808
Chapter #0:35: start , end
: (36)01:51:29:766
Chapter #0:36: start , end
: (37)01:56:42:745
Chapter #0:37: start , end
: (38)02:00:12:413
Chapter #0:38: start , end
: (39)02:02:34:972
Chapter #0:39: start , end
: (40)02:10:31:907
Chapter #0:40: start , end
: (41)02:11:35:095
&strong&Stream #0:0: Video: hevc (Main), yuv420p(tv), , SAR 1:1 DAR 16:9, 23.98 fps, 23.98 tbr, 48003.07 tbn, 48003
.07 tbc (default)
Stream #0:1(eng): Audio: dts (DTS-HD MA), 48000 Hz, 5.1(side), fltp, 1536 kb/s (default)
&span style="color:#33ff33;"&Stream #0:2(eng): Audio: ac3, 48000 Hz, 5.1(side), fltp, 448 kb/s&/span&
Stream #0:3(spa): Audio: ac3, 48000 Hz, 5.1(side), fltp, 448 kb/s
Stream #0:4(fra): Audio: ac3, 48000 Hz, 5.1(side), fltp, 448 kb/s
Stream #0:5(por): Audio: ac3, 48000 Hz, 5.1(side), fltp, 448 kb/s
Stream #0:6(rus): Audio: dts (DTS), 48000 Hz, 5.1(side), fltp, 768 kb/s
Stream #0:7(tha): Audio: ac3, 48000 Hz, 5.1(side), fltp, 448 kb/s
Stream #0:8(ukr): Audio: ac3, 48000 Hz, 5.1(side), fltp, 448 kb/s&/strong&
&span style="color:#ff0000;"&At least one output file must be specified&/span&
执行上面的命令,查看原始文件,发现它有8个音轨!,我们只提取第二个音轨流(上图标识为绿色的那个),命令如下所示:
ffmpeg -i Xmen_HEVC_4K_Multi_Audio_28Mbps.mkv -map 0:2 audio_2.wav
14. 多个视频文件拼接
首先创建一个需要拼接的文件,例如 concat.txt,内容如下:
file 'orig_03_0.avi'
file 'orig_03_1.avi'
然后执行如下命令
-f concat -i concat.txt
-c copy orig_03_merge.aviFFMPEG常用参数说明
主要参数:-i 设定输入流
-f 设定输出格式
-ss 开始时间
查看所有支持的容器格式
查看所有编解码器
查看所有可用的filter
-pix_fmts 查看所有支持的图片格式
-sample_fmts 查看所有支持的像素格式
-i input_file 查看媒体文件input_file的信息(注意后面不再接其它参数,例如: ffmpeg -i test.mp4,查看 test.mp4视频信息)
视频参数:
-b 设定视频流量,默认为200Kbit/s
-r 设定帧速率,默认为25
-s 设定画面的宽与高
-aspect 设定画面的比例
-vn 不处理视频
-vcodec 设定视频编解码器,未设定时则使用与输入流相同的编解码器
音频参数:
-ar 设定采样率
-ac 设定声音的Channel数
-acodec 设定声音编解码器,未设定时则使用与输入流相同的编解码器
-an 不处理音频
ffmpeg功能强大,参数配置众多,最好的方式查看它的命令行帮助文档,各个参数都有详细的说明,唯一的遗憾就是没有例子,对于初入媒体领域的人来说,门槛比较高。不明白的参数,可以多试试,再接合MediaInfo工具查看具体信息,通过VLC或者FFMPEG自带的 ffplay播放器播放,就容易理解了。
没有更多推荐了,
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!}

我要回帖

更多关于 ffmpeg截取某一帧命令 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信