• FFMPEG 常用命令举例


    1. 分离音视频

    • 分离视频:ffmpeg -i test.mkv -vcodec copy -an test_video.mp4
    • 分离音频:ffmpeg -i test.mkv -acodec copy -vn test_audio.mp2

    2. 解复用

    ffmpeg –i test.mp4 –vcodec copy –an –f m4v test.264

    ffmpeg –i test.avi –vcodec copy –an –f m4v test.264

    3. 视频转码

    ffmpeg -i test.mp4 -vcodec h264 -s 480*480 -an -f m4v test.264

    ffmpeg –i test.mp4 –vcodec h264 –bf 0 –g 25 –s 352*278 –an –f m4v test.264

    说明: -bf B帧数目控制,-g 关键帧间隔控制,-s 分辨率控制

    主要是靠-i 设定输入视频,-vcodec设定转换格式

    4. 视频封装

    ffmpeg –i test_video.mp4 –i test_audio.mp2 –vcodec copy –acodec copy test.mkv

    5. 视频剪切

    提取图片ffmpeg –i test.avi –r 1 –f image2 image-%3d.jpeg

    剪切视频

    剪切从0:1:30开始时长20s的视频

    ffmpeg -ss 0:1:30 -t 0:0:20 -i input.avi -vcodec copy -acodec copy output.avi

    剪切从0:1:30开始到0:2:30秒间的视频

    ffmpeg -i input.avi -vcodec copy -acodec copy -ss 0:1:30 -to 0:2:30 output.avi

    6. 视频录制

    ffmpeg –i rtsp://192.168.3.205:5555/test –vcodec copy out.avi

    7.叠加水印

    使用命令ffmpeg -i Titanic.mkv -vf "movie=test.PNG,scale=100:150[watermask];[in][watermask] overlay=100:100[out]" -y Titanic.mp4

    scale:水印的大小

    overlay:水印的位置

    8.将MP3转换为PCM数据

    ffmpeg -i test.mp3 -f s16be -ab 192 -ar 44100 test.pcm

    9. 推送RTP流、接收RTP流并存为ts文件

    • 推送RTP流

    ffmpeg -re -i 4kp30_avc.mp4 -an -c copy -f rtp rtp://192.168.25.89:5004 > rtp.sdp

    • ffplay 接收rtp流

    ffplay.exe -protocol_whitelist "udp,tcp,http,https,file,rtp" rtp.sdp

    • ffmpeg 接收rtp流,并存为ts文件

    ffmpeg -protocol_whitelist "udp,tcp,http,https,file,rtp" -i rtp.sdp -c copy 4kp30_avc.ts

    10. ffmpeg 编码

    ffmpeg -s 352*288 -pix_fmt yuv420p -i bus_cif.yuv -vcodec mpeg4 bus_cif.avi//avi
    ffmpeg -s 352*288 -pix_fmt yuv420p -i bus_cif.yuv -vcodec mpeg2video bus_cif.VOB//dvd
    ffmpeg -s 352*288 -pix_fmt yuv420p -i bus_cif.yuv -vcodec wmv1 bus_cif.wmv//wmv
    ffmpeg -s 352*288 -pix_fmt yuv420p -i bus_cif.yuv -vcodec h264 bus_cif.mp4//mp4
    ffmpeg -s 352*288 -pix_fmt yuv420p -i bus_cif.yuv -vcodec flv bus_cif.flv//flv
    ffmpeg -s 352*288 -pix_fmt yuv420p -i bus_cif.yuv -vcodec rv10 bus_cif.rm//rm
    ffmpeg -s 352*288 -pix_fmt yuv420p -i bus_cif.yuv -vcodec vp9 bus_cif.webm//webm

    11. ffmpeg 解码

    ffmpeg -i test1.h264 -c:v rawvideo -pix_fmt yuv420p test1.yuv
    

    12. 截取 YUV

    从第0帧开始截取30帧

    ffmpeg -s widthxheight -i input.yuv -c:v rawvideo -filter:v select="between(n\, 0\, 29)" out.yuv
    

    根据时间截取帧(截取从第10秒到第20秒)

    ffmpeg -s widthxheight -i input.yuv -c:v rawvideo -filter:v select="between(t\, 10\, 20)" out.yuv
    

    13. 压缩分辨率

    ffmpeg -i 1080_60i.ts -s 720x576 720x576.ts
    

    14. ffplay 播放YUV

    ffplay -f rawvideo -video_size 1280x720 -pix_fmt nv12  test.yuv

    需要指定的参数:
    1. -video_size 指定yuv的宽高
    2. -pix_fmt 指定yuv的格式
    yuv的格式名可以通过 ffplay -pix_fmts来查询

    15. ffplay 播放PCM

    ffplay -ar 44100 -channels 1 -f s16le -i test.pcm

    需要指定的参数:
    1. -ar pcm的采样率
    2. -channels pcm的通道数
    3. -f pcm的格式
    pcm的格式可以通过ffplay -sample_fmts来查询

    16. 将 PCM 数据编码为 AC3

    ffmpeg -y -f s16le -ac 1 -ar 44100 -acodec pcm_s16le -i audio_1.pcm test.ac3

    17. 提取视频缩略图

    从视频前10s中提取图像,1s提取一帧 
    ffmpeg -i test.mp4 -t 10 -r 1 -f image2 pic-%03d.jpeg
     

    18. 合并音频视频

    首先是要给 video.mpg做无声处理生成video2.mpg
    ffmpeg -i video.mpg -vcodec copy -an video2.mpg
    然后合并:
    ffmpeg -i video2.mpg -i input.mp3 -vcodec copy -acodec copy output.mpg
     

    19. 视频压缩(用于上传网络)

    ffmpeg -i test_video.mp4 -b 400k -vcodec libx264 -an -y test_video_handle.mp4

    语法:-b <比特率> 指定压缩比特率

    20. 去掉视频Logo

    ffmpeg -i input.mp4 -vf delogo=0:0:220:90:100:1 output.mp4 

    语法:-vf delogo=x:y:w:h[:t[:show]] x:y 离左上角的坐标 w:h logo的宽和高 t: 矩形边缘的厚度默认值4 show:若设置为1有一个绿色的矩形,默认值0。

    21. 采集usb摄像头视频

    ffmpeg -t 20 -f vfwcap -i 0 -r 8 -f mp4 cap1111.mp4

    语法:-t采集10秒,-f 采集设备为vfwcap类型设备,-i 第0个vfwcap采集设备(如果系统有多个vfw的视频采集设备,可以通过-i num来选择),-r每秒8帧,输出方式为文件,格式为mp4

    22. 录屏

    ffmpeg -f gdigrab -i desktop out.mpg

    23. 录屏指定区域

    ffmpeg -f gdigrab -framerate 5 -offset_x 10 -offset_y 20 -video_size 640x480 -i desktop out.mpg 

    24. 从视频中生成gif图片

    ffmpeg -i capx.mp4 -t 10 -s 320x240 -pix_fmt rgb24 jidu1.gif

    25. 录音

    先查音视频设备:

    ffmpeg -list_devices true -f dshow -i “”

    然后录音频:

    ffmpeg -f dshow -i audio="麦克风 (Realtek Audio)" -acodec libmp3lame e:window.mp3


    ffmpeg参数设定解说 

    -bitexact 使用标准比特率 
    -vcodec xvid 使用xvid压缩 
    -s 320x240 指定分辨率 
    -r 29.97 桢速率(可以改,确认非标准桢率会导致音画不同步,所以只能设定为15或者29.97) 
    画面部分,选其一 
    -b <比特率> 指定压缩比特率,似乎ffmpeg是自动VBR的,指定了就大概是平均比特率,比如768,1500这样的 
    就是原来默认项目中有的 
    -qscale <数值> 以<数值>质量为基础的VBR,取值0.01-255,约小质量越好 
    -qmin <数值> 设定最小质量,与-qmax(设定最大质量)共用,比如-qmin 10 -qmax 31 
    -sameq 使用和源同样的质量 
    声音部分 
    -acodec aac 设定声音编码 
    -ac <数值> 设定声道数,1就是单声道,2就是立体声,转换单声道的TVrip可以用1(节省一半容量),高品质 
    的DVDrip就可以用2 
    -ar <采样率> 设定声音采样率,PSP只认24000 
    -ab <比特率> 设定声音比特率,前面-ac设为立体声时要以一半比特率来设置,比如192kbps的就设成96,转换 
    君默认比特率都较小,要听到较高品质声音的话建议设到160kbps(80)以上 
    -vol <百分比> 设定音量,某些DVDrip的AC3轨音量极小,转换时可以用这个提高音量,比如200就是原来的2倍 
    这样,要得到一个高画质音质低容量的MP4的话,首先画面最好不要用固定比特率,而用VBR参数让程序自己去 
    判断,而音质参数可以在原来的基础上提升一点,听起来要舒服很多,也不会太大 看情况调整 
    -y(覆盖输出文件,即如果1.***文件已经存在的话,不经提示就覆盖掉了) 
    -i "1.avi"(输入文件是和ffmpeg在同一目录下的1.avi文件,可以自己加路径,改名字) 
    -title "Test"(在PSP中显示的影片的标题) 
    -f fmt (input/output) 强制输入或输出文件格式。通常,输入文件的格式是自动检测的,输出文件的格式是通过文件扩展名来进行猜测的,所有该选项大多数时候不需要。
  • 相关阅读:
    Django 各个 app 存放在同一文件夹下
    Django 的登录验证装饰器
    001语言基础
    004 系列:元组,列表和字符串
    003数值类型
    002程序流程控制
    WPF事件
    C++中extern关键字的作用
    C/C++中extern关键字详解
    运算符重载,是成员函数还是友元函数
  • 原文地址:https://www.cnblogs.com/tuyile006/p/12572656.html
Copyright © 2020-2023  润新知