• FFmpeg Basic学习笔记(3)


    视频叠加——画中画效果 overlay video filter

    视频叠加比较常见的应用场景是台标的叠加,在画面左上角、右上角、左下角或右下角叠加台标。
    ffmpeg提供的overlay filter支持视频叠加。基本语法如下:

    overlay[=x:y[[:rgb={0,1}]]]

    其中x、y是嵌入图像的位置,默认为0;rgb表示输入源的格式,0表示不修改,1表示设置输入源格式为RGB。可使用下面四个参数:

    • main_w或W、main_h或H,主输入(被嵌入的视频)的宽度和高度
    • overlay_w或w、 overlay_h或h,叠加输入(嵌入视频)的宽高

    下面的命令行可以实现视频叠加:

    ffmpeg -i input1 -i input2 -filter_complex overlay=x:y output

    台标叠加测试

    在左上角叠加可以用下面命令行:

    ffmpeg -i pair.mp4 -i logo.png -filter_complex overlay pair1.mp4

    叠加效果如下图:
    2-1.png

    右下角叠加可以使用下面命令行:

    ffmpeg -i pair.mp4 -i logo.png -filter_complex overlay=W-w:H-h pair3.mp4

    叠加效果如下:

    2-2.png

    画面上的字体显示 drawtext video filter

    drawtext filter的语法如下:

    drawtext=fontfile=font_f:text=text1[:p3=v3[:p4=v4[...]]]

    p3, p4 ... means parameter #3, parameter #4, etc.

    由于具体参数比较多,有兴趣的可以阅读FFmpeg Basics的Ch10或者参考ffmpeg的在线文档drawtext filter
    下面是具体的例子:

    ffplay -f lavfi -i color=c=white -vf drawtext=fontfile=arial.ttf:text=Welcome

    这会在白色窗口的左上角显示Welcome字样。效果如下:
    2-3.jpg

    显示位置可以通过x、y设置,命令如下:

    ffplay -f lavfi -i color=c=white -vf
    drawtext="fontfile=arial.ttf:text='Good day':x=(w-tw)/2:y=(h-th)/2"

    字体大小和颜色可以通过fontcolor、fontsize设置,命令如下:

    ffplay -f lavfi -i color=c=white -vf drawtext=
    "fontfile=arial.ttf:text='Happy Holidays':x=(w-tw)/2:y=(h-th)/2:
    fontcolor=green:fontsize=30"

    滚动字幕的实现

    drawtext filter支持t,表示当前运行的描述。配合起来可以实现滚动字幕的效果。
    可参考下面命令行:

    ffmpeg -f lavfi -i color=c=#abcdef -vf drawtext=
    "fontfile=arial.ttf:text='Dynamic RTL text':x=w-t*50:
    fontcolor=darkorange:fontsize=30" output

    水平滚动,每秒滚动50 pixel。

    不同格式之间的转换——转码/转封装

    媒体文件格式是指用于存储特定音频或视频的标准。容器格式是指可以存储多个音频或视频流的标准。ffmpeg支持的文件格式可以通过-formats查看。

    通常容器支持多种音视频格式的封装,比如AVI、TS、MKV、MP4都是容器,可以支持H.264、MPEG-2、AAC等音视频格式。在实际应用中如果仅仅想更换封装格式,可以考虑使用-c copy-c:a copy-c:v copy

    下图说明了实际转码过程中涉及到的封装格式(容器格式)、编解码格式(比特流格式)
    2-4.jpg

    转码过程中每个容器或codec都有私有的参数,可以使用-h encoder=encoder_name查看。具体参考FFmpeg Basic学习笔记1

    ffmpeg支持的时间格式

    多媒体处理涉及修改输入源的总长度、延时指定时间或者截取特定时间等操作。ffmpeg中支持的时间格式有两种:

    • [-]HH:MM:SS[.m...]
    • [-]S+[.m...]

    按照时间设置输出流长度

    使用-t命令参数即可。下面语句从输入源中截取三分钟输出:

    ffmpeg -i music.mp3 -t 180 music_3_minutes.mp3

    使用帧数限定输出长度

    • 音频使用 -aframes number-frames:a number
    • 视频使用 -vframes number-frames:v number

    下面命令行指定输出15000帧视频,大约10分钟视频长度(按25fps计算)

    ffmpeg -i video.avi -vframes 15000 video_10_minutes.avi

    指定延时时间

    可使用-ss命令项(seek from start)。调用命令如下:

    ffmpeg -i input.avi -ss 10 output.mp4

    表示从第10秒开始输出数据。

    -ss-t配合使用可以截取任意时长的画面,比如下面命令截取输入的第五分钟(240秒~300秒)的视频。

    ffmpeg -i video.mpg -ss 240 -t 60 clip_5th_minute.mpg

    限制处理时间

    使用-timelimit命令可以限制ffmpeg处理的总时间。命令如下:

    ffmpeg -i input.mpg -timelimit 600 output.mkv

    不管ffmpeg有没有处理完,600s之后程序退出。

    播放速度改变的filter(注意修改的是时间戳)

    视频可以使用setpts filter;音频可以使用atempo filter。

    Metadata和Subtitle 元数据和字幕流

    Metadata通常用于记录一些标签信息,比如发布者、作者、发布日期、专题名等。字幕流在配音电影中比较常见,通常以独立的字幕文件存在,需要的时候可以加载进来播放。

    MetaData

    MetaData在MP3文件中比较常见,在mp3播放时可以看到比较多的类似信息,使用下面命令可以查看metadata:

    ffplay -i "Kalimba.mp3"

    创建metadata

    可以使用-metadata key=value的形式创建metadata,比如下面命令行:

    ffmpeg -i input -metadata artist=FFmpeg -metadata title="Test 1" output

    删除metadata

    使用-map_metadata -1可以删除metadata

    subtitle

    subtitle有两种,一种是外置的,可以独立编辑发行;一种是内嵌的,嵌入到视频文件中。

    subtitles video filter内嵌字幕流

    语法如下:

    subtitles=filename[:original_size]

    下面命令行可以实现字幕嵌入:

    ffmpeg -i video.avi -vf subtitles=titles.srt video.mp4

    附加说明

    本部分内容主要涉及《Ffmpeg Basic》的第8章到第14章(包含第14章),主要是关于视频叠加、字符叠加、subtitle、时间操作、多媒体文件的容器格式和文件格式。

    一部分内容没有做详细介绍,有些参数建议参考FFmpeg的官网

  • 相关阅读:
    VirtualBox的四种网络连接方式详解
    need to be root
    Unreachable catch block for IOException. This exception is never thrown from the try statement body
    git fetch 拉取而不合并
    IOS开发的哪些异常之异常断点
    duplicate报ORA-01017权限问题
    Woody的Python学习笔记4
    微软100题第51题:和为n连续正数序列
    C语言scanf函数详解
    火星人乘坐核动力飞船回故乡
  • 原文地址:https://www.cnblogs.com/tocy/p/ffmpeg-basic-learning-3.html
Copyright © 2020-2023  润新知