首页 文章

FFmpeg简单的1:1叠加和连接?

提问于
浏览
1

我在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

蒂姆,先谢谢了

1 回答

  • 1

    对于叠加层,您需要将图像缩放到原始源尺寸 .

    要连接具有相同编解码器的多个源文件,请使用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"
    

    Update :完整示例:

    You cannot filter and copy the video stream at the same time!

    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://...
    

相关问题