zoukankan      html  css  js  c++  java
  • 小视频编辑常用命令

    概述

    在短视频时代,虽然可以随手拍了就发,但是要想稍微制作点内容,视频的编辑是少不了的。 熟悉几条简单的命令,对于一些简单的需求不至于束手无策,也不用为了个简单的功能去安装个视频编辑软件。

    更大的好处是可以用来批量处理视频。

    常用视频编辑命令

    简单整理目前自己常用到的几个命令,以后多了再添加。 这里使用的是视频编辑的神器:ffmpeg 不知道的可以去官网看看,支持各种平台。

    视频截取

    按照时间截取视频中的一段,这个功能一般用来去除视频中的一些多余的部分。

    $ ffmpeg -i test.mp4 -vcodec copy -acodec copy -ss 00:00:05 -t 00:00:10 new.mp4
    
    • 原始视频 test.mp4
    • 新生成的视频 new.mp4
    • 从 test.mp4 视频的第 5 秒截取到第 10 秒,所以 new.mp4 一共是 5 秒的视频

    视频合并

    一般用来给视频加个封面和结尾的部分。 注意,mp4 视频不要直接合并,容易失败。

    # 先把mp4格式转换成ts格式,直接合并mp4视频有问题
    $ ffmpeg -i 1.mp4 -vcodec copy -acodec copy -vbsf h264_mp4toannexb 1.ts
    $ ffmpeg -i 2.mp4 -vcodec copy -acodec copy -vbsf h264_mp4toannexb 2.ts
    $ ffmpeg -i 3.mp4 -vcodec copy -acodec copy -vbsf h264_mp4toannexb 3.ts
    # 合并3个ts文件成1个mp4文件
    $ ffmpeg -i "concat:1.ts|2.ts|3.ts" -acodec copy -vcodec copy -absf aac_adtstoasc output.mp4
    # 删除中途产生的ts文件
    $ rm -rf 1.ts 2.ts 3.ts
    

    剥离视频中的音频

    删除音频的原因是要更换背景音乐。

    $ ffmpeg -i test.mp4 -map 0:0 -vcodec copy without-audio.mp4
    

    视频加背景音乐

    剥离音频之后可以更换自己喜欢的背景音乐

    $ ffmpeg -i BGM.mp3 -i test.mp4 -y with-audio.mp4
    

    这里需要注意,背景音乐的时长要和视频保持一致。 如果音频时长比视频长,那么视频播放完后停在最后一帧,等待音频播放完之后才结束,也就是合并之后的 mp4 时长是音频的时长; 如果音频时长比视频短,那么视频没播完就已经没有背景音乐了。

    音频比视频长的话,截取音频:下面的示例截取 0 秒 ~ 50 秒的音频

    $ ffmpeg -i test.mp3 -ss 00:00:00.0 -t 00:00:50 -acodec copy new.mp3
    

    音频比视频短的话,可以在视频中重复播放此音频,直至视频结束。 下面的例子中,mp4 比 mp3 的时长要长

    ffmpeg -stream_loop -1 -i test.mp3 -i test.mp4 -shortest -y repeat-audio.mp4
    

    视频加水印(文字)

    文字加在左上角:

    $ ffmpeg -i out.mp4 -vf "drawtext=fontfile=/path/to/Microsoft-Yahei-Mono.ttf: text='我的水印':x=10:y=10:fontsize=24:fontcolor=white:shadowy=2" output2.mp4
    

    注意,如果要正常显示中文,需要指定一个能显示中文的字体,fontfile 后面是 字体的绝对路径

    文字加在右下角:

    $ ffmpeg -i out.mp4 -vf "drawtext=fontfile=/usr/share/fonts/truetype/Microsoft-Yahei-Mono.ttf: text='我的水印':x=main_w-100:y=main_h-50:fontsize=24:fontcolor=white:shadowy=2" output2.mp4
    

    其中,

    • main_w 视频的宽度
    • main_h 视频的高度

    视频加水印(图片)

    图片水印加在右下角:

    $ ffmpeg -i out.mp4 -i logo.png -filter_complex 'overlay=main_w-overlay_w-10:main_h-overlay_h-10' output.mp4
    

    其中,

    • main_w 视频的宽度
    • main_h 视频的高度
    • overlay_w 图片水印的宽度
    • overlay_h 图片水印的高度

    图片水印加在其他位置可以通过调整 main_w/main_h 以及 overlay_w/overlay_h 来实现

    视频分辨率调整

    直接调整:

    $ ffmpeg -i out.mp4 -strict -2 -s 640x480 output.mp4
    

    640x480 是宽 x 高,这里如果变换后的比例不是视频的原始比例,会导致视频变形

    按比例调整:

    $ ffmpeg -i out.mp4 -strict -2 -vf scale=800:-1 output.mp4
    

    这样调整之后,宽度 800,高度按比例调整,视频不会变形。 如果想调整视频高度,可以设置 scale=-1:600

  • 相关阅读:
    动态横向(水平)合并Repeater数据行DataItem的列
    动态绑数据(Repeater控件HeaderTemplate和ItemTemplate)
    动态横向(水平)合并GridView数据行DataRow的列
    动态绑数据(GridView控件Header和ItemTemplate)
    用具体列名替代星号
    如何实现数据行转换列显示
    用LINQ获取XML节点数据
    从字符串中获取XML节点数据
    字符串创建XML文档
    根据Attribute值条件对XML文档进行修改
  • 原文地址:https://www.cnblogs.com/wang_yb/p/14615320.html
Copyright © 2011-2022 走看看