软硬件环境
- windows 10 64bit
- ffmpeg 3.4.8
视频看这里
此处是 youtube
的播放链接,需要科学上网。喜欢我的视频,请记得订阅我的频道,打开旁边的小铃铛,点赞并分享,感谢您的支持。
下载及安装
从官网下载编译好的二进制文件 http://ffmpeg.org/download.html,并将其路径加入到系统环境变量中
获取音频/视频文件信息
显示媒体文件的信息,执行 ffmpeg -i test.mp4
(base) PS C:\Users\Administrator\Desktop> ffmpeg.exe -i .\test.mp4
ffmpeg version N-93125-gdbfd042983 Copyright (c) 2000-2019 the FFmpeg developers
built with gcc 8.2.1 (GCC) 20190212
configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-libdav1d --enable-libbluray --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libtheora --enable-libtwolame --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable-libvidstab --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa --enable-libspeex --enable-libxvid --enable-libaom --enable-libmfx --enable-amf --enable-ffnvcodec --enable-cuvid --enable-d3d11va --enable-nvenc --enable-nvdec --enable-dxva2 --enable-avisynth --enable-libopenmpt
libavutil 56. 26.100 / 56. 26.100
libavcodec 58. 47.100 / 58. 47.100
libavformat 58. 26.101 / 58. 26.101
libavdevice 58. 6.101 / 58. 6.101
libavfilter 7. 48.100 / 7. 48.100
libswscale 5. 4.100 / 5. 4.100
libswresample 3. 4.100 / 3. 4.100
libpostproc 55. 4.100 / 55. 4.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '.\test.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2mp41
encoder : Lavf57.83.100
Duration: 00:01:08.40, start: 0.000000, bitrate: 5947 kb/s
Stream #0:0(und): Video: mpeg4 (Simple Profile) (mp4v / 0x7634706D), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], 5945 kb/s, 25 fps, 25 tbr, 12800 tbn, 25 tbc (default)
Metadata:
handler_name : VideoHandler
At least one output file must be specified
(base) PS C:\Users\Administrator\Desktop>
在上面的输出中可以看到媒体文件的信息,以及 ffmpeg
的信息,例如版本、配置细节、版权标记、构建参数和库选项等
转换视频格式
从 mp4
转换成 avi
ffmpeg -i test.mp4 test.avi
视频截取
从视频的第10秒开始,截取长度为30秒的视频,维持编码方式不变
ffmpeg -ss 00:00:10 -t 00:00:30 -i test.mp4 -vcodec copy -acodec copy output.mp4
视频拼接
用一个 txt
文件将需要拼接在一起的视频文件组织起来,格式是
file 'test1.mp4'
file 'test2.mp4'
file 'test3.mp4'
有了上面的文本文件,就可以使用 ffmpeg
进行拼接了,命令是
ffmpeg -f concat -i filelist.txt -v:c copy output.mp4
更改视频的分辨率
将原视频中的分辨率更改为1280×720,音频编码方式不变
ffmpeg -i test.mp4 -filter:v scale=1280:720 -c:a copy output.mp4
如果还想更改视频比例的话,可以这样
ffmpeg -i test.mp4 -vf scale=1280x720,setdar=16:9 output.mp4
改变音视频的编码方式
也就是转码,可以指定编码方式
ffmpeg -i test.avi -c:v libx264 -c:a aac output.mp4
提取视频中的音频
使用参数 -vn
,就是 disable video
的意思
ffmpeg -i test.mp4 -vn test.mp3
对应的,如果想去掉音频,使用参数 -an
ffmpeg -i test.mp4 -an output.mp4
提取图像
ffmpeg -i test.mp4 -r 1 -f image2 image_%2d.png
其中 -r
表示帧速度,-r 1
就是每一秒提取一张图片的意思,提取出来的图片命名格式是 image_01.png
、image_02.png
、image_03.png
,以此类推
m3u8切片
m3u8
非常适合在网络上播放,ffmpeg
可以将本地视频文件转化成 m3u8
索引加 ts
视频的组合。这样,只要将生成的文件拷贝到类似 nginx
这样的 web
服务上,就可以实现视频点播了
ffmpeg -i test.mp4 -vcodec libx264 -strict -2 -acodec aac -hls_list_size 0 -f hls index.m3u8
调整视频播放速度
下面的示例是2倍速的转换,如果是原来的1/2速度,则参数变为 setpts=2*PTS
ffmpeg -i test.mp4 -vf "setpts=0.5*PTS" output.mp4
编辑视频
可以修改 original_network_id
、transport_stream_id
、service_id
等等,streamid
代表音视频 pid
,可以修改 video pid
和 audio pid
ffmpeg -i test.mp4 -vcodec libx264 -strict -2 -acodec aac -streamid 1:2595 -
mpegts_original_network_id 0x1122 -mpegts_transport_stream_id 0x3344 -
mpegts_service_id 0x02 -mpegts_pmt_start_pid 0x0A20 -mpegts_start_pid
0x0A21 -metadata service_provider="yakir" -metadata service_name="yakir"
-bsf h264_mp4toannexb -f mpegts output.ts
寻求帮助
最后放出终极大招,超级详细的官方帮助信息
ffmpeg -h full