2015-08-27 73 views
2

爲CONCAT FFmpeg的文檔的ffmpeg串連列出以下方式
ffmpeg -f concat -i mylist.txt -c copy output動態塊

的mylist.txt文件包含文件中像
文件 '/路徑/到/文件1'
文件「/路徑/到/文件2'
文件‘/路徑/到/文件3’

我尋找是一個辦法做到這一點CONCAT在持久性的方式,其中的文件的數量可以保持在即時串流
增加,例如我將派遣的各10秒的視頻塊(MP4文件)到我的服務器,並希望Concat的/它們拼接輸出到RTMP流(用於即時串流)

如果CONCAT是不正確的方法要做到這一點,請提出替代方案。

真的很想知道人們如何使用上述概念(我希望它的工作原理)來從移動設備發送視頻塊的即時串流

回答

0

我嘗試連接具有以下命令幾個WebM文件和它的作品(以我的情況)

ffmpeg -i chunk.1.webm -i chunk.2.webm -i chunk.3.webm -i chunk.4.webm -filter_complex "[0:0] [1:0] [2:0] [3:0] concat=n=4:v=1:a=0 [v]" -map "[v]" filter.webm -y 

Using ffmpeg to combine small mp4 chunks?

0

FFmpeg的文檔具有不正是一個例子你問:https://trac.ffmpeg.org/wiki/Concatenate

這是他們的例子:

#!/bin/bash 

fn_concat_init() { 
    echo "fn_concat_init" 
    concat_pls=`mktemp -u -p . concat.XXXXXXXXXX.txt` 
    concat_pls="${concat_pls#./}" 
    echo "concat_pls=${concat_pls:?}" 
    mkfifo "${concat_pls:?}" 
    echo 
} 

fn_concat_feed() { 
    echo "fn_concat_feed ${1:?}" 
    { 
     >&2 echo "removing ${concat_pls:?}" 
     rm "${concat_pls:?}" 
     concat_pls= 
     >&2 fn_concat_init 
     echo 'ffconcat version 1.0' 
     echo "file '${1:?}'" 
     echo "file '${concat_pls:?}'" 
    } >"${concat_pls:?}" 
    echo 
} 

fn_concat_end() { 
    echo "fn_concat_end" 
    { 
     >&2 echo "removing ${concat_pls:?}" 
     rm "${concat_pls:?}" 
     # not writing header. 
    } >"${concat_pls:?}" 
    echo 
} 

fn_concat_init 

echo "launching ffmpeg ... all.mkv" 
timeout 60s ffmpeg -y -re -loglevel warning -i "${concat_pls:?}" -pix_fmt yuv422p all.mkv & 

ffplaypid=$! 

echo "generating some test data..." 
i=0; for c in red yellow green blue; do 
    ffmpeg -loglevel warning -y -f lavfi -i testsrc=s=720x576:r=12:d=4 -pix_fmt yuv422p -vf "drawbox=w=50:h=w:t=w:c=${c:?}" test$i.mkv 
    fn_concat_feed test$i.mkv 
    ((i++)); 
    echo 
done 
echo "done" 

fn_concat_end 

wait "${ffplaypid:?}" 

echo "done encoding all.mkv"