在本指南中,我将通过示例来说明如何使用FFmpeg媒体框架进行各种音视频转码和转换操作。我为初学者整理了最常用的20多个FFmpeg命令,我会不时添加更多示例以保持本指南的更新。请为本指南添加书签,并在以后查看更新。20多个FFmpeg命令给初学者FFmpeg命令的典型语法是:ffmpeg[globaloptions]{[inputfileoptions]-iinput_url_address}...{[outputfileoptions]output_url_address}...现在我们来看看一些重要且有用的FFmpeg命令。1、获取音频/视频文件信息为显示你的媒体文件细节,运行:$ffmpeg-ivideo.mp4样本输出:ffmpegversionn4.1.3Copyright(c)2000-2019theFFmpegdevelopersbuiltwithgcc8.2.1(GCC))20181127配置:--prefix=/usr--disable-debug--disable-static--disable-stripping--enable-fontconfig--enable-gmp--enable-gnutls--enable-gpl--enable-ladspa--enable-libaom--enable-libass--enable-libbluray--enable-libdrm--enable-libfreetype--enable-libfribidi--enable-libgsm--enable-libiec61883--enable-libjack--enable-libmodplug--enable-libmp3lame--enable-libopencore_amrnb--enable-libopencore_amrwb--enable-libopenjpeg--enable-libopus--enable-libpulse--enable-libsoxr--enable-libspeex--enable-libssh--enable-libtheora--enable-libv4l2--enable-libvidstab--enable-libvorbis--enable-libvpx--enable-libwebp--enable-libx264--enable-libx265--enable-libxcb--enable-libxml2--enable-libxvid--enable-nvdec--enable-nvenc--enable-omx--enable-shared--enable-version3libavutil56。22.100/56.22.100libavcodec58.35.100/58.35.100libavformat58.20.100/58.20.100libavdevice58.5.100/58.5.100libavfilter7.40.101/7.40.101libswscale5.3.100/5.3.100libswresample3.3.100/3.3.100libpostproc55.3.100/55.3.100Input#0,mov,mp4,m4a,3gp,3g2,mj2,来自'video.mp4':元数据:major_brand:isomminor_version:512compatible_brands:isomiso2avc1mp41encoder:Lavf58.20.1000Duration::00:28.79,开始:0.000000,比特率:454kb/sStream#0:0(und):视频:h264(High)(avc1/0x31637661),yuv420p(tv,smpte170m/bt470bg/smpte170m),1920x1080[SAR1:1DAR16:9],318kb/s,30fps,30tbr,15360tbn,60tbc(default)Metadata:handler_name:ISOMediafileproducedbyGoogleInc.Createdon:04/08/2019.Stream#0:1(eng):Audio:aac(LC)(mp4a/0x6134706D),44100Hz,stereo,fltp,128kb/s(default)Metadata:handler_name:ISOMediafileproducedbyGoogleInc.Createdon:04/08/2019.至少必须指定一个输出文件如你如上面的输出所示,FFmpeg显示媒体文件信息,以及FFmpeg详细信息,例如版本、配置详细信息、版权声明、构建参数和库选项等。如果您不想看到FFmpeg横幅和其他详细信息,但仅对于媒体文件信息,请使用-hide_banner标志,如下所示。$ffmpeg-ivideo.mp4-hide_banner示例输出:使用FFMpeg查看音频和视频文件信息。你看见了吗?现在,它只显示媒体文件的详细信息。2.将视频文件转换成不同的格式FFmpeg是一个强大的音视频转换器,因此,它可以在不同格式之间转换媒体文件。例如,要将mp4文件转换为avi文件,请运行:$ffmpeg-ivideo.mp4video.avi同样,您可以将媒体文件转换为您选择的任何格式。例如,要将YouTubeflv视频转换为mpeg,请运行:$ffmpeg-ivideo.flvvideo.mpeg如果要保持源视频文件的质量,请使用-qscale0参数:$ffmpeg-iinput。webm-qscale0output.mp4要查看FFmpeg支持的格式列表,请运行:$ffmpeg-formats3,convertavideofiletoanaudiofile我将视频文件转换为音频文件,只需指定输出格式,例如.mp3或.ogg或任何其他音频格式。上面的命令会将input.mp4视频文件转换为output.mp3音频文件。$ffmpeg-iinput.mp4-vnoutput.mp3此外,您还可以在输出文件上使用各种音频转码选项,如下所示。$ffmpeg-iinput.mp4-vn-ar44100-ac2-ab320-fmp3output.mp3这里,-vn-表示我们在输出文件中禁用了视频录制。-ar–设置输出文件的音频频率。常用的数值有22050赫兹、44100赫兹、48000赫兹。-ac-设置音频通道数。-ab-指示音频比特率。-f–输出文件格式。在我们的例子中,它是mp3格式。4、改变视频文件的分辨率如果要将视频文件设置为指定的分辨率,可以使用以下命令:$ffmpeg-iinput.mp4-filter:vscale=1280:720-c:acopy输出.mp4或$ffmpeg-iinput.mp4-s1280x720-c:acopyoutput.mp4以上命令会将给定视频文件的分辨率设置为1280x720。同样,要将上述文件转换为640x480大小,请运行:$ffmpeg-iinput.mp4-filter:vscale=640:480-c:acopyoutput.mp4或者$ffmpeg-iinput.mp4-s640x480-c:acopyoutput.mp4这个技巧将帮助您将视频文件缩放到较小的显示设备,例如平板电脑和手机。5.压缩视频文件将媒体文件的大小减小到较小的大小以节省硬件空间始终是个好主意。以下命令将压缩并减小输出文件的大小。$ffmpeg-iinput.mp4-vfscale=1280:-1-c:vlibx264-presetveryslow-crf24output.mp4请注意,如果您尝试减小视频文件大小,则会降低视频质量。如果24过于激进,您可以将-crf值降低到或更低。您还可以使用下面的选项转换编码音频以降低比特率,使其成为立体声,从而减小尺寸。-ac2-c:aaac-strict-2-b:a128k6,压缩音频文件就像压缩视频文件一样,为了节省一些磁盘空间,您也可以使用-ab标志来压缩音频文件。例如,您有一个比特率为320kbps的音频文件。您想通过将比特率更改为任何较低的值来压缩它,如下所示。$ffmpeg-iinput.mp3-ab128output.mp3各种可用音频比特率的列表是:96kbps112kbps128kbps160kbps192kbps256kbps320kbps对于音频,使用-an标志。$ffmpeg-iinput.mp4-anoutput.mp4这里,-an表示不录音。上面的命令将取消设置所有与音频相关的标志,因为我们不想要来自input.mp4的音频。8.从媒体文件中删除视频流同样,如果您不需要视频流,您可以简单地使用-vn标志将其从媒体文件中删除。-vn表示不录像。换句话说,此命令将给定的媒体文件转换为音频文件。下面的命令将从给定的媒体文件中删除视频。$ffmpeg-iinput.mp4-vnoutput.mp3您还可以使用-ab标志来指示输出文件的比特率,如下例所示。$ffmpeg-i输入.mp4-vn-ab320输出.mp39。从视频中提取图像FFmpeg的另一个有用的特性是我们可以轻松地从视频文件中提取图像。如果您想从视频文件创建专辑,这将非常有用。要从视频文件中提取图像,请使用以下命令:$ffmpeg-iinput.mp4-r1-fimage2image-%2d.png这里,-r-设置帧速率。即每秒提取到图像的帧数。默认值为25。-f–指示输出格式,即在我们的示例中为图像。image-%2d.png–指示我们要如何命名提取的图像。在这种情况下,命名应该像image-01.png、image-02.png、image-03.png等一样开始。如果您使用%3d,那么图像将被命名为image-001.png、image-002.png等开始。10.裁剪视频FFMpeg允许按我们选择的任何范围裁剪给定的媒体文件。裁剪视频文件的语法如下:ffmpeg-iinput.mp4-filter:v"crop=w:h:x:y"output.mp4here,input.mp4–源视频文件。-filter:v–表示视频过滤器。crop–表示裁剪过滤器。w–我们要从源视频中裁剪的矩形的宽度。h——矩形的高度。x–我们要从源视频中裁剪的矩形的x坐标。y–矩形的y坐标。假设你想要一个来自位置(200,150)的视频,宽度为640像素,高度为480像素,命令将是:$ffmpeg-iinput.mp4-filter:v"crop=640:480:200:150"output.mp4请注意,剪切视频会影响质量。除非必要,否则不要切割。11.转换视频的特定部分有时,您可能只想将视频文件的特定部分转换为不同的格式。例如,下面的命令会将给定视频input.mp4文件的前10秒转换为视频.avi格式。$ffmpeg-iinput.mp4-t10output.avi这里我们以秒为单位指定时间。此外,以hh.mm.ss格式指定时间也可以。12.设置视频的纵横比您可以使用-aspect标志来设置视频文件的纵横比,如下所示。$ffmpeg-iinput.mp4-aspect16:9output.mp4常用的纵横比有:16:94:316:105:42:21:12:35:12:39:113,将海报图像添加到音频文件您可以将海报图像添加到您的文件,以便在播放音频文件时显示该图像。这对于托管在视频托管或共享站点上的音频文件很有用。$ffmpeg-loop1-iinputimage.jpg-iinputaudio.mp3-c:vlibx264-c:aaac-strictexperimental-b:a192k-shortestoutput.mp414,使用开始和停止时间来切割一段媒体文件可以将视频剪切成带有开始和停止时间的小片段,我们可以使用以下命令。$ffmpeg-iinput.mp4-ss00:00:50-codeccopy-t50output.mp4这里,-ss-表示视频剪辑的开始时间。在我们的示例中,开始时间是第50秒。-t–表示总持续时间。当您想使用开始和结束时间从音频或视频文件中剪切一部分时,它非常有用。同样,我们可以像下面这样剪切音频。$ffmpeg-iaudio.mp3-ss00:01:54-to00:06:53-ccopyoutput.mp315,将视频文件拆分成多个部分有些网站只允许您上传特定大小的视频。在这种情况下,您可以将大型视频文件拆分成多个较小的部分,如下所示。$ffmpeg-iinput.mp4-t00:00:30-ccopypart1.mp4-ss00:00:30-codeccopypart2.mp4这里,-t00:00:30表示从视频开始到视频的第30秒创建视频的一部分。-ss00:00:30显示视频下一部分的开始时间戳。这意味着第2部分将从第30秒开始,一直持续到原始视频文件结束。16.将多个视频部分加入或合并为一个FFmpeg也可以加入多个视频部分并创建一个视频文件。创建包含您要加入的文件的确切路径的join.txt。所有文件都应该采用相同的格式(相同的编码)。所有文件路径都应该像下面这样一一列出。file/home/sk/myvideos/part1.mp4file/home/sk/myvideos/part2.mp4file/home/sk/myvideos/part3.mp4file/home/sk/myvideos/part4.mp4现在,加入所有文件,使用命令:$ffmpeg-fconcat-ijoin.txt-ccopyoutput.mp4如果出现如下错误;[concat@0x555fed174cc0]Unsafefilename'/path/to/mp4'join.txt:Operationnotpermittedadd-safe0:$ffmpeg-fconcat-safe0-ijoin.txt-ccopyoutput.mp4上面的命令会将part1.mp4、part2.mp4、part3.mp4和part4.mp4文件合并到一个名为output.mp4的文件中。17.为视频文件添加字幕我们可以使用FFmpeg为视频文件添加字幕。为您的视频下载正确的字幕并将其添加到您的视频中,如下所示。$fmpeg-iinput.mp4-isubtitle.srt-map0-map1-ccopy-c:vlibx264-crf23-presetveryfastoutput.mp418,预览或测试你可能想通过预览验证的视频或音频文件或测试输出文件是否已正确转码。要完成预览,您可以使用以下命令从终端播放它:$ffplayvideo.mp4同样,您可以测试音频文件,如下所示。$ffplayaudio.mp319,增加/减少视频播放速度FFmpeg允许您调整视频播放速度。要提高视频播放速度,请运行:$ffmpeg-iinput.mp4-vf"setpts=0.5*PTS"output.mp4此命令将使视频速度加倍。要减慢视频速度,您需要使用大于1的因子。要降低播放速度,请运行:$ffmpeg-iinput.mp4-vf"setpts=4.0*PTS"output.mp420.创建动画GIF我们使用GIF几乎所有社交和专业网络上的图像出于各种目的。使用FFmpeg,我们可以简单快速地创建动画视频文件。以下指南解释了如何在类Unix系统上使用FFmpeg和ImageMagick创建动画GIF文件。如何在Linux21中创建动画GIF,从PDF文件创建视频这些年来我收集了许多PDF文件,主要是Linux教程,保存在我的平板电脑上。有时我懒得在平板电脑上阅读它们。所以我决定从PDF文件创建一个视频,并在电视或电脑等大屏幕设备上观看。如果您想知道如何将一批PDF文件制作成电影,下面的指南将对您有所帮助。如何在Linux中从PDF文件创建视频22.获得帮助在本指南中,我介绍了大多数常用的FFmpeg命令。它有很多不同的选项来执行各种高级功能。要了解更多用法,请参阅手册页。$manffmpeg仅此而已。我希望本指南能帮助您开始使用FFmpeg。如果您觉得本指南有用,请在您的社交和专业网络上分享它。更多好东西即将到来。敬请关注!谢谢!
