2014-03-06 18:02:14 qianqiuwanzi 阅读数 4218
  • ffmpeg命令入门

    FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。 FFmpeg在提供API的同时,也提供了3个命令:ffplay,ffmpeg,ffprobe,掌握常用的FFmpeg命令对于我们后续使用FFmpeg API做开发是非常有帮助。

    1634 人正在学习 去看看 廖庆富

如何查看ffmpeg支持的编解码器和封装格式?


1、查看支持的编解码器(也就是-vcodec后面可以接的参数):
命令:ffmpeg -codecs 

返回内容过多,可输出到文件:ffmpeg -codecs  > codec.txt
列出一些常用的:

Codecs:
 D..... = Decoding supported
 .E.... = Encoding supported
 ..V... = Video codec
 ..A... = Audio codec
 ..S... = Subtitle codec
 ...I.. = Intra frame-only codec
 ....L. = Lossy compression
 .....S = Lossless compression
 -------
 DEV.L.   mpeg1video           MPEG-1 video
 DEV.L.   mpeg2video           MPEG-2 video (decoders: mpeg2video mpegvideo )
 DEV.L.   mpeg4                MPEG-4 part 2 (encoders: mpeg4 libxvid )

 DEV.L.   h261                 H.261
 DEV.L.   h263                 H.263 / H.263-1996, H.263+ / H.263-1998 / H.263 version 2
 D.V.L.    h263i                Intel H.263
 DEV.L.   h263p                H.263+ / H.263-1998 / H.263 version 2
 DEV.LS  h264                 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 (encoders: libx264 libx264rgb )
 DEV.L.   hevc                 H.265 / HEVC (High Efficiency Video Coding) (encoders: libx265 )

 DEVILS  jpeg2000             JPEG 2000 (decoders: jpeg2000 libopenjpeg ) (encoders: jpeg2000 libopenjpeg )

 DEVIL.   mjpeg                Motion JPEG

 DEV..S   gif                  GIF (Graphics Interchange Format)

 DEA.L.   pcm_alaw             PCM A-law / G.711 A-law
 DEA.L.   pcm_mulaw            PCM mu-law / G.711 mu-law
 DEA.L.  adpcm_g722           G.722 ADPCM (decoders: g722 ) (encoders: g722 )
 DEA.L.  adpcm_g726           G.726 ADPCM (decoders: g726 ) (encoders: g726 )
 DEA.L.  g723_1               G.723.1
 D.A.L.    g729                 G.729
 DEA.L.  gsm                  GSM (decoders: gsm libgsm ) (encoders: libgsm )
 DEA.L.  aac                  AAC (Advanced Audio Coding) (encoders: aac libvo_aacenc )
 DEA.L.  mp3                  MP3 (MPEG audio layer 3) (decoders: mp3 mp3float ) (encoders: libmp3lame )

2、查看支持的封装格式(也就是-f后面可以接的参数):
命令:ffmpeg -formats

列出一些常用的:

File formats:
 D. = Demuxing supported
 .E = Muxing supported
 --

  E 3gp             3GP (3GPP file format)

 D  aac             raw ADTS AAC (Advanced Audio Coding)

 DE alaw            PCM A-law

 DE mulaw           PCM mu-law

  E mp2             MP2 (MPEG audio layer 2)
 DE mp3             MP3 (MPEG audio layer 3)
  E mp4             MP4 (MPEG-4 Part 14)

 DE g722            raw G.722
 DE g723_1          raw G.723.1
 D  g729            G.729 raw format demuxer
 DE gif             GIF Animation
 D  gsm             raw GSM
 DE gxf             GXF (General eXchange Format)
 DE h261            raw H.261
 DE h263            raw H.263
 DE h264            raw H.264 video

3、查看支持的滤镜(也就是-vf后面可以接的参数):
命令:ffmpeg -filters

2017-02-20 16:42:34 SoaringLee_fighting 阅读数 9956
  • ffmpeg命令入门

    FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。 FFmpeg在提供API的同时,也提供了3个命令:ffplay,ffmpeg,ffprobe,掌握常用的FFmpeg命令对于我们后续使用FFmpeg API做开发是非常有帮助。

    1634 人正在学习 去看看 廖庆富

