当前位置: 首页 > Linux

LinuxShellFFmpeg

时间:2023-04-06 19:34:26 Linux

常用编码ffmpeg-iinput.mov-s800x450-b1M-vcodech264-acodecaacoutput.mp4裁剪画面#width:width#height:height#left:leftmargin#top:topmarginffmpeg-iinput.mp4-vfcrop=[width]:[height]:[left]:[top]-b1M-vcodech264output.mp4#保留屏幕的左下四分之一#iw:inputwidth#ih:inputheight#---------#|||#|-----+-----|#|/////||#-----------ffmpeg-iinput.mp4-vfcrop=iw/2:ih/2:0:ih/2-b1M-vcodech264output.mp4MP4到MOVffmpeg-iinput.mp4-acodeccopy-vcodeccopy-fmovoutput.movimagetovideo#mspf:millisecondperframe#%06d.jpg:000001.jpg,000002.jpg,...#vf:转换图片为奇数宽高为偶数的视频,用黑色填充空白部分ffmpeg-r1000/$mspf-fimage2-i"%06d.jpg"-vcodeclibx264-pix_fmtyuv420p-vf"pad=ceil(iw/2)*2:ceil(ih/2)*2:color=black"-an"$videofile"截图ffmpeg-iinput.mp4-ss00:00:00.000-vframes1截图。pngrotation#0=90CounterCLockwiseandVerticalFlip(default)#1=90Clockwise#2=90CounterClockwise#3=90ClockwiseandVerticalFlipffmpeg-iinput.mp4-vf"转置=1"output.mp4生成缩略图#每秒一个ffmpeg-iinput.mp4-vffps=1screenshot_%d.png#每分钟一个ffmpeg-iinput.mp4-vffps=1/60screenshot_%d.png#每十分钟一次ffmpeg-iinput.mp4-vffps=1/600screenshot_%d.png去除水印1.使用show参数在视频上显示一个绿色框来估计水印位置ffmpeg-ieagles.mpg-vfdelogo=x=700:y=0:w=100:h=50:show=1nologo.mpg2.确定水印位置后,去掉水印ffmpeg-ieagles.mpg-vfdelogo=x=730:y=0:w=70:h=46nologo.mpg3,去水印的同时添加文字ffmpeg-i"input.mkv"-c:aaac-b:a320K-c:vh264_nvenc-b:v5M-maxrate20M-vfdelogo=x=1680:y=1030:w=230:h=44:show=0,drawtext=fontfile=YouSheBiaoTiHei.ttf:text=文字内容:x=1772:y=1054:fontcolor=white:fontsize=25"output.mp4"连接视频和音频1,不转码#-最短,输出文件的持续时间=所有输入文件的最短持续时间#否则,输出文件的持续时间=最长的持续时间所有输入文件ffmpeg-ivideo.mp4-iaudio.m4a-ccopy-shortestoutput.mp42,转码ffmpeg-ivideo.mp4-iaudio.wav-c:vcopy-c:aaac-strict实验输出.mp43,替换现有音频ffmpeg-ivideo.mp4-iaudio.wav-c:vcopy-c:aaac-strictexperimental-map0:v:0-map1:a:0output.mp4连接多个音频1.新建文件list.txt,内容如下文件'1.mp3'file'2.mp3'file'3.mp3'file'4.mp3'file'5.mp3'2,connectffmpeg-fconcat-ilist.txt-ccopyoutput.mp3反色支持if需要要在macOS上播放QuickTime,请添加“-pix_fmtyuv420p”参数。ffmpeg-iinput.mp4-vflutrgb="r=negval:g=negval:b=negval"-pix_fmtyuv420p-c:acopyoutput.mp4修改视频播放速度PTS(PresentationTimeStamp,显示时间戳)#加速ffmpeg-iinput.mp4-vfsetpts=PTS/8output.mp4#slowdownffmpeg-iinput.mp4-vfsetpts=PTS/(1/4)output.mp4修改音频播放速度,因为atempo参数为0.5~2.0需要结合使用才能实现8倍速或0.25倍速播放#加速ffmpeg-iinput.mp4-afatempo=2.0,atempo=2.0,atempo=2.0,atempo=2.0output.mp4#Decelerateffmpeg-iinput.mp4-afatempo=0.5,atempo=0.5output.mp4同时修改视频和音频播放速度#加速ffmpeg-iinput.mp4-vfsetpts=PTS/8-afatempo=2.0,atempo=2.0,atempo=2.0,atempo=2.0output.mp4#slowdownffmpeg-iinput.mp4-vfsetpts=PTS/(1/4)-afatempo=0.5,atempo=0.5output.mp4从视频中提取音频ffmpeg-iinput.mp4-vn-acodeccopyoutput-audio.aacExtractVideofromAudioffmpeg-iinput.mp4-an-vcodeccopyoutput-video.mp4加速/减速d自己的视频您可以使用setpts视频过滤器更改视频流的速度。请注意,在以下示例中,音频流没有改变,因此最好使用-an将其禁用。要使视频速度加倍,可以使用:ffmpeg-iinput.mkv-filter:v"setpts=0.5*PTS"output.mkv过滤器通过更改每个视频帧的呈现时间戳(PTS)来工作。例如,如果在时间戳1和2处显示了两个连续的帧,并且您想加快视频速度,则这些时间戳需要分别变为0.5和1。因此,我们必须将它们乘以0.5。请注意,此方法会丢帧以达到所需的速度。您可以通过指定比输入更高的输出帧速率来避免丢帧。例如,从4FPS的输入到加速到4倍(16FPS)的输入:ffmpeg-iinput.mkv-r16-filter:v"setpts=0.25*PTS"output.mkv减慢速度您的视频,您必须使用大于1:ffmpeg-iinput.mkv-filter:v"setpts=2.0*PTS"output.mkvSmooth你可以使用minterpolate视频过滤器平滑慢/快视频。这也称为“运动插值”或“光流”。ffmpeg-iinput.mkv-filter"minterpolate='mi_mode=mci:mc_mode=aobmc:vsbmc=1:fps=120'"output.mkv其他选项包括slowmoVideo和Butterflow。加快/减慢音频您可以使用atempo音频过滤器加快或减慢音频。要使音频速度加倍:ffmpeg-iinput.mkv-filter:a"atempo=2.0"-vnoutput.mkvatempo过滤器仅限于使用0.5和2.0之间的值(因此它可以将速度减慢到不少于一半原始速度,并且速度最多不超过输入的两倍)。如果需要,您可以通过将多个atempo过滤器串联在一起来绕过此限制。以下是音频速度的四倍:ffmpeg-iinput.mkv-filter:a"atempo=2.0,atempo=2.0"-vnoutput.mkvUsingacomplexfiltergraph,youcanspe同时编辑视频和音频:ffmpeg-iinput.mkv-filter_complex"[0:v]setpts=0.5*PTS[v];[0:a]atempo=2.0[a]"-map"[v]"-map"[a]"输出.mkv