【FFmpeg实战】FFMPEG 常用命令行
发布网友
发布时间:2024-09-29 22:35
我来回答
共1个回答
热心网友
时间:2024-11-04 15:48
在FFMPEG实战中,我们需要掌握一系列常用命令行技巧,以完成音视频的分离、解复用、转码、封装、剪切、叠加水印、格式转换、流编码与解码、截取帧以及分辨率压缩等操作。
首先,让我们从音视频的基本处理开始。使用`ffmpeg`命令行工具,我们可以方便地控制编码参数如B帧数目、关键帧间隔和分辨率,如:
`ffmpeg -bf X -g Y -s WxH input.mp4`
这里的`-bf`控制B帧数目,`-g`控制关键帧间隔,`-s`控制分辨率。
接着,进行视频的封装与剪切。提取图片的操作可通过如下命令实现:
`ffmpeg -i test.avi -r 1 -f image2 image-%3d.jpeg`
剪切视频时,可使用以下命令:
剪切从0:1:30开始时长20s的视频:
`ffmpeg -i input.mp4 -ss 1m30s -t 20s -c copy output.mp4`
剪切从0:1:30开始到0:2:30秒间的视频:
`ffmpeg -i input.mp4 -ss 1m30s -to 2m30s -c copy output.mp4`
接下来,我们通过命令行将视频叠加水印,如:
`ffmpeg -i Titanic.mkv -vf "movie=test.PNG,scale=100:150[watermask];[in][watermask] overlay=100:100[out]" -y Titanic.mp4`
这里`scale`用于调整水印大小,`overlay`用于指定水印位置。
格式转换方面,将MP3转换为PCM数据,可以使用以下命令:
`ffmpeg -i input.mp3 output.pcm`
编码与解码方面,利用`ffmpeg`进行RTP流的编码与接收,并存为ts文件:
`ffmpeg -re -i udp://input_rtp -f segment -map 0 -strftime 1 -segment_time 3000 output.ts`
截取YUV和压缩分辨率时,可使用如下命令:
从第0帧开始截取30帧:
`ffmpeg -i input.yuv -vf "select=gt(scene\,0.5)" input_%03d.png`
根据时间截取帧(截取从第10秒到第20秒):
`ffmpeg -i input.yuv -ss 10s -t 10s output.yuv`
在进行音视频开发时,经常需要播放YUV与PCM数据。对于YUV数据,可直接使用`ffplay`播放:
`ffplay input.yuv`
而对于PCM数据,同样可以使用`ffplay`播放:
`ffplay input.pcm`
最后,我们将PCM数据编码为AC3格式:
`ffmpeg -i input.pcm output.ac3`
以上命令行技巧是FFMPEG实战中不可或缺的一部分,通过掌握这些命令,开发者可以更高效地进行音视频的处理和开发工作。