美文网首页
2022-02-24 FFmpeg操作

2022-02-24 FFmpeg操作

作者: 颈椎以上瘫痪 | 来源:发表于2022-02-23 10:28 被阅读0次

    参数描述

    参数名称 参数内容 描述
    -i 1.mp4 指定此次操作的输入文件
    -re 控制读取 AVpacket 的速度,按照帧率速度读取文件 AVpacket。如果有多个流,以最慢的帧率为准。或者 以本地帧频读数据,主要用于模拟捕获设备
    -y 操作过程中询问类型选择yes
    out.avi 一般放在命令最后,作为此次操作的输出文件
    -ss 00:00:10 指定开始时间,单位是s
    -t 00:01:50 指定结束时间,单位是s
    -ss 10 指定开始时间,单位是s
    -t 80 指定持续时间,单位是s
    -acodec copy 指定音频编码,copy表示使用原音频编码
    -vcodec copy 指定视频编码,copy表示使用原视频编码
    ac 2 音频通道选择(1=单通道,2=立体声)
    -vframes 1 选择第几帧
    -stream_loop -1 循环次数,-1表示无限循环
    -formats 查看所有支持的容器格式
    -codecs 查看所有编解码器
    -filters 查看所有可用的filter
    -pix_fmts 查看所有支持的图片格式
    -sample_fmts 查看所有支持的像素格式

    查看支持处理的文件格式

    ffmpeg.exe -formats
    

    图像合并成视频

    .\ffmpeg.exe -y -framerate 25 -i image%d.png out.avi
    
    2022-02-24_102813.png

    查看视频信息

    ffmpeg.exe -i 1.mp4
    
    2022-06-10_144746.png

    音频格式转换

    flac转MP3

    ffmpeg -i input.flac -ab 320k -map_metadata 0 -id3v2_version 3 output.mp3
    

    从视频中截取某一时间段

    -ss 00:00:00=开始时间
    -t 00:01:50=结束时间
    -vcodec copy=视频编解码使用原格式
    -acodec copy=音频编码使用原音频编码
    以下2种方式等价,时间格式支持HH:mm:ss和秒值

    ffmpeg -i src.mp3 -ss 00:00:00 -t 00:01:50 -vcodec copy -acodec copy result.mp3
    ffmpeg -i src.mp3 -ss 0 -t 90 -vcodec copy -acodec copy result.mp3
    

    视频中截图

    -ss 截图的时间,单位秒
    -y 如果这个图片存在,是否覆盖,如果不加这个参数,遇到同名文件就会提示你是否覆盖
    -vframes 第几帧,因为输入的时间是秒单位,在这1秒内视频中有很多帧,这里输入你要的第几帧
    out.bmp 输出图像的路径

    ffmpeg.exe -ss 00:10:00 -i 1.mp4 -y  -vframes 1 out.bmp
    

    ![2022-06-10_145636.png](https://img.haomeiwen.com/i23281417/[图片上传中...(2022-06-29_133510.png-2699a3-1656480919446-0)]
    255accfbe22036b4.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

    2022-06-10_145646.png

    本地视频循环推流到RTMP服务器

    -stream_loop -1=循环推送,如果不加这个参数,视频结束后就停止了,加了过后视频结束后又重新开始
    rtmp://localhost:29991/hf_dav/test=RTMP服务器地址

    ffmpeg.exe -re -stream_loop -1 -i 1.mp4 -f flv rtmp://localhost:29991/hf_dav/test
    

    本地视频循环推流到RTSP服务器

    ffmpeg.exe -re -stream_loop -1 -i 1.mp4 -f rtsp rtsp://localhost:554/rtsp_test
    

    推声卡音频到RTMP服务器

    Windows

    "audio=virtual-audio-capturer"=通过名称指定声卡设备,加双引号是因为很多时候声卡设备名称中会包含空格,可以通过加双引号将这个参数标识数来。同理在其他参数中如果包含空格时也可以这样做,比如路径。
    -acodec aac=音频编码

    ffmpeg.exe -f dshow -i "audio=virtual-audio-capturer" -acodec aac -ac 2 -f flv rtmp://localhost:29991/hf_dav/ai
    

    银河麒麟V10

    执行上述命令时提示 Unknown input format: 'dshow'
    查看后发现在麒麟中FFmpeg没有dshow模块,但是有一个alsa模块,这个模块在Windows中是没有的。
    所以在麒麟中可以同理的进行推流
    -i hw:0=指定声卡设备,笔者也不知道在麒麟中怎么找声卡,网上有人说就用这个,试了一下好像是可以的

    ffmpeg -f alsa -i hw:0 -acodec aac -ac 2 -f flv rtmp://localhost:81/push/test
    

    枚举设备中的音视频设备

    如下图中列出了设备中的2个video和一个audio设备

    ffmpeg -list_devices true -f dshow -i dummy
    
    2022-06-29_133510.png

    提取音视频

    可以将视频文件中的音视频分离
    -an=不处理音频
    -vn=不处理视频

    //提取视频流
    ffmpeg -i in.mp4 -vcodec copy -an out.mp4
    //提取音频流
    ffmpeg -i in.mp4 -acodec copy -vn out.mp3
    

    合并音视频文件

    ffmpeg –i in.mp3 –i in.mp4 –vcodec copy –acodec copy out.mp4
    

    RTSP视频流录制

    将RTSP视频流保存到本地视频文件中,RTMP应该也同理吧

    ffmpeg –i rtsp://localhost:81/stream –vcodec copy out.mp4
    

    多个视频文件拼接

    创建一个in.txt文件
    里面添加需要合并的每个文件内容

    file 'in_1.mp4'
    file 'in_2.mp4'
    ...
    
    ffmpeg  -f concat -i in.txt  -c copy out.mp4
    

    相关文章

      网友评论

          本文标题:2022-02-24 FFmpeg操作

          本文链接:https://www.haomeiwen.com/subject/rurzlrtx.html