1、ffmpeg使用语法

命令格式:
    ffmpeg -i [输入文件名] [参数选项] -f [格式] [输出文件]
    ffmpeg [[options][`-i' input_file]]... {[options] output_file}...
    1、参数选项:
    (1) -an: 去掉音频
    (2) -acodec: 音频选项, 一般后面加copy表示拷贝
    (3) -vcodec:视频选项,一般后面加copy表示拷贝
    2、格式:
    (1) h264: 表示输出的是h264的视频裸流
    (2) mp4: 表示输出的是mp4的视频
    (3)mpegts: 表示ts视频流
    如果没有输入文件,那么视音频捕捉(只在Linux下有效,因为Linux下把音视频设备当作文件句柄来处理)就会起作用。作为通用的规则,选项一般用于下一个特定的文件。如果你给 –b 64选项,改选会设置下一个视频速率。对于原始输入文件,格式选项可能是需要的。缺省情况下,ffmpeg试图尽可能的无损转换,采用与输入同样的音频视频参数来输出。(by ternence.hsu)


2、视频转换

H264视频转ts视频流

ffmpeg -i test.h264 -vcodec copy -f mpegts test.ts



H264视频转mp4

ffmpeg -i test.h264 -vcodec copy -f mp4 test.mp4



ts视频转mp4

ffmpeg -i test.ts -acodec copy -vcodec copy -f mp4 test.mp4
mp4视频转flv
ffmpeg -i test.mp4 -acodec copy -vcodec copy -f flv test.flv 


转换文件为3GP格式 

ffmpeg -y -i test.mpeg -bitexact -vcodec h263 -b 128 -r 15 -s 176x144 -acodec aac -ac 2 -ar 22500 -ab 24 -f 3gp test.3gp



转换文件为3GP格式 v2

ffmpeg -y -i test.wmv -ac 1 -acodec libamr_nb -ar 8000 -ab 12200 -s 176x144 -b 128 -r 15 test.3gp



使用 ffmpeg 编码得到高质量的视频

ffmpeg.exe -i "D:\Video\Fearless\Fearless.avi" -target film-dvd -s 720x352 -padtop 64 -padbottom 64 -maxrate 7350000 -b 3700000 -sc_threshold 1000000000 -trellis -cgop -g 12 -bf 2 -qblur 0.3 -qcomp 0.7 -me full -dc 10 -mbd 2 -aspect 16:9 -pass 2 -passlogfile "D:\Video\ffmpegencode" -an -f mpeg2video "D:\Fearless.m2v"



转换指定格式文件到FLV格式

ffmpeg.exe -i test.mp3 -ab 56 -ar 22050 -b 500 -r 15 -s 320x240 f:\test.flv 
ffmpeg.exe -i test.wmv -ab 56 -ar 22050 -b 500 -r 15 -s 320x240 f:\test.flv



转码解密的VOB

ffmpeg -i snatch_1.vob -f avi -vcodec mpeg4 -b 800 -g 300 -bf 2 -acodec mp3 -ab 128 snatch.avi

(上面的命令行将vob的文件转化成avi文件,mpeg4的视频和mp3的音频。注意命令中使用了B帧,所以mpeg4流是divx5兼容的。GOP大小是300意味着29.97帧频下每10秒就有INTRA帧。该映射在音频语言的DVD转码时候尤其有用,同时编码到几种格式并且在输入流和输出流之间建立映射)


转换文件为3GP格式

ffmpeg -i test.avi -y -b 20 -s sqcif -r 10 -acodec amr_wb -ab 23.85 -ac 1 -ar 16000 test.3gp

(如果要转换为3GP格式,则ffmpeg在编译时必须加上–enable-amr_nb –enable-amr_wb,详细内容可参考:转换视频为3GPP格式)


转换文件为MP4格式(支持iPhone/iTouch)

ffmpeg  -y  -i input.wmv  -f mp4 -async 1-s 480x320  -acodec libfaac -vcodec libxvid  -qscale 7 -dts_delta_threshold 1 output.mp4
ffmpeg  -y  -i source_video.avi input -acodec libfaac -ab 128000 -vcodec mpeg4 -b 1200000 -mbd 2 -flags +4mv+trell -aic 2 -cmp 2 -subcmp 2 -s 320x180 -title X final_video.mp4



将一段音频与一段视频混合

ffmpeg -i son.wav -i video_origine.avi video_finale.mpg



将一段视频转换为DVD格式

ffmpeg -i source_video.avi -target pal-dvd -ps 2000000000 -aspect 16:9 finale_video.mpeg

(target pal-dvd : Output format ps 2000000000 maximum size for the output file, in bits (here, 2 Gb) aspect 16:9 : Widescreen)


转换一段视频为DivX格式

ffmpeg -i video_origine.avi -s 320x240 -vcodec msmpeg4v2 video_finale.avi



Turn X images to a video sequence

ffmpeg -f image2 -i image%d.jpg video.mpg

(This command will transform all the images from the current directory (named image1.jpg, image2.jpg, etc...) to a video file named video.mpg.)


Turn a video to X images

ffmpeg -i video.mpg image%d.jpg

(This command will generate the files named image1.jpg, image2.jpg, ... ;The following image formats are also availables : PGM, PPM, PAM, PGMYUV, JPEG, GIF, PNG, TIFF, SGI.)


使用ffmpeg录像屏幕(仅限Linux平台)

ffmpeg -vcodec mpeg4 -b 1000 -r 10 -g 300 -vd x11:0,0 -s 1024x768 ~/test.avi

(-vd x11:0,0 指录制所使用的偏移为 x=0 和 y=0,-s 1024×768 指录制视频的大小为 1024×768。录制的视频文件为 test.avi,将保存到用户主目录中;如果你只想录制一个应用程序窗口或者桌面上的一个固定区域,那么可以指定偏移位置和区域大小。使用xwininfo -frame命令可以完成查找上述参数。)


重新调整视频尺寸大小(仅限Linux平台)

ffmpeg -vcodec mpeg4 -b 1000 -r 10 -g 300 -i ~/test.avi -s 800×600 ~/test-800-600.avi



把摄像头的实时视频录制下来,存储为文件(仅限Linux平台)

ffmpeg  -f video4linux -s 320*240 -r 10 -i /dev/video0 test.asf



使用ffmpeg压制H.264视频

ffmpeg -threads 4 -i INPUT -r 29.97 -vcodec libx264 -s 480x272 -flags +loop -cmp chroma -deblockalpha 0 -deblockbeta 0 -crf 24 -bt 256k -refs 1 -coder 0 -me umh -me_range 16 -subq 5 -partitions parti4x4+parti8x8+partp8x8 -g 250 -keyint_min 25 -level 30 -qmin 10 -qmax 51 -trellis 2 -sc_threshold 40 -i_qfactor 0.71 -acodec libfaac -ab 128k -ar 48000 -ac 2 OUTPUT

(使用该指令可以压缩出比较清晰,而且文件转小的H.264视频文件)


3、网络推送

udp视频流的推送
ffmpeg -re  -i 1.ts  -c copy -f mpegts   udp://192.168.0.106:1234


4、视频拼接

裸码流的拼接,先拼接裸码流,再做容器的封装
ffmpeg -i "concat:test1.h264|test2.h264" -vcodec copy -f h264 out12.h264


5、图像相关

截取一张352x240尺寸大小的,格式为jpg的图片 

ffmpeg -i test.asf -y -f image2 -t 0.001 -s 352x240 a.jpg



把视频的前30帧转换成一个Animated Gif 

ffmpeg -i test.asf -vframes 30 -y -f gif a.gif



截取指定时间的缩微图,-ss后跟的时间单位为秒 

ffmpeg -i test.avi -y -f image2 -ss 8 -t 0.001 -s 350x240 test.jpg


6、音频处理

转换wav到mp2格式

ffmpeg -i /tmp/a.wav -ab 64 /tmp/a.mp2 -ab 128 /tmp/b.mp2 -map 0:0 -map 0:0

(上面的命令行转换一个64Kbits 的a.wav到128kbits的a.mp2 ‘-map file:index’在输出流的顺序上定义了哪一路输入流是用于每一个输出流的。)
2019-11-22 17:57:24 weixin_42538789 阅读数 38
  • ffmpeg命令入门

    FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。 FFmpeg在提供API的同时,也提供了3个命令:ffplay,ffmpeg,ffprobe,掌握常用的FFmpeg命令对于我们后续使用FFmpeg API做开发是非常有帮助。

    1634 人正在学习 去看看 廖庆富

ffmpeg常用编解码命令

1 yuv文件转换为h264
ffmpeg -s 1280x720 -i test.yuv -vcodec libx264 test.h264

2 播放yuv格式文件
ffplay -video_size 1920x1080 -i ffmpegVideo.yuv

3 将h264文件转yuv文件
ffmpeg -i text.h264 -vcodec rawvideo -an test.yuv

2016-01-13 17:00:10 u010257992 阅读数 1374
  • ffmpeg命令入门

    FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。 FFmpeg在提供API的同时,也提供了3个命令:ffplay,ffmpeg,ffprobe,掌握常用的FFmpeg命令对于我们后续使用FFmpeg API做开发是非常有帮助。

    1634 人正在学习 去看看 廖庆富

264 to yuv: ffmpeg -i transcodeV.264 -c:v rawvideo -pix_fmt yuv420p out.yuv

yuv to 264: ffmpeg -f rawvideo -pix_fmt yuv420p -s:v 720*576 -r 25 -i out.yuv -c:v libx264 -f rawvideo output.264

2019-09-11 16:11:27 downloadname 阅读数 39
  • ffmpeg命令入门

    FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。 FFmpeg在提供API的同时,也提供了3个命令:ffplay,ffmpeg,ffprobe,掌握常用的FFmpeg命令对于我们后续使用FFmpeg API做开发是非常有帮助。

    1634 人正在学习 去看看 廖庆富

对于多媒体行业的同学们,ffmpeg已经再熟悉不过了,属于行业入门级的工具,软编解码的神器~如果你是行业的老鸟,请跳过这篇文章,强烈建议新手们花几分钟看看!

首先FFMPEG是一款开源的跨平台的音视频编解码的工具,源码可前往 官网下载,命令行工具以Windows平台和Linux平台使用得较多,然后ffmpeg库主要支持ffserver(主要用于推/拉音视频流),ffmpeg(主要进行格式转换,如将mp4格式的视频文件转换为flv,mkv等格式的),ffprobe(主要是查看视频文件里的概要信息,如视/音频的编码格式,码率,帧率等信息),ffplay(可以直接看做是一个播放器,能播放视音频的媒体文件);

以命令 ffprobe -i test.mp4为例,概要说明一下

从截图中你应该很容易就能获取到ffmpeg编译的相关参数设置,包含的几大模块;视频的时长,码率,视频的编码格式,像素格式,分辨率,帧率,音频的编码格式,采样率,声道数,如果是媒体文件是电影,可能还包括字幕的相关信息;其它三种命令行方式也是类似使用,只不过是命令行的文本不同。

最后附带上一些常用的命令(亲测有效),可以辅助调试~

视频文件剪切 每片 10 秒
ffmpeg -i source.mp4 -codec:v libx264 -codec:a mp3 -map 0 -f ssegment -segment_format mpegts -segment_list playlist.m3u8 -segment_time 10 out%03d.ts

音频文件剪切(切片) 每片 60 秒
ffmpeg -i Polonaise.mp3 -f segment -segment_time 60 -c copy audio%02d.mp3

将原视频中的音频替换成为指定的音频(有个问题是若两个文件的时间长度不一致的话可能会有问题)
ffmpeg -i gordan_0612.mp4 -i Polonaise.mp3 -c:v copy -c:a mp3 -strict experimental -map 0:v:0 -map 1:a:0 20190613.mp4

抽取单独的视频(裸流)
ffmpeg -i test.mp4 -an -c:v rawvideo -pixel_format yuv420p out.yuv

测试播放(注意要指定相应的分辨率 要不然ffplay的SDL不知道)
ffplay -video_size 720*1280 -i gordan.yuv

将视频的前10帧转换为gif的动态图片
ffmpeg -i 20190518.mp4 -vframes 10 -y -f gif -s 720*1280 video_10.gif

抽取单独的音频(裸流)
ffmpeg -i 20190518.mp4 -vn -ar 44100 -ac 2 -f s16le out.pcm

如何从mp4文件中获取音频的编码格式式 s16le 还是 s16be????????

s16le 低地址小端 低地址存低位

s16be 低地址大端 低地址存高位 

抽取的时候 存放格式式什么播放的时候格式就是什么

ffplay -ar 44100 -ac 2 -f s16le -i out.pcm

音视频合并的前提是 视频中先没有音频(可将视频中的音频抽取出来)  而且要知道视频的时长(单位是秒)
ffmpeg -i %s -i %s -t %d %s
ffmpeg -i /sdcard/gordan.mp4 -i /sdcard/extractAudio.aac -t 15 /sdcard/extractVideo.mp4

抽取音频
ffmpeg -i %s -acodec copy -vn %s
ffmpeg -i /sdcard/gordan.mp4 -acodec copy -vn /sdcard/extractAudio.aac

抽取视频
ffmpeg -i %s -vcodec copy -an %s
ffmpeg -i /sdcard/gordan.mp4 -vcodec copy -an /sdcard/extractVideo.mp4

替换拍摄的视频中的背景音乐 注意要指定音频编码库libmp3lame    -t替换的音频时长 单位是秒
./ffmpeg -i /home/xpzhi/test/gordan.mp4 -i /home/xpzhi/test/trip.mp3 -c:v copy -c:a mp3 -acodec libmp3lame -t 15 -strict experimental -map 0:v:0 -map 1:a:0 /home/xpzhi/test/output.mp4


给视频添加文字水印(第一个参数是字体 注意字体最好存在 第二个参数是要显示的文本,第三个参数X,Y表示要显示在视频上的位置)
ffmpeg -i 20190518.mp4 -vf "drawtext=fontfile=simhei.ttf: text='print by gordan xu':x=100:y=100:fontsize=24:fontcolor=red:shadowy=2" drawtext.mp4

给视频添加图片水印(注意图片的存放位置,图片的尺寸 和 需要显示在视频上的位置)
ffmpeg -i 20190518.mp4  -vf "movie=ad_2.jpg,scale=600:439[watermask];[in][watermask] overlay=10:10 [out]" water.mp4

图片水印在Android平台上执行命令请参考(第一种方式总是执行失败!感觉像是引号里面的内容无法正常切割) overlay参数指图片在视频上的位置
ffmpeg -i /sdcard/gordan.mp4 -i /sdcard/video_water.png -filter_complex overlay=0:0 /sdcard/0726.mp4

添加gif动画水印    ignore_loop

倍速播放
ffmpeg -i test.mp4 -filter_complex "[0:v]setpts=0.5*PTS[v];[0:a]atempo=2.0[a]" -map "[v]" -map "[a]" speed2.0.mp4

拼接音频文件
ffmpeg -i "concat:123.mp3|124.mp3" -acodec copy output.mp3

拼接视频文件(先将各自转换为TS流,再逐步将TS流拼接起来)
ffmpeg -i gordan.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts gordan.ts
ffmpeg -i 20190518.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts 20190518.ts
ffmpeg -i "concat:gordan.ts|20190518.ts" -c copy -bsf:a aac_adtstoasc -movflags +faststart output.mp4

补充  如果遇到ffmpeg命令有疑问 终极的解决办法是 ffmpeg -h 帮助信息会告诉你如何使用!!!

其它命令可以参考:https://www.kancloud.cn/zhenhuamcu/ffmpeg/760426

 

FFmpeg命令行记录

阅读数 188

FFmpeg命令行转码

阅读数 27088

ffmpeg编解码应用

阅读数 1418

FFMPEG 命令操作

阅读数 155

没有更多推荐了,返回首页