广西南宁网站设计,如何确定网站被k,网站建设售后报价,平台门户网站建设方案文章目录 前言一、学习资料参考二、FFmpeg 选项1、主要选项①、主要命令选项②、举例 2、视频选项①、主要命令选项②、举例1#xff09;提取固定帧2#xff09;禁止输出视频3#xff09;指定视频的纵横比 3、音频选项①、主要命令选项②、举例 4、字幕选项①、主要命令选项… 文章目录 前言一、学习资料参考二、FFmpeg 选项1、主要选项①、主要命令选项②、举例 2、视频选项①、主要命令选项②、举例1提取固定帧2禁止输出视频3指定视频的纵横比 3、音频选项①、主要命令选项②、举例 4、字幕选项①、主要命令选项②、举例1将字幕加入视频中2字幕格式转换3提取字幕 三、FFmpeg 命令示例1、转换格式封装格式的转化2、抽取画面中的音频3、抽取画面中的视频4、音频视频合成5、音频音频合成6、视频分离成图片7、图片合成视频8、改变音量大小9、音效淡入淡出效果10、截取音频11、容器时长获取12、网络资源下载13、播放音频视频14、图片生成 gif 动图15、抽取 PCM 数据 前言
本文讲解 FFmpeg 常用命令并进行实践。
有关 FFmpeg 的入门及编译等内容可以参考我之前的博客
FFmpeg入门及编译FFmpeg深入学习 一、学习资料参考
FFmpeg 官方文档地址 适合入门后再看 FFmpeg 官方 Wiki 地址 适合入门后再看 FFmpeg 翻译文档地址 初学者可以参考着看一看里面有些复杂的可以跳过 FFmpeg 中文论坛 适合提升的时候用 FFmpeg 雷神博客地址 里面既有小白入门的也有比较难的 罗索实验室官方地址 用于提升的时候用
二、FFmpeg 选项
1、主要选项
查看 ffmpeg 的版本
ffmpeg -version上图红框内为编译选项编译选项支持编解码的格式、封装的格式及网络协议等等第三方包。其中比较常用的
音频相关libmp3lame视频相关libx264、libx265、libvpx、libxvid、avisynth
使用 MediaInfo 对原视频文件 SampleVideo_1280x720_20mb.mp4 进行分析 使用 MediaInfo 对 flv 格式原视频文件 SampleVideo_1280x720_20mb.flv 进行分析 flv 文件默认视频编码格式为 sorenson spark默认音频编码格式为 mp3即Flv: [sorenson spark(vcodec) mp3(acodec)]
以下表格内三种写法是等价的
音频视频字幕-codec:a-codec:v-codec:s-c:a-c:v-c:s-acodec-vcodec-scodec
①、主要命令选项
-f fmt (input/output) 指定输入或者输出文件格式封装格式视频容器。常规可省略而使用依据扩展名文件的前几百 K 的内容智能分析的自动指定但一些选项需要强制明确设定。-i filenameinput 指定输入文件。-yglobal默认自动覆盖输出文件而不再询问确认。-n global不覆盖输出文件如果输出文件已经存在则立即退出。-t duration input/output限制输入/输出的时间。如果是在 -i 前面就是限定从输入中读取多少时间的数据如果是用于限定输出文件则表示写入多少时间数据后就停止。duration 可以是以秒为单位的数值或者 hh:mm:ss[.xxx] 格式的时间值。注意 -to 和 -t 是互斥的-t 有更高优先级。-to position (output) 只写入 position 时间后就停止position 可以是以秒为单位的数值或者 hh:mm:ss[.xxx] 格式的时间值。注意 -to 和 -t 是互斥的-t 有更高优先级。-ss position (input/output)当在 -i 前表示定位输入文件到 position 指定的位置。注意可能一些格式是不支持精确定位的所以 ffmpeg 可能是定位到最接近 position在之前的可定位点。position 可以是以秒为单位的数值或者 hh:mm:ss[.xxx] 格式的时间值。-codec[:stream_specifier] codec (input/output,per-stream) 为特定的文件选择编/解码模式对于输出文件就是编码器 对于输入或者某个流就是解码器。选项参数中 codec 是编解码器的名字或者是 copy仅对输出文件则意味着流数据直接复制而不再编码。
使用下面命令可以检测 ffmepg 所支持的所有编码器的格式
ffmpeg.exe -encoders回显如下
PS D:\Work\test ffmpeg.exe -encoders
ffmpeg version 6.0-essentials_build-www.gyan.dev Copyright (c) 2000-2023 the FFmpeg developersbuilt with gcc 12.2.0 (Rev10, Built by MSYS2 project)configuration: --enable-gpl --enable-version3 --enable-static --disable-w32threads --disable-autodetect --enable-fontconfig --enable-iconv --enable-gnutls --enable-libxml2 --enable-gmp --enable-bzlib --enable-lzma --enable-zlib --enable-libsrt --enable-libssh --enable-libzmq --enable-avisynth --enable-sdl2 --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxvid --enable-libaom --enable-libopenjpeg --enable-libvpx --enable-mediafoundation --enable-libass --enable-libfreetype --enable-libfribidi --enable-libvidstab --enable-libvmaf --enable-libzimg --enable-amf --enable-cuda-llvm --enable-cuvid --enable-ffnvcodec --enable-nvdec --enable-nvenc --enable-d3d11va --enable-dxva2 --enable-libvpl --enable-libgme --enable-libopenmpt --enable-libopencore-amrwb --enable-libmp3lame --enable-libtheora --enable-libvo-amrwbenc --enable-libgsm --enable-libopencore-amrnb --enable-libopus --enable-libspeex --enable-libvorbis --enable-librubberbandlibavutil 58. 2.100 / 58. 2.100libavcodec 60. 3.100 / 60. 3.100libavformat 60. 3.100 / 60. 3.100libavdevice 60. 1.100 / 60. 1.100libavfilter 9. 3.100 / 9. 3.100libswscale 7. 1.100 / 7. 1.100libswresample 4. 10.100 / 4. 10.100libpostproc 57. 1.100 / 57. 1.100
Encoders:V..... VideoA..... AudioS..... Subtitle.F.... Frame-level multithreading..S... Slice-level multithreading...X.. Codec is experimental....B. Supports draw_horiz_band.....D Supports direct rendering method 1------V....D a64multi Multicolor charset for Commodore 64 (codec a64_multi)V....D a64multi5 Multicolor charset for Commodore 64, extended with 5th color (colram) (codec a64_multi5)V....D alias_pix Alias/Wavefront PIX imageV..... amv AMV VideoV....D apng APNG (Animated Portable Network Graphics) imageV....D asv1 ASUS V1V....D asv2 ASUS V2V....D libaom-av1 libaom AV1 (codec av1)V....D av1_nvenc NVIDIA NVENC av1 encoder (codec av1)V..... av1_qsv AV1 (Intel Quick Sync Video acceleration) (codec av1)V....D av1_amf AMD AMF AV1 encoder (codec av1)V....D avrp Avid 1:1 10-bit RGB PackerV..X.D avui Avid Meridien UncompressedV....D ayuv Uncompressed packed MS 4:4:4:4VF...D bitpacked BitpackedV....D bmp BMP (Windows and OS/2 bitmap)VF...D cfhd GoPro CineForm HDV....D cinepak CinepakV....D cljr Cirrus Logic AccuPakV.S..D vc2 SMPTE VC-2 (codec dirac)VFS..D dnxhd VC3/DNxHDV....D dpx DPX (Digital Picture Exchange) imageVFS..D dvvideo DV (Digital Video)VF...D exr OpenEXR imageV.S..D ffv1 FFmpeg video codec #1VF...D ffvhuff Huffyuv FFmpeg variantV....D fits Flexible Image Transport SystemV....D flashsv Flash Screen VideoV....D flashsv2 Flash Screen Video Version 2V..... flv FLV / Sorenson Spark / Sorenson H.263 (Flash Video) (codec flv1)V....D gif GIF (Graphics Interchange Format)V..... h261 H.261V..... h263 H.263 / H.263-1996V.S... h263p H.263 / H.263-1998 / H.263 version 2V....D libx264 libx264 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 (codec h264)V....D libx264rgb libx264 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 RGB (codec h264)V....D h264_amf AMD AMF H.264 Encoder (codec h264)V....D h264_mf H264 via MediaFoundation (codec h264)V....D h264_nvenc NVIDIA NVENC H.264 encoder (codec h264)V..... h264_qsv H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 (Intel Quick Sync Video acceleration) (codec h264)VF...D hdr HDR (Radiance RGBE format) imageV....D libx265 libx265 H.265 / HEVC (codec hevc)V....D hevc_amf AMD AMF HEVC encoder (codec hevc)V....D hevc_mf HEVC via MediaFoundation (codec hevc)V....D hevc_nvenc NVIDIA NVENC hevc encoder (codec hevc)V..... hevc_qsv HEVC (Intel Quick Sync Video acceleration) (codec hevc)VF...D huffyuv Huffyuv / HuffYUVV....D jpeg2000 JPEG 2000VF.... libopenjpeg OpenJPEG JPEG 2000 (codec jpeg2000)VF...D jpegls JPEG-LSVF...D ljpeg Lossless JPEGVF...D magicyuv MagicYUV videoVFS... mjpeg MJPEG (Motion JPEG)V..... mjpeg_qsv MJPEG (Intel Quick Sync Video acceleration) (codec mjpeg)V.S... mpeg1video MPEG-1 videoV.S... mpeg2video MPEG-2 videoV..... mpeg2_qsv MPEG-2 video (Intel Quick Sync Video acceleration) (codec mpeg2video)V.S... mpeg4 MPEG-4 part 2V....D libxvid libxvidcore MPEG-4 part 2 (codec mpeg4)V..... msmpeg4v2 MPEG-4 part 2 Microsoft variant version 2V..... msmpeg4 MPEG-4 part 2 Microsoft variant version 3 (codec msmpeg4v3)V..... msvideo1 Microsoft Video-1V....D pam PAM (Portable AnyMap) imageV....D pbm PBM (Portable BitMap) imageV....D pcx PC Paintbrush PCX imageV....D pfm PFM (Portable FloatMap) imageV....D pgm PGM (Portable GrayMap) imageV....D pgmyuv PGMYUV (Portable GrayMap YUV) imageV....D phm PHM (Portable HalfFloatMap) imageVF...D png PNG (Portable Network Graphics) imageV....D ppm PPM (Portable PixelMap) imageVF...D prores Apple ProResVF...D prores_aw Apple ProRes (codec prores)VFS... prores_ks Apple ProRes (iCodec Pro) (codec prores)VF...D qoi QOI (Quite OK Image format) imageV....D qtrle QuickTime Animation (RLE) videoV....D r10k AJA Kona 10-bit RGB CodecV....D r210 Uncompressed RGB 10-bitVF...D rawvideo raw videoV....D roqvideo id RoQ video (codec roq)V....D rpza QuickTime video (RPZA)V..... rv10 RealVideo 1.0V..... rv20 RealVideo 2.0V....D sgi SGI imageV....D smc QuickTime Graphics (SMC)V....D snow SnowV..... speedhq NewTek SpeedHQV....D sunrast Sun Rasterfile imageV....D svq1 Sorenson Vector Quantizer 1 / Sorenson Video 1 / SVQ1V....D targa Truevision Targa imageV....D libtheora libtheora Theora (codec theora)VF...D tiff TIFF imageVF...D utvideo Ut VideoVF...D v210 Uncompressed 4:2:2 10-bitV....D v308 Uncompressed packed 4:4:4V....D v408 Uncompressed packed QT 4:4:4:4V....D v410 Uncompressed 4:4:4 10-bitV.S..D vbn Vizrt Binary ImageV..... vnull null videoV....D libvpx libvpx VP8 (codec vp8)V....D libvpx-vp9 libvpx VP9 (codec vp9)V..... vp9_qsv VP9 video (Intel Quick Sync Video acceleration) (codec vp9)VF...D wbmp WBMP (Wireless Application Protocol Bitmap) imageV....D libwebp_anim libwebp WebP image (codec webp)V....D libwebp libwebp WebP image (codec webp)V..... wmv1 Windows Media Video 7V..... wmv2 Windows Media Video 8V..... wrapped_avframe AVFrame to AVPacket passthroughV....D xbm XBM (X BitMap) imageV....D xface X-face imageV....D xwd XWD (X Window Dump) imageV....D y41p Uncompressed YUV 4:1:1 12-bitV....D yuv4 Uncompressed packed 4:2:0VF...D zlib LCL (LossLess Codec Library) ZLIBV....D zmbv Zip Motion Blocks VideoA....D aac AAC (Advanced Audio Coding)A....D aac_mf AAC via MediaFoundation (codec aac)A....D ac3 ATSC A/52A (AC-3)A....D ac3_fixed ATSC A/52A (AC-3) (codec ac3)A....D ac3_mf AC3 via MediaFoundation (codec ac3)A....D adpcm_adx SEGA CRI ADX ADPCMA....D adpcm_argo ADPCM Argonaut GamesA....D g722 G.722 ADPCM (codec adpcm_g722)A....D g726 G.726 ADPCM (codec adpcm_g726)A....D g726le G.726 little endian ADPCM (right-justified) (codec adpcm_g726le)A....D adpcm_ima_alp ADPCM IMA High Voltage Software ALPA....D adpcm_ima_amv ADPCM IMA AMVA....D adpcm_ima_apm ADPCM IMA Ubisoft APMA....D adpcm_ima_qt ADPCM IMA QuickTimeA....D adpcm_ima_ssi ADPCM IMA Simon Schuster InteractiveA....D adpcm_ima_wav ADPCM IMA WAVA....D adpcm_ima_ws ADPCM IMA WestwoodA....D adpcm_ms ADPCM MicrosoftA....D adpcm_swf ADPCM Shockwave FlashA....D adpcm_yamaha ADPCM YamahaA....D alac ALAC (Apple Lossless Audio Codec)A....D libopencore_amrnb OpenCORE AMR-NB (Adaptive Multi-Rate Narrow-Band) (codec amr_nb)A....D libvo_amrwbenc Android VisualOn AMR-WB (Adaptive Multi-Rate Wide-Band) (codec amr_wb)A..... anull null audioA....D aptx aptX (Audio Processing Technology for Bluetooth)A....D aptx_hd aptX HD (Audio Processing Technology for Bluetooth)A....D comfortnoise RFC 3389 comfort noise generatorA....D dfpwm DFPWM1a audioA..X.D dca DCA (DTS Coherent Acoustics) (codec dts)A....D eac3 ATSC A/52 E-AC-3A....D flac FLAC (Free Lossless Audio Codec)A....D g723_1 G.723.1A....D libgsm libgsm GSM (codec gsm)A....D libgsm_ms libgsm GSM Microsoft variant (codec gsm_ms)A..X.D mlp MLP (Meridian Lossless Packing)A....D mp2 MP2 (MPEG audio layer 2)A....D mp2fixed MP2 fixed point (MPEG audio layer 2) (codec mp2)A....D libmp3lame libmp3lame MP3 (MPEG audio layer 3) (codec mp3)A....D mp3_mf MP3 via MediaFoundation (codec mp3)A....D nellymoser Nellymoser AsaoA..X.D opus OpusA....D libopus libopus Opus (codec opus)A....D pcm_alaw PCM A-law / G.711 A-lawA....D pcm_bluray PCM signed 16|20|24-bit big-endian for Blu-ray mediaA....D pcm_dvd PCM signed 16|20|24-bit big-endian for DVD mediaA....D pcm_f32be PCM 32-bit floating point big-endianA....D pcm_f32le PCM 32-bit floating point little-endianA....D pcm_f64be PCM 64-bit floating point big-endianA....D pcm_f64le PCM 64-bit floating point little-endianA....D pcm_mulaw PCM mu-law / G.711 mu-lawA....D pcm_s16be PCM signed 16-bit big-endianA....D pcm_s16be_planar PCM signed 16-bit big-endian planarA....D pcm_s16le PCM signed 16-bit little-endianA....D pcm_s16le_planar PCM signed 16-bit little-endian planarA....D pcm_s24be PCM signed 24-bit big-endianA....D pcm_s24daud PCM D-Cinema audio signed 24-bitA....D pcm_s24le PCM signed 24-bit little-endianA....D pcm_s24le_planar PCM signed 24-bit little-endian planarA....D pcm_s32be PCM signed 32-bit big-endianA....D pcm_s32le PCM signed 32-bit little-endianA....D pcm_s32le_planar PCM signed 32-bit little-endian planarA....D pcm_s64be PCM signed 64-bit big-endianA....D pcm_s64le PCM signed 64-bit little-endianA....D pcm_s8 PCM signed 8-bitA....D pcm_s8_planar PCM signed 8-bit planarA....D pcm_u16be PCM unsigned 16-bit big-endianA....D pcm_u16le PCM unsigned 16-bit little-endianA....D pcm_u24be PCM unsigned 24-bit big-endianA....D pcm_u24le PCM unsigned 24-bit little-endianA....D pcm_u32be PCM unsigned 32-bit big-endianA....D pcm_u32le PCM unsigned 32-bit little-endianA....D pcm_u8 PCM unsigned 8-bitA....D pcm_vidc PCM Archimedes VIDCA....D real_144 RealAudio 1.0 (14.4K) (codec ra_144)A....D roq_dpcm id RoQ DPCMA..X.D s302m SMPTE 302MA....D sbc SBC (low-complexity subband codec)A..X.D sonic SonicA..X.D sonicls Sonic losslessA....D libspeex libspeex Speex (codec speex)A..X.D truehd TrueHDA....D tta TTA (True Audio)A..X.D vorbis VorbisA....D libvorbis libvorbis (codec vorbis)A....D wavpack WavPackA....D wmav1 Windows Media Audio 1A....D wmav2 Windows Media Audio 2S..... ssa ASS (Advanced SubStation Alpha) subtitle (codec ass)S..... ass ASS (Advanced SubStation Alpha) subtitleS..... dvbsub DVB subtitles (codec dvb_subtitle)S..... dvdsub DVD subtitles (codec dvd_subtitle)S..... mov_text 3GPP Timed Text subtitleS..... srt SubRip subtitle (codec subrip)S..... subrip SubRip subtitleS..... text Raw text subtitleS..... ttml TTML subtitleS..... webvtt WebVTT subtitleS..... xsub DivX subtitles (XSUB)②、举例
下面命令的功能是从输入视频文件的第 10 秒开始截取持续 10.345 秒的视频并将截取后的视频保存为 FLV 格式的文件。视频和音频的编码格式将与输入文件相同没有进行重新编码只是进行了格式转换和截取操作。
ffmpeg -ss 10 -i SampleVideo_1280x720_20mb.mp4 -t 00:00:10.345 -vcodec copy -acodec copy -f flv -y SampleVideo-testflv.flv回显信息
PS D:\Work\test ffmpeg -ss 10 -i SampleVideo_1280x720_20mb.mp4 -t 00:00:10.345 -vcodec copy -acodec copy -f flv -y SampleVideo-testflv.flv
ffmpeg version 6.0-essentials_build-www.gyan.dev Copyright (c) 2000-2023 the FFmpeg developersbuilt with gcc 12.2.0 (Rev10, Built by MSYS2 project)configuration: --enable-gpl --enable-version3 --enable-static --disable-w32threads --disable-autodetect --enable-fontconfig --enable-iconv --enable-gnutls --enable-libxml2 --enable-gmp --enable-bzlib --enable-lzma --enable-zlib --enable-libsrt --enable-libssh --enable-libzmq --enable-avisynth --enable-sdl2 --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxvid --enable-libaom --enable-libopenjpeg --enable-libvpx --enable-mediafoundation --enable-libass --enable-libfreetype --enable-libfribidi --enable-libvidstab --enable-libvmaf --enable-libzimg --enable-amf --enable-cuda-llvm --enable-cuvid --enable-ffnvcodec --enable-nvdec --enable-nvenc --enable-d3d11va --enable-dxva2 --enable-libvpl --enable-libgme --enable-libopenmpt --enable-libopencore-amrwb --enable-libmp3lame --enable-libtheora --enable-libvo-amrwbenc --enable-libgsm --enable-libopencore-amrnb --enable-libopus --enable-libspeex --enable-libvorbis --enable-librubberbandlibavutil 58. 2.100 / 58. 2.100libavcodec 60. 3.100 / 60. 3.100libavformat 60. 3.100 / 60. 3.100libavdevice 60. 1.100 / 60. 1.100libavfilter 9. 3.100 / 9. 3.100libswscale 7. 1.100 / 7. 1.100libswresample 4. 10.100 / 4. 10.100libpostproc 57. 1.100 / 57. 1.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from SampleVideo_1280x720_20mb.mp4:Metadata:major_brand : isomminor_version : 512compatible_brands: isomiso2avc1mp41creation_time : 1970-01-01T00:00:00.000000Zencoder : Lavf53.24.2Duration: 00:01:57.31, start: 0.000000, bitrate: 1436 kb/sStream #0:0[0x1](und): Video: h264 (Main) (avc1 / 0x31637661), yuv420p(progressive), 1280x720 [SAR 1:1 DAR 16:9], 1048 kb/s, 25 fps, 25 tbr, 12800 tbn (default)Metadata:creation_time : 1970-01-01T00:00:00.000000Zhandler_name : VideoHandlervendor_id : [0][0][0][0]Stream #0:1[0x2](und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, 5.1, fltp, 383 kb/s (default)Metadata:creation_time : 1970-01-01T00:00:00.000000Zhandler_name : SoundHandlervendor_id : [0][0][0][0]
Output #0, flv, to SampleVideo-testflv.flv:Metadata:major_brand : isomminor_version : 512compatible_brands: isomiso2avc1mp41encoder : Lavf60.3.100Stream #0:0(und): Video: h264 (Main) ([7][0][0][0] / 0x0007), yuv420p(progressive), 1280x720 [SAR 1:1 DAR 16:9], q2-31, 1048 kb/s, 25 fps, 25 tbr, 1k tbn (default)Metadata:creation_time : 1970-01-01T00:00:00.000000Zhandler_name : VideoHandlervendor_id : [0][0][0][0]Stream #0:1(und): Audio: aac (LC) ([10][0][0][0] / 0x000A), 48000 Hz, 5.1, fltp, 383 kb/s (default)Metadata:creation_time : 1970-01-01T00:00:00.000000Zhandler_name : SoundHandlervendor_id : [0][0][0][0]
Stream mapping:Stream #0:0 - #0:0 (copy)Stream #0:1 - #0:1 (copy)
Press [q] to stop, [?] for help
frame 299 fps0.0 q-1.0 Lsize 1618kB time00:00:10.33 bitrate1283.2kbits/s speed1.2e03x
video:1039kB audio:563kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.975729%
PS D:\Work\test使用 MediaInfo 查看生成文件相关信息可以看到截取的视频长度为 11s 976 ms且包含 1 路视频流及 1 路音频流帧率为25 帧。 注这里是 11s 多而不是 10.345s 的原因是截取时是以一个 GOP 进行截取的。
使用 VLC 播放确实如此
2、视频选项
①、主要命令选项
-vframes number (output)设置输出文件的帧数是 -frames:v 的别名。-b设定视频流量 默认为 200Kbit/sbitrate-r[:stream_specifier] fps (input/output,per-stream) 设置帧率一种 Hz 值缩写或者分数值。-s[:stream_specifier] size (input/output,per-stream) 设置帧的尺寸。-vn (output) 禁止输出视频。N:no-vcodec codec (output)设置视频编码器 这是 -codec:v 的一个别名。aspect[:stream_specifier] aspect (output,per-stream)指定视频的纵横比长宽显示比例。aspect 是一 个浮点数字符串或者 num:den 格式字符串(其值就是 num/den) 例如 4:316:91.3333 以及 1.7777 都是常用参数值。
②、举例
1提取固定帧
下面命令的功能是将输入视频文件进行重新编码并截取前 90 帧视频然后将重新编码和截取后的视频保存为 FLV 格式的文件。视频编码器使用了 libx264这意味着输出视频将使用 x264 编码器进行压缩以提供高质量的视频编码。
ffmpeg -i SampleVideo_1280x720_20mb.mp4 -vcodec libx264 -vframes 75 -f flv -y SampleVideo-testflv.flv回显信息
PS D:\Work\test ffmpeg -i SampleVideo_1280x720_20mb.mp4 -vcodec libx264 -vframes 75 -f flv -y SampleVideo-testflv.flv
ffmpeg version 6.0-essentials_build-www.gyan.dev Copyright (c) 2000-2023 the FFmpeg developersbuilt with gcc 12.2.0 (Rev10, Built by MSYS2 project)configuration: --enable-gpl --enable-version3 --enable-static --disable-w32threads --disable-autodetect --enable-fontconfig --enable-iconv --enable-gnutls --enable-libxml2 --enable-gmp --enable-bzlib --enable-lzma --enable-zlib --enable-libsrt --enable-libssh --enable-libzmq --enable-avisynth --enable-sdl2 --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxvid --enable-libaom --enable-libopenjpeg --enable-libvpx --enable-mediafoundation --enable-libass --enable-libfreetype --enable-libfribidi --enable-libvidstab --enable-libvmaf --enable-libzimg --enable-amf --enable-cuda-llvm --enable-cuvid --enable-ffnvcodec --enable-nvdec --enable-nvenc --enable-d3d11va --enable-dxva2 --enable-libvpl --enable-libgme --enable-libopenmpt --enable-libopencore-amrwb --enable-libmp3lame --enable-libtheora --enable-libvo-amrwbenc --enable-libgsm --enable-libopencore-amrnb --enable-libopus --enable-libspeex --enable-libvorbis --enable-librubberbandlibavutil 58. 2.100 / 58. 2.100libavcodec 60. 3.100 / 60. 3.100libavformat 60. 3.100 / 60. 3.100libavdevice 60. 1.100 / 60. 1.100libavfilter 9. 3.100 / 9. 3.100libswscale 7. 1.100 / 7. 1.100libswresample 4. 10.100 / 4. 10.100libpostproc 57. 1.100 / 57. 1.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from SampleVideo_1280x720_20mb.mp4:Metadata:major_brand : isomminor_version : 512compatible_brands: isomiso2avc1mp41creation_time : 1970-01-01T00:00:00.000000Zencoder : Lavf53.24.2Duration: 00:01:57.31, start: 0.000000, bitrate: 1436 kb/sStream #0:0[0x1](und): Video: h264 (Main) (avc1 / 0x31637661), yuv420p(progressive), 1280x720 [SAR 1:1 DAR 16:9], 1048 kb/s, 25 fps, 25 tbr, 12800 tbn (default)Metadata:creation_time : 1970-01-01T00:00:00.000000Zhandler_name : VideoHandlervendor_id : [0][0][0][0]Stream #0:1[0x2](und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, 5.1, fltp, 383 kb/s (default)Metadata:creation_time : 1970-01-01T00:00:00.000000Zhandler_name : SoundHandlervendor_id : [0][0][0][0]
Stream mapping:Stream #0:0 - #0:0 (h264 (native) - h264 (libx264))Stream #0:1 - #0:1 (aac (native) - mp3 (libmp3lame))
Press [q] to stop, [?] for help
[libx264 00000211314d7340] using SAR1/1
[libx264 00000211314d7340] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 BMI2 AVX2
[libx264 00000211314d7340] profile High, level 3.1, 4:2:0, 8-bit
[libx264 00000211314d7340] 264 - core 164 r3106 eaa68fa - H.264/MPEG-4 AVC codec - Copyleft 2003-2023 - http://www.videolan.org/x264.html - options: cabac1 ref3 deblock1:0:0 analyse0x3:0x113 mehex subme7 psy1 psy_rd1.00:0.00 mixed_ref1 me_range16 chroma_me1 trellis1 8x8dct1 cqm0 deadzone21,11 fast_pskip1 chroma_qp_offset-2 threads22 lookahead_threads3 sliced_threads0 nr0 decimate1 interlaced0 bluray_compat0 constrained_intra0 bframes3 b_pyramid2 b_adapt1 b_bias0 direct1 weightb1 open_gop0 weightp2 keyint250 keyint_min25 scenecut40 intra_refresh0 rc_lookahead40 rccrf mbtree1 crf23.0 qcomp0.60 qpmin0 qpmax69 qpstep4 ip_ratio1.40 aq1:1.00
Output #0, flv, to SampleVideo-testflv.flv:Metadata:major_brand : isomminor_version : 512compatible_brands: isomiso2avc1mp41encoder : Lavf60.3.100Stream #0:0(und): Video: h264 ([7][0][0][0] / 0x0007), yuv420p(progressive), 1280x720 [SAR 1:1 DAR 16:9], q2-31, 25 fps, 1k tbn (default)Metadata:creation_time : 1970-01-01T00:00:00.000000Zhandler_name : VideoHandlervendor_id : [0][0][0][0]encoder : Lavc60.3.100 libx264Side data:cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: N/AStream #0:1(und): Audio: mp3 ([2][0][0][0] / 0x0002), 48000 Hz, stereo, fltp (default)Metadata:creation_time : 1970-01-01T00:00:00.000000Zhandler_name : SoundHandlervendor_id : [0][0][0][0]encoder : Lavc60.3.100 libmp3lame
frame 75 fps0.0 q-1.0 Lsize 759kB time00:00:02.97 bitrate2088.0kbits/s speed5.24x
video:708kB audio:47kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.517854%
[libx264 00000211314d7340] frame I:1 Avg QP:20.95 size:110857
[libx264 00000211314d7340] frame P:20 Avg QP:22.84 size: 20399
[libx264 00000211314d7340] frame B:54 Avg QP:28.08 size: 3798
[libx264 00000211314d7340] consecutive B-frames: 1.3% 8.0% 0.0% 90.7%
[libx264 00000211314d7340] mb I I16..4: 6.1% 25.2% 68.8%
[libx264 00000211314d7340] mb P I16..4: 1.7% 5.3% 0.8% P16..4: 44.9% 19.7% 10.2% 0.0% 0.0% skip:17.2%
[libx264 00000211314d7340] mb B I16..4: 0.2% 0.4% 0.1% B16..8: 50.8% 2.8% 0.3% direct: 0.6% skip:44.8% L0:54.1% L1:42.1% BI: 3.8%
[libx264 00000211314d7340] 8x8 transform intra:52.3% inter:70.8%
[libx264 00000211314d7340] coded y,uvDC,uvAC intra: 67.9% 80.2% 34.6% inter: 11.8% 15.8% 0.8%
[libx264 00000211314d7340] i16 v,h,dc,p: 19% 28% 10% 44%
[libx264 00000211314d7340] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 20% 19% 14% 5% 9% 9% 8% 7% 8%
[libx264 00000211314d7340] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 20% 13% 10% 9% 9% 10% 7% 14% 7%
[libx264 00000211314d7340] i8c dc,h,v,p: 46% 23% 20% 11%
[libx264 00000211314d7340] Weighted P-Frames: Y:0.0% UV:0.0%
[libx264 00000211314d7340] ref P L0: 71.2% 14.7% 13.0% 1.1%
[libx264 00000211314d7340] ref B L0: 96.7% 3.1% 0.2%
[libx264 00000211314d7340] ref B L1: 99.3% 0.7%
[libx264 00000211314d7340] kb/s:1930.46使用 MediaInfo 查看生成文件相关信息可以看到截取的视频长度为 3s 81ms且包含 1 路视频流及 1 路音频流帧率为25 帧。视频编码格式为 AVC音频编码格式为 MP3。
2禁止输出视频
下面命令的功能是将输入视频文件中的音频流提取出来并保存为 FLV 格式的文件。通过使用 -vn 选项该命令禁用了视频流的处理只保留音频流。这可以用于提取音频轨道或者将视频文件转换为只包含音频的文件。
ffmpeg -i SampleVideo_1280x720_20mb.mp4 -vn -f flv -y SampleVideo-testflv.flv使用 MediaInfo 对其进行分析可以看到只有一路音频流
3指定视频的纵横比
下面命令的功能是从输入视频文件中截取前 75 帧并将截取后的视频调整为 640x480 的分辨率同时设置显示比例为 4:3。然后将截取和调整后的视频保存为 FLV 格式的文件。
ffmpeg -i SampleVideo_1280x720_20mb.mp4 -vframes 75 -s 640*480 -aspect 4:3 -f flv -y SampleVideo-testflv.flv使用 MediaInfo 对其进行分析可以看到视频的横纵比为4:3
3、音频选项
①、主要命令选项
-aframes number (output)设置 number 音频帧输出是 -frames:a 的别名。-ar[:stream_specifier] freq (input/output,per-stream)设置音频采样率。默认是输出同于输入。对于输入进行设置仅仅通道是真实的设备或者 raw 数据分离出并映射的通道才有效。对于输出则可以强制设置音频量化的采用率。-aq q (output)设置音频品质(编码指定为 VBR)它是 -q:a 的别名。 quality settings (VBR) -aq 4 128 kb/s-aq 5 160 kb/s-aq 6 192 kb/s-aq 7 224 kb/s-aq 8 256 kb/s -ac[:stream_specifier] channels (input/output,per-stream)设置音频通道数。默认输出会有输入相同的音频通道。对于输入进行设置仅仅通道是真实的设备或者 raw 数据分离出并映射的通道才有效。-an (output)禁止输出音频。-acode codec (input/output)设置音频解码/编码的编/解码器是 -codec:a 的别名。
②、举例
下面命令的功能是从输入视频文件中提取音频流并截取前 180 帧音频。然后使用 libmp3lame 编码器将截取的音频压缩为 MP3 格式。输出音频是立体声采样率为 48000Hz。最后将处理后的音频保存为 FLV 格式的文件。
ffmpeg -i SampleVideo_1280x720_20mb.mp4 -vn -aframes 180 -acodec libmp3lame -ac 2 -ar 48000 -y SampleVideo-testflv.flv使用 MediaInfo 对其进行分析
4、字幕选项
字幕格式包括srtassssa…
①、主要命令选项
-scodec codecinput/output设置字幕解码器是 -codec:s 的别名。-sn (output)禁止输出字幕。
②、举例
1将字幕加入视频中
新建一个 test.srt 文件文件格式为 UTF-8将下面内容复制进去并进行保存
1
00:00:00,009 -- 00:00:03,490
这是一个字幕测试案例2
00:00:05,619 -- 00:00:07,420
我们将从这个例子中3
00:00:09,549-- 00:00:12,170
学会如何向视频中添加字幕下面命令的功能是将输入视频文件与指定的字幕文件进行合并生成一个包含字幕的新视频文件。通过使用 -vf subtitlestest.srt 选项该命令将输入视频的图像流与字幕文件中的文字内容进行合成生成一个带有字幕的输出视频文件 “test.mp4”。
ffmpeg -i SampleVideo_1280x720_20mb.mp4 -vf subtitlestest.srt -y test.mp4使用 MediaInfo 对其进行分析这里只有音频流和视频流无字幕流 注意这里没有字幕流的原因是我们使用的是 -vf 视频过滤器因此将字幕直接打到视频流里面了
打开 test.mp4 文件我们可以看到字幕
2字幕格式转换
MP4 支持的字幕格式主要有两种常见的格式SRTSubRip Subtitle和VTTWebVTT Subtitle
MKVMatroska Video是一种开放的多媒体容器格式支持多种字幕格式其中包括SRTSubRip Subtitle、VobSub.sub/.idx、SSA/ASSSubStation Alpha、PGSPresentation Graphic Stream等。
srt 格式字幕转换成 ass 格式命令
ffmpeg -i test.srt test.ass回显信息
PS D:\Work\test ffmpeg -i test.srt test.ass
ffmpeg version 6.0-essentials_build-www.gyan.dev Copyright (c) 2000-2023 the FFmpeg developersbuilt with gcc 12.2.0 (Rev10, Built by MSYS2 project)configuration: --enable-gpl --enable-version3 --enable-static --disable-w32threads --disable-autodetect --enable-fontconfig --enable-iconv --enable-gnutls --enable-libxml2 --enable-gmp --enable-bzlib --enable-lzma --enable-zlib --enable-libsrt --enable-libssh --enable-libzmq --enable-avisynth --enable-sdl2 --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxvid --enable-libaom --enable-libopenjpeg --enable-libvpx --enable-mediafoundation --enable-libass --enable-libfreetype --enable-libfribidi --enable-libvidstab --enable-libvmaf --enable-libzimg --enable-amf --enable-cuda-llvm --enable-cuvid --enable-ffnvcodec --enable-nvdec --enable-nvenc --enable-d3d11va --enable-dxva2 --enable-libvpl --enable-libgme --enable-libopenmpt --enable-libopencore-amrwb --enable-libmp3lame --enable-libtheora --enable-libvo-amrwbenc --enable-libgsm --enable-libopencore-amrnb --enable-libopus --enable-libspeex --enable-libvorbis --enable-librubberbandlibavutil 58. 2.100 / 58. 2.100libavcodec 60. 3.100 / 60. 3.100libavformat 60. 3.100 / 60. 3.100libavdevice 60. 1.100 / 60. 1.100libavfilter 9. 3.100 / 9. 3.100libswscale 7. 1.100 / 7. 1.100libswresample 4. 10.100 / 4. 10.100libpostproc 57. 1.100 / 57. 1.100
Input #0, srt, from test.srt:Duration: N/A, bitrate: N/AStream #0:0: Subtitle: subrip
Output #0, ass, to test.ass:Metadata:encoder : Lavf60.3.100Stream #0:0: Subtitle: assMetadata:encoder : Lavc60.3.100 ssa
Stream mapping:Stream #0:0 - #0:0 (subrip (srt) - ass (ssa))
Press [q] to stop, [?] for help
size 1kB time00:00:09.55 bitrate 0.7kbits/s speed6.23e03x
video:0kB audio:0kB subtitle:0kB other streams:0kB global headers:1kB muxing overhead: 450.980377%生成的 test.ass 文件内容如下
[Script Info]
; Script generated by FFmpeg/Lavc60.3.100
ScriptType: v4.00
PlayResX: 384
PlayResY: 288
ScaledBorderAndShadow: yes
YCbCr Matrix: None[V4 Styles]
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
Style: Default,Arial,16,Hffffff,Hffffff,H0,H0,0,0,0,0,100,100,0,0,1,1,0,2,10,10,10,1[Events]
Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Dialogue: 0,0:00:00.01,0:00:03.49,Default,,0,0,0,,这是一个字幕测试案例
Dialogue: 0,0:00:05.62,0:00:07.42,Default,,0,0,0,,我们将从这个例子中
Dialogue: 0,0:00:09.55,0:00:12.17,Default,,0,0,0,,学会如何向视频中添加字幕下面命令使用 FFmpeg 工具进行视频转码和字幕添加的操作。
ffmpeg -i SampleVideo_1280x720_20mb.mp4 -i test.ass -c copy -y SampleVideo-testmvk.mkv使用 MediaInfo 对其进行分析这里有三路流音频流、视频流和字幕流
3提取字幕
下面命令式将输入文件 “SampleVideo-testmvk.mkv” 中的音频和视频流去掉然后将子标题提取出来保存为 SRT 格式的 “output-sub1.srt” 文件。
ffmpeg -i SampleVideo-testmvk.mkv -an -vn -scodec srt output-sub1.srt提取后的信息用 notepad 查看
下面这个命令的主要功能是从 “output1002.mkv” 文件中提取字幕信息并将这些信息保存为 ASS 格式的字幕文件 “output-sub1.ass”
ffmpeg -i SampleVideo-testmvk.mkv -an -vn -scodec ass -y output-sub1.ass提取后的信息用 notepad 查看 下面这个命令的主要目的是将 “SampleVideo_1280x720_20mb.mp4” 视频文件和 “test.ass” 字幕文件合并。它将保持音频流的原始格式并指定视频流编码格式为 libx264并将字幕直接添加到视频中然后将结果保存为 “output1002.mkv” 文件
ffmpeg -i SampleVideo_1280x720_20mb.mp4 -i test.ass -c copy -c:v libx264 -y output1002.mkv使用 MediaInfo 对其进行分析这里有三路流音频流、视频流和字幕流并且视频流的格式为 AVC
三、FFmpeg 命令示例
上面已经对相关的 FFmepg 选项进行了详细的讲解及演示下面仅做个总结但不进行演示了
1、转换格式封装格式的转化
①、下面命令将从 input_test.mp4 中提取音频流并将其直接复制到 output_test.flv 中而不进行任何重新编码。这可以用来分离音频流或将音频从一个容器格式转换为另一个容器格式而无需对音频进行重新编码。
ffmpeg -i input_test.mp4 -vn -acodec copy output_test.flv②、下面命令将从 input_test.aac 中提取音频流并将其直接复制到 output_test.mp3 中而不进行任何重新编码。这可以用来将 AAC 格式的音频转换为 MP3 格式而无需对音频进行重新编码。请注意如果输入文件的音频编码不支持 MP3 格式或者输出文件的扩展名不适用于 MP3 格式那么该命令可能会失败。
ffmpeg -i input_test.aac -vn -acodec copy output_test.mp32、抽取画面中的音频
①、下面命令将从 input_test.mp4 中提取音频流并将其直接复制到 output_test.aac 中而不进行任何重新编码。
ffmpeg -i input_test.mp4 -vn -y -acodec copy output_test.aac②、下面命令将从 input_test.mp4 中提取音频流并将其直接复制到 output_test.mp3 中而不进行任何重新编码。请注意如果输入文件的音频编码不支持 MP3 格式或者输出文件的扩展名不适用于 MP3 格式那么该命令可能会失败。
ffmpeg -i input_test.mp4 -vn -y -acodec copy output_test.mp3③、audioaac — mp3想从 mp4 文件中提取音频并输出为 mp3 格式可以参考以下步骤 下面命令的作用是将输入文件 input_test.mp4 进行转码并将其视频流直接复制到输出文件 output_test.flv 中而音频流将使用 libmp3lame 编码器进行重新编码为 MP3 格式。
ffmpeg -i input_test.mp4 -vcodec copy -acodec libmp3lame -y output_test.flv该命令从 output_test.flv 中提取音频流并将其直接复制到 output_test.mp3 中而不进行任何重新编码。
ffmpeg -i output_test.flv -vn -acodec copy -y output_test.mp3因此可总结如下
输出 mp3 格式的音频文件必须输入文件是 mp3 编码的音频流输出 aac 格式的音频文件必须输入文件是 aac 编码的音频流
3、抽取画面中的视频
该命令将从 input_test.mp4 中提取视频流并将其直接复制到 output_test.avi 中而不进行任何重新编码。
ffmpeg -i input_test.mp4 -vcodec copy -an output_test.avi4、音频视频合成
下面命令将合并 input_test_1.mp4 和 input_test_2.mp3 两个输入文件将视频流和音频流直接复制到输出文件 output_test.mp4 中而不进行任何重新编码。
ffmpeg -i input_test_1.mp4 -i input_test_2.mp3 -vcodec copy -acodec copy output_test.mp4下面命令将输入的视频文件 input_test_1.mp4 和音频文件 input_test_2.mp3 进行处理并将它们合并成一个单独的 MP4 文件 output_test.mp4。视频流和音频流都会被直接复制到输出文件中而不会进行重新编码。在输出文件中第一个输入文件的视频将在 10 秒后开始播放或处理。
ffmpeg -i input_test_1.mp4 -itsoffset 10 -i input_test_2.mp3 -vcodec copy -acodec copy output_test.mp4下面命令将输入的视频文件 input_test_1.mp4 的第 20 秒开始的 5 秒内容与音频文件 input_test_2.aac 进行处理并将它们合并成一个单独的 MP4 文件 output_test.mp4。视频流和音频流都会被直接复制到输出文件中而不会进行重新编码。输出文件中只包含输入文件指定的时间范围内的内容。
ffmpeg -ss 20 -t 5 -i input_test_1.mp4 -i input_test_2.aac -vcodec copy -acodec copy output_test.mp45、音频音频合成
下面命令将输入的两个音频文件 input_test_1.mp3 和 input_test_2.mp3 进行混音处理并将它们合并成一个单独的 MP3 文件 output_test.mp3。输出文件的音频时长将与两个输入文件中最短的音频时长相匹配通过使用 amix 过滤器来实现混音操作。
ffmpeg -i input_test_1.mp3 -i input_test_2.mp3 -filter_complex amixinputs2:durationshortest output_test.mp3-filter_complex amixinputs2:durationshortest这个选项用于指定复杂的音频过滤器图表。在这个例子中使用了 amix 过滤器它将两个输入的音频混合为一个输出。inputs2 表示有两个输入durationshortest 表示输出的音频时长将与最短输入的时长相匹配。
下面命令将输入的两个音频文件 input_test_1.mp3 和 input_test_2.mp3 进行混音处理并将它们合并成一个单独的 MP3 文件 output_test.mp3。输出文件的音频时长将与两个输入文件中最长的音频时长相匹配通过使用 amix 过滤器来实现混音操作。
ffmpeg -i input_test_1.mp3 -i input_test_2.mp3 -filter_complex amixinputs2:durationlongest output_test.mp3下面命令将输入的两个音频文件 input_test_1.mp3 和 input_test_2.mp3 进行复制处理并将它们合并成一个单独的 MP3 文件 output_test.mp3。输出文件的音频编码格式和质量与输入文件完全相同因为使用了 -acodec copy 选项来进行直接复制。由于输入是音频文件所以 -vcodec copy 选项实际上没有影响。
ffmpeg -i input_test_1.mp3 -i input_test_2.mp3 -vcodec copy -acodec copy output_test.mp3下面命令将输入的三个音频文件INPUT1、INPUT2 和 INPUT3进行混音处理并将它们合并成一个单独的输出文件。输出文件的音频时长将与第一个输入文件的时长相匹配通过使用 amix 过滤器来实现混音操作。在混音转换时过渡时间为 3 秒。
ffmpeg -i INPUT1 -i INPUT2 -i INPUT3 -filter_complex amixinputs3:durationfirst:dropout_transition3 OUTPUT-filter_complex amixinputs3:durationfirst:dropout_transition3这个选项用于指定复杂的音频过滤器图表。在这个例子中使用了 amix 过滤器它将三个输入的音频混合为一个输出。inputs3 表示有三个输入durationfirst 表示输出的音频时长将与第一个输入的时长相匹配。dropout_transition3 表示在混音转换时的过渡时间为 3 秒。
6、视频分离成图片
下面命令从输入的视频文件 input_test.mp4 中提取帧并以每秒一帧的速率保存为 JPEG 图像文件。输出的图像文件将以 output_image-001.jpeg、output_image-002.jpeg 等命名表示提取的帧的顺序。
ffmpeg -i input_test.mp4 -r 1 -f image2 output_image-%03d.jpeg7、图片合成视频
下面命令将一系列图像文件例如 output_image-001.jpeg、output_image-002.jpeg 等作为输入使用 FFmpeg 工具将它们合并为一个视频文件 output_test.mp4。输入的图像文件按照帧的顺序进行读取并转换为视频格式进行合并。输出文件的格式是 MP4。
ffmpeg -f image2 -i output_image-%03d.jpeg output_test.mp48、改变音量大小
下面命令将输入的音频文件 input_test.mp3 进行音量调整处理将音量调整为原来的一半并生成一个输出的 MP3 文件 output_test.mp3。这里使用了 -af 选项来指定音频过滤器并设置了 volume 过滤器来实现音量调整。
ffmpeg -i input_test.mp3 -af volume0.5 output_test.mp39、音效淡入淡出效果
下面命令将输入的音频文件 input_test.mp3 应用渐入效果处理从音频的起始位置开始在 4 秒的时间内逐渐增加音量并生成一个输出的 MP3 文件 output_test.mp3。渐入效果由 -filter_complex 选项指定的 afade 过滤器实现。
ffmpeg -i input_test.mp3 -filter_complex afadetin:ss0:d4 output_test.mp3-filter_complex afadetin:ss0:d4这个选项用于指定复杂的音频过滤器图表。在这个例子中使用了 afade 过滤器来实现渐入效果。tin 表示渐入效果ss0 表示从音频的起始位置开始应用渐入d4 表示渐入的持续时间为 4 秒。
10、截取音频
下面命令从输入的音频文件 input_test.mp3 中剪切出从第 10 秒到第 20 秒的部分并生成一个输出的 MP3 文件 output_test.mp3。剪切操作由 -ss 和 -to 选项指定的时间范围来控制。通过使用 -vn 选项视频流被忽略只处理音频流。使用 -acodec copy 选项可以直接复制输入音频的编码格式而不进行重新编码。
ffmpeg -ss 10 -i input_test.mp3 -to 20 -vn -acodec copy output_test.mp311、容器时长获取
下面命令使用 FFprobe 工具对输入的音频文件 input_test.mp3 进行分析仅输出该文件的持续时间时长。输出的持续时间以秒为单位。通过设置 -v error 选项只输出错误信息并使用 -of 选项设置输出格式。
ffprobe -v error -show_entries formatduration -of defaultnoprint_wrappers1:nokey1 -i
input_test.mp3-v error这个选项用于设置错误日志的输出级别为错误级别。-v error 表示只输出错误信息不输出其他信息。-show_entries formatduration这个选项用于指定要显示的信息条目。在这个例子中使用 formatduration 表示要显示输入文件的持续时间。-of defaultnoprint_wrappers1:nokey1这个选项用于设置输出格式。-of default 表示使用默认输出格式noprint_wrappers1 表示不打印包装器nokey1 表示不打印键名只输出值。
12、网络资源下载
下面命令使用 FFmpeg 工具从指定的 URL 下载音频文件并将其保存为 MP3 格式的输出文件 output_test.mp3。通过使用 -c copy选项输入文件的编码格式将直接复制到输出文件中而不进行重新编码。使用 -f mp3 选项指定输出文件的格式为 MP3。请注意https://xxx.xxx.xxxxxx应替换为实际的音频文件的网络地址。
ffmpeg -i https://xxx.xxx.xxxxxx -c copy -f mp3 output_test.mp313、播放音频视频
播放 input_test.mp3 文件
ffplay input_test.mp314、图片生成 gif 动图
下面命令将一系列图像文件例如 input_image_001.png、input_image_002.png 等作为输入使用 FFmpeg 工具将它们转换为一个 GIF 动画文件 output_test.gif。输入的图像文件按照帧的顺序进行读取并根据指定的帧率生成 GIF 动画。输出文件的格式是 GIF。
ffmpeg -i input_image_%03d.png -r 5 output_test.gif-ar 44100这个选项用于指定输出音频的采样率。在这个例子中-ar 44100 表示输出音频的采样率为 44100 Hz。-ac 2这个选项用于指定输出音频的通道数。在这个例子中-ac 2 表示输出音频的通道数为 2即立体声。-f s16le这个选项用于指定输出音频的格式。-f s16le 表示输出音频以 16 位有符号整数的 PCM 格式进行保存。
15、抽取 PCM 数据
下面命令从输入的视频文件 input_test.mp4 中提取音频并将其保存为 PCM 格式的音频文件 output_test.pcm。通过使用 -vn 选项视频流被忽略只处理音频流。使用 -ar 选项指定输出音频的采样率-ac 选项指定输出音频的通道数-f 选项指定输出音频的格式为 16 位有符号整数的 PCM。
ffmpeg -i input_test.mp4 -vn -ar 44100 -ac 2 -f s16le output_test.pcm下面命令使用 ffplay 命令行工具播放 PCM 格式的音频文件 output_test.pcm。通过设置 -ar 选项指定音频的采样率为 44100 Hz-ac 选项指定音频的通道数为 2立体声-f 选项指定输入音频的格式为 16 位有符号整数的 PCM。
ffplay -ar 44100 -ac 2 -f s16le output_test.pcm我的qq2442391036欢迎交流