• ffmpeg 视频操作


    //删除音频
    ffmpeg -i video.MP4 -vcodec copy -an output_file.mp4

    ffmpeg -i output_file.mp4 -i video_01.mp3 -vcodec copy -acodec copy output.mp4

    合并音视频
    ffmpeg.exe -i 1.mp4 -i 1.mp3 -vcodec copy -acodec copy 1.mp4

    分离视频出来:
    ffmpeg -i test.mp4 -vcodec copy -an 视频流.avi

    分离音频出来:
    ffmpeg -i video.MP4 -acodec copy -vn video_yin.mp3

    在分离音视频的时候,不需要这么麻烦,只要执行简单的语句就行:
    分离视频:ffmpeg -i 1.mp4 1.avi
    分离音频:ffmpeg -i 1.mp4 1.mp3

    分离的音频可以做单独的降噪处理变声等待操作

    ffmpeg.exe -ioutput_file.mp4 -i video_yin.aac -vcodec copy -acodec copy 1.mp4

    按时间截取

    ffmpeg  -i video1.mp4 -vcodec copy -acodec copy -ss 00:53:00 -to 00:54:15 cutout1.mp4 -y

    按帧数截取

    ffmpeg -i input.mp4 -vf "select=between(n\,20\,200)" -y -acodec copy output.mp4

    https://blog.csdn.net/zhoubotong2012/article/details/79338093/

    1.用命令行枚举采集设备和采集数据

    打开Cmd命令行控制台,进入FFmpeg的Bin目录,输入如下命令:

    ffmpeg -list_devices true -f dshow -i dummy

    在上面的命令行窗口中列出了两个设备,一个是视频采集设备,另外是一个音频采集设备。另外,我们发现:音频设备的名称有乱码,因为其中有中文名称,后面在讲到用API采集数据的时候会提到解决这个问题的方法。

    接着我们输入另外一个命令行:

    ffmpeg -list_options true -f dshow -i video="USB 2861 Device"

    ffmpeg -list_options true -f dshow -i video="@device_pnp_\?usb#vid_5986&pid_212b&mi_00#6&1c3f9d97&0&0000#{65e8773d-8f56-11d0-a3b9-00a0c9223196}global"

    楹﹀厠椋?(HIK 2K Camera-Audio)

    ffmpeg -list_options true -f dshow -i video="HIK 2K Camera"

    ffmpeg -list_options true -f dshow -i audio="@device_cm_{33D9A762-90C8-11D0-BD43-00A0C911CE86}wave_{156409C2-9919-49C8-BF06-04AFC2BE01D4}"

    ffmpeg -list_options true -f dshow -i audio="麦克风 (HIK 2K Camera-Audio)"

    这个命令行的作用是获取指定视频采集设备支持的分辨率、帧率和像素格式等属性,返回的是一个列表,结果如下:

    这里我们看到采集设备支持的最大分辨率是720x576,输出像素格式是yuyv422,支持的帧率为29.97和25FPS。

    下面我们执行另外一条命令,将摄像头的图像和麦克风的音频录制保存成一个文件。命令如下:

    ffmpeg -f dshow -i video="USB 2861 Device" -f dshow -i audio="线路 (3- USB Audio Device)" -vcodec libx264 -acodec aac -strict -2 mycamera.mkv

    这里有些读者可能会问:采集设备不是支持多个分辨率吗?怎么设置采集时用哪一种分辨率输出?答案是用“-s”参数设置,若在上面的命令行加上“-s 720x576”,则FFmpeg就会以720x576的分辨率进行采集,如果不设置,则以默认的分辨率输出。

    录屏录音

    ffmpeg -f dshow -i video="HIK 2K Camera" -f dshow -i audio="@device_cm_{33D9A762-90C8-11D0-BD43-00A0C911CE86}wave_{156409C2-9919-49C8-BF06-04AFC2BE01D4}" -vcodec libx264 -acodec aac -strict -2 mycamera.mkv

    ffmpeg -f dshow -i video="HIK 2K Camera" -f dshow -i audio="麦克风 (Realtek(R) Audio)" -vcodec libx264 -acodec aac -strict -2 mycamera.mkv

    https://blog.csdn.net/tanhuifang520/article/details/79623978

    (1)只录制音频

    ffmpeg -f dshow -i audio="麦克风 (HIK 2K Camera-Audio)" -acodec libmp3lame window.mp3

    ffmpeg -f dshow -i audio="Stereo Mix (Realtek High Defini" typing.wav

    (2)只录制视频

    ffmpeg -f dshow -i video="Integrated Camera" -r 5 -vcodec libx264 -preset:v ultrafast -tune:v zerolatency MyDesktop.mp4

    (3)录制音频和视频

    ffmpeg -f dshow -i video="screen-capture-recorder" -f dshow -i audio="virtual-audio-capturer" -pix_fmt yuv420p -vcodec libx264 -acodec libvo_aacenc -s 1280x720 -r 25 -q 10 -ar 44100 -ac 2 -tune zerolatency -preset ultrafast -f mpegts - | ffmpeg -f mpegts -i - -c copy -bsf:a aac_adtstoasc -f flv temp.flv

    https://blog.csdn.net/c_base_jin/article/details/106773589

    (4)录制音频和屏幕

    gdigrab是基于GDI的抓屏设备,可以用于抓取屏幕的特定区域。在这里记录一下gdigrab的用法。

    gdigrab通过设定不同的输入URL,支持两种方式的屏幕抓取:

    (1)“desktop”:抓取整张桌面。或者抓取桌面中的一个特定的区域。
    (2)“title={窗口名称}”:抓取屏幕中特定的一个窗口。

    //gdigrab设备 采集整个桌面 可以用

    ffmpeg -f gdigrab -framerate 30 -i desktop output.mkv

    ffmpeg -f gdigrab -i desktop -f dshow -i audio="麦克风 (HIK 2K Camera-Audio)":audio="麦克风 (Realtek(R) Audio)" -vcodec libx264 -acodec libmp3lame -s 1920x1080 -r 15 temp.mp4

    4.1 指定窗体

    ffmpeg -f gdigrab -i title="Skype" -f dshow -i audio="麦克风 (HIK 2K Camera-Audio)":audio="麦克风 (Realtek(R) Audio)" -vcodec libx264 -acodec libmp3lame -r 15 temp.mp4

    https://www.cnblogs.com/bleachli/p/4494689.html

    //Dshow设备  screen capture recorder  需要下载这个exe

    https://sourceforge.net/projects/screencapturer/files/

    ffmpeg -f dshow -i video="screen-capture-recorder" output.mkv

    ffmpeg -f dshow -i video="HIK 2K Camera" -f dshow -i audio="麦克风 (Realtek(R) Audio)" -vcodec libx264 -acodec aac -strict -2 mycamera.mkv

    ffmpeg -f dshow -i video="screen-capture-recorder" -f dshow -i audio="virtual-audio-capturer" -vcodec libx264 -acodec libmp3lame -s 1920x1080 -r 15 temp.mkv

    ffmpeg -f dshow -i video="screen-capture-recorder" -f dshow -i audio="virtual-audio-capturer" -vcodec libx264 -acodec libmp3lame -r 15 temp.mkv

    ffmpeg -f gdigrab -i desktop -f dshow -i audio="virtual-audio-capturer" -vcodec libx264 -acodec libmp3lame -s 1920x1080 -r 15 temp.mp4

    ffmpeg -f gdigrab -i desktop -f dshow -i audio="virtual-audio-capturer" -vcodec libvpx-vp9 -acodec libmp3lame -s 1280x720 -r 15 temp.mkv

    原文链接:https://blog.csdn.net/juedno/article/details/80731733

    区域录像 ( 起点:100,60 600 480 )

    ffmpeg -f gdigrab -i desktop -f dshow -i audio="virtual-audio-capturer" -vcodec libx264 -acodec libmp3lame -video_size 600x480 -offset_x 100 -offset_y 60 -r 15 e:/temp/temp.mkv

    4.2 流转发

    ffmpeg -re -i input.flv -c copy -f flv rtmp://127.0.0.1/myapp

    ffplay rtmp://127.0.0.1:1935/myapp

    ffmpeg -re -i chunwan.h264 -vcodec copy -f h264 udp://233.233.233.223:6666

    ffmpeg -f gdigrab -i desktop -f dshow -i audio="麦克风 (HIK 2K Camera-Audio)":audio="麦克风 (Realtek(R) Audio)" -vcodec libx264 -acodec libmp3lame -s 1920x1080 -r 15 temp.mp4

    rtmp://127.0.0.1/myapp/test

    ffmpeg -f gdigrab -i desktop -f dshow -i audio="麦克风 (HIK 2K Camera-Audio)":audio="麦克风 (Realtek(R) Audio)" -vcodec libx264 -preset:v ultrafast -pix_fmt yuv420p -acodec aac -f flv rtmp://127.0.0.1/myapp

    ffmpeg -f gdigrab -i desktop -f dshow -i audio="麦克风 (HIK 2K Camera-Audio)" -vcodec libx264 -preset:v ultrafast -pix_fmt yuv420p -acodec aac -f rtp rtp://rtp://127.0.0.1:8000>test.sdp

    ffmpeg -re -i chunwan.h264 -vcodec copy -f rtp rtp://rtp://127.0.0.1:8000>test.sdp

    ffmpeg.exe

    -y

    -f dshow

    -i audio="麦克风 (HIK 2K Camera-Audio)":audio="麦克风 (Realtek(R) Audio)"

    -f gdigrab

    -draw_mouse 0

    -i title="Google Chrome"

    -framerate 30

    -vcodec libx264

    -crf 0

    -preset ultrafast

    -acodec pcm_s16le

    output.flv

    --黑屏

    ffmpeg.exe -y -f dshow -i audio="麦克风 (HIK 2K Camera-Audio)":audio="麦克风 (Realtek(R) Audio)" -f gdigrab -draw_mouse 0 -i title="Skype" -framerate 30 -vcodec libx264 -crf 0 -preset ultrafast -acodec pcm_s16le output.flv

  • 相关阅读:
    Lock
    synchronized
    线程可见性与原子性
    线程安全问题
    MySQL索引背后的数据结构和原理
    求一颗二叉树中两个节点的最低公共父节点
    Session not active, could not store state 的解决方法
    https nginx 设置
    第三方支付系统
    facebook页面种简单测试js调用flash开放的js接口的方法
  • 原文地址:https://www.cnblogs.com/mrguoguo/p/14812496.html
Copyright © 2020-2023  润新知