不错不错
从视频的第10秒开始,截取长度为30秒的视频,维持编码方式不变
ffmpeg -ss 00:00:10 -t 00:00:30 -i test.mp4 -vcodec copy -acodec copy output.mp4
从官网下载编译好的二进制文件 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
非常适合在网络上播放,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
原文:https://www.cnblogs.com/cx2016/p/13802297.html