FFmpeg 简单 1 :1 overlay and concatenate?

标签 ffmpeg ubuntu-14.04

我在 Ubuntu 14.04(Jon Severinsson 的 PPA)上使用 ffmpeg,并且正在播放文件夹中的视频文件 - 一个接一个。

第一个问题我还没有弄清楚——如何添加一个简单的叠加层——带有 720p 叠加层的 720p 素材(具有部分透明度)?所以不需要调整大小或对齐 - 只需 1:1 覆盖。我已经用 -vf 和 -filter_complex 尝试了很多,但没有出现。

第二个问题 - 使用连接,是否可以在文件之间无缝切换?最好不创建新文件 - 所以,即时?我需要减少文件切换之间的间隙或完全消除它们。

这是我现在的 bash:

#!/usr/bin/env bash

while :; do
    files=(*)
    ffmpeg -re -i "${files[$RANDOM % ${#files[@]}]}" -acodec copy -vcodec copy -f flv ServerAddress
done

所以我在/vod 中拥有所有内容 - 视频文件以及 overlay.png

提前感谢一堆,
蒂姆

最佳答案

对于覆盖,您需要将图像缩放到原始源尺寸。

要连接具有相同编解码器的多个源文件,请使用 concat demuxer .

例如:

制作 playlist.txt格式如下:

file '/path/to/file_1'
file '/path/to/file_2'
file '/path/to/file_3'
[..]

接着:
ffmpeg -f concat -i playlist.txt -i overlay.png -filter_complex "[1:v] scale=1280:720 [ovr];[0:v][ovr] overlay=0:0" ...

如果视频和图像大小相同,您可以使用:
ffmpeg -f concat -i playlist.txt -i overlay.png -filter_complex "[0:v] overlay"

更新 :
完整示例:

您不能同时过滤和复制视频流!
ffmpeg -re -f concat -i playlist.txt -i overlay.png -filter_complex "[0:v] overlay" -c:v h264 -c:a libfdk_aac -ar 44100 -f flv rtmp://...

如果您的音频流有效并且具有受支持的音频速率之一(44100、22050、11025),您可以执行以下操作:
ffmpeg -re -f concat -i playlist.txt -i overlay.png -filter_complex "[0:v] overlay" -c:v h264 -c:a copy -f flv rtmp://...

关于FFmpeg 简单 1 :1 overlay and concatenate?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29083759/

相关文章:

c++ - 以非 root 用户身份运行 ntpdate

ubuntu - 无法在模拟器中启动 Intel XDK 的调试器

elasticsearch - Logstash 没有在 Elasticsearch 上创建索引

node.js - FFmpeg Node.js 实时网络流媒体

windows - 如何在 Windows 批处理文件中为图像序列构建 printf 样式的字符串?

android - Android 上的 FFmpeg

video - ffmpeg - 使用 -debug mb_type 命令检索视频宏 block 信息

android - 亚行 - [INSTALL_PARSE_FAILED_UNEXPECTED_EXCEPTION]

apache - 授权失败(没有经过身份验证的用户) - .htaccess 错误,Apache

iphone - 为 iPhone SDK 编译 ffmpeg(未找到符号 - 链接器)