ffmpeg:合并/合并多个mp4视频不工作,输出仅包含第一个视频

ffmpeg:合并/合并多个mp4视频不工作,输出仅包含第一个视频,ffmpeg,Ffmpeg,下面是我用来组合多个视频的命令: ffmpeg -i 75_540_38HQ2.mp4 -i 76_70_20.mp4 -i 76_173_80.mp4 -i 81_186_35.mp4 -vcodec copy -acodec copy Mux1.mp4 下面是ffmpeg命令的输出。在我看来,它看起来不错,显示了多个源输入和单个输出 FFmpeg version SVN-r26402, Copyright (c) 2000-2011 the FFmpeg developers built

下面是我用来组合多个视频的命令:

ffmpeg -i 75_540_38HQ2.mp4 -i 76_70_20.mp4 -i 76_173_80.mp4 -i 81_186_35.mp4 -vcodec copy -acodec copy Mux1.mp4 下面是
ffmpeg
命令的输出。在我看来,它看起来不错,显示了多个源输入和单个输出

FFmpeg version SVN-r26402, Copyright (c) 2000-2011 the FFmpeg developers built on Mar 21 2011 18:05:32 with gcc 4.4.5 configuration: --enable-gpl --enable-version3 --enable-nonfree --enable-postproc --enable-libfaac --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxvid --enable-x11grab libavutil 50.36. 0 / 50.36. 0 libavcore 0.16. 1 / 0.16. 1 libavcodec 52.108. 0 / 52.108. 0 libavformat 52.93. 0 / 52.93. 0 libavdevice 52. 2. 3 / 52. 2. 3 libavfilter 1.74. 0 / 1.74. 0 libswscale 0.12. 0 / 0.12. 0 libpostproc 51. 2. 0 / 51. 2. 0 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '75_540_38HQ2.mp4': Metadata: major_brand : isom minor_version : 512 compatible_brands: isomiso2avc1mp41 creation_time : 1970-01-01 00:00:00 encoder : Lavf52.93.0 Duration: 00:00:29.99, start: 0.000000, bitrate: 11517 kb/s Stream #0.0(eng): Video: h264, yuv420p, 1280x960 [PAR 1:1 DAR 4:3], 11575 kb/s, 29.94 fps, 29.97 tbr, 30k tbn, 59.94 tbc Metadata: creation_time : 1970-01-01 00:00:00 Stream #0.1(eng): Audio: aac, 48000 Hz, stereo, s16, 127 kb/s Metadata: creation_time : 1970-01-01 00:00:00 Input #1, mov,mp4,m4a,3gp,3g2,mj2, from '76_70_20.mp4': Metadata: major_brand : isom minor_version : 512 compatible_brands: isomiso2avc1mp41 creation_time : 1970-01-01 00:00:00 encoder : Lavf52.93.0 Duration: 00:00:19.98, start: 0.000000, bitrate: 10901 kb/s Stream #1.0(eng): Video: h264, yuv420p, 1280x960 [PAR 1:1 DAR 4:3], 10804 kb/s, 29.97 fps, 29.97 tbr, 30k tbn, 59.94 tbc Metadata: creation_time : 1970-01-01 00:00:00 Stream #1.1(eng): Audio: aac, 48000 Hz, stereo, s16, 128 kb/s Metadata: creation_time : 1970-01-01 00:00:00 Input #2, mov,mp4,m4a,3gp,3g2,mj2, from '76_173_80.mp4': Metadata: major_brand : isom minor_version : 512 compatible_brands: isomiso2avc1mp41 creation_time : 1970-01-01 00:00:00 encoder : Lavf52.93.0 Duration: 00:03:09.99, start: 0.000000, bitrate: 10393 kb/s Stream #2.0(eng): Video: h264, yuv420p, 1280x960 [PAR 1:1 DAR 4:3], 10321 kb/s, 29.96 fps, 29.97 tbr, 30k tbn, 59.94 tbc Metadata: creation_time : 1970-01-01 00:00:00 Stream #2.1(eng): Audio: aac, 48000 Hz, stereo, s16, 128 kb/s Metadata: creation_time : 1970-01-01 00:00:00 Seems stream 0 codec frame rate differs from container frame rate: 119.88 (120000/1001) -> 30000.00 (30000/1) Input #3, mov,mp4,m4a,3gp,3g2,mj2, from '81_186_35.mp4': Metadata: major_brand : isom minor_version : 512 compatible_brands: isomiso2avc1mp41 creation_time : 1970-01-01 00:00:00 encoder : Lavf52.93.0 Duration: 00:00:35.00, start: 0.000000, bitrate: 12700 kb/s Stream #3.0(eng): Video: h264, yuv420p, 1280x720 [PAR 1:1 DAR 16:9], 12620 kb/s, 59.91 fps, 30k tbr, 60k tbn, 119.88 tbc Metadata: creation_time : 1970-01-01 00:00:00 Stream #3.1(eng): Audio: aac, 48000 Hz, stereo, s16, 128 kb/s Metadata: creation_time : 1970-01-01 00:00:00 Output #0, mp4, to 'Mux1.mp4': Metadata: major_brand : isom minor_version : 512 compatible_brands: isomiso2avc1mp41 creation_time : 1970-01-01 00:00:00 encoder : Lavf52.93.0 Stream #0.0(eng): Video: libx264, yuv420p, 1280x960 [PAR 1:1 DAR 4:3], q=2-31, 11575 kb/s, 30k tbn, 29.97 tbc Metadata: creation_time : 1970-01-01 00:00:00 Stream #0.1(eng): Audio: libfaac, 48000 Hz, stereo, 128 kb/s Metadata: creation_time : 1970-01-01 00:00:00 Stream mapping: Stream #0.0 -> #0.0 Stream #2.1 -> #0.1 Press [q] to stop encoding frame= 883 fps=632 q=-1.0 Lsize= 44730kB time=29.40 bitrate=12465.1kbits/s video:41678kB audio:2969kB global headers:0kB muxing overhead 0.184548% FFmpeg版本SVN-r26402,版权所有(c)2000-2011 FFmpeg开发者 根据gcc 4.4.5于2011年3月21日18:05:32建成 配置:---启用gpl--enable-version3--enable-nonfree--enable-postproc--enable-libfaac--enable-libmp3lame--enable-libopencore-amrnb--enable-liborea--enable-libvorbis--enable-libvpx--enable-libx264--enable-libxvid--enable-x11grab libavutil 50.36。0 / 50.36. 0 libavcore 0.16。1 / 0.16. 1. libavcodec52.108。0 / 52.108. 0 libav52.93格式。0 / 52.93. 0 libav52设备。2.3 / 52. 2.3. libavfilter 1.74。0 / 1.74. 0 libswscale 0.12。0 / 0.12. 0 Libroc 51。2.0 / 51. 2.0 输入#0,mov,mp4,m4a,3gp,3g2,mj2,来自'75_540_38HQ2.mp4': 元数据: 主要品牌:isom 次要版本:512 兼容品牌:isomiso2avc1mp41 创建时间:1970-01-01 00:00:00 编码器:Lavf52.93.0 持续时间:00:00:29.99,开始时间:0.000000,比特率:11517 kb/s 流#0.0(英文):视频:h264,yuv420p,1280x960[PAR 1:1 DAR 4:3],11575 kb/s,29.94 fps,29.97 tbr,30k tbn,59.94 tbc 元数据: 创建时间:1970-01-01 00:00:00 流#0.1(英文):音频:aac,48000 Hz,立体声,S16127 kb/s 元数据: 创建时间:1970-01-01 00:00:00 输入#1,mov,mp4,m4a,3gp,3g2,mj2,来自'76_70_20.mp4': 元数据: 主要品牌:isom 次要版本:512 兼容品牌:isomiso2avc1mp41 创建时间:1970-01-01 00:00:00 编码器:Lavf52.93.0 持续时间:00:00:19.98,开始时间:0.000000,比特率:10901 kb/s 流#1.0(英文):视频:h264,yuv420p,1280x960[PAR 1:1 DAR 4:3],10804 kb/s,29.97 fps,29.97 tbr,30k tbn,59.94 tbc 元数据: 创建时间:1970-01-01 00:00:00 流#1.1(英文):音频:aac,48000 Hz,立体声,s16,128 kb/s 元数据: 创建时间:1970-01-01 00:00:00 输入#2,mov,mp4,m4a,3gp,3g2,mj2,来自'76_173_80.mp4': 元数据: 主要品牌:isom 次要版本:512 兼容品牌:isomiso2avc1mp41 创建时间:1970-01-01 00:00:00 编码器:Lavf52.93.0 持续时间:00:03:09.99,开始时间:0.000000,比特率:10393 kb/s 流#2.0(英文):视频:h264,yuv420p,1280x960[标准杆1:1 DAR 4:3],10321 kb/s,29.96 fps,29.97 tbr,30k tbn,59.94 tbc 元数据: 创建时间:1970-01-01 00:00:00 流#2.1(英文):音频:aac,48000 Hz,立体声,s16,128 kb/s 元数据: 创建时间:1970-01-01 00:00:00 似乎流0编解码器帧速率与容器帧速率不同:119.88(120000/1001)->30000.00(30000/1) 输入#3,mov,mp4,m4a,3gp,3g2,mj2,来自'81_186_35.mp4': 元数据: 主要品牌:isom 次要版本:512 兼容品牌:isomiso2avc1mp41 创建时间:1970-01-01 00:00:00 编码器:Lavf52.93.0 持续时间:00:00:35.00,开始时间:0.000000,比特率:12700KB/s 流#3.0(英文):视频:h264,yuv420p,1280x720[PAR 1:1 DAR 16:9],12620 kb/s,59.91 fps,30k tbr,60k tbn,119.88 tbc 元数据: 创建时间:1970-01-01 00:00:00 流#3.1(英文):音频:aac,48000 Hz,立体声,s16,128 kb/s 元数据: 创建时间:1970-01-01 00:00:00 输出#0,mp4,到'Mux1.mp4': 元数据: 主要品牌:isom 次要版本:512 兼容品牌:isomiso2avc1mp41 创建时间:1970-01-01 00:00:00 编码器:Lavf52.93.0 流#0.0(英文):视频:libx264,yuv420p,1280x960[PAR 1:1 DAR 4:3],q=2-3111575 kb/s,30k tbn,29.97 tbc 元数据: 创建时间:1970-01-01 00:00:00 流#0.1(英文):音频:libfaac,48000赫兹,立体声,128 kb/s 元数据: 创建时间:1970-01-01 00:00:00 流映射: 流#0.0->#0.0 数据流#2.1->0.1 按[q]停止编码 帧=883 fps=632 q=-1.0 Lsize=44730kB时间=29.40比特率=12465.1kbits/s 视频:41678kB音频:2969kB全局标题:0kB多路复用开销0.184548% 我在做什么愚蠢的事吗

源视频来自摄像机,是用
ffmpeg-i bigfile.mp4-ss 20-t 10-vcodec副本等拍摄的小片段

谢谢你!! 戴夫


编辑:无法解决它,所以我只使用avidemux GUI工具。它似乎是附加了MP4的刚刚好

MP4肯定有问题,或者只是gopro摄像头的问题。

来自ffmpeg手册页的“示例”部分:

您可以在输出中放入许多相同类型的流:

ffmpeg-i test1.avi-i test2.avi-vcodec copy-acodec copy\
-vcodec copy-acodec copy test12.avi-newvideo-newaudio
除了第一个视频和音频流之外,生成的 输出文件test12.avi将包含第二个视频和第二个视频 在输入流列表中找到音频流

“-newvideo”、“-newaudio”和“-newsubtitle”选项必须在要添加它们的输出文件的名称之后立即指定

如果您的意思是要将它们连接在一起,则具有说明


我不确定这个问题/答案是否属于打开状态。

您必须将它们转换为可以轻松连接的MPEG格式。下面是我在GoPro视频中使用并称之为“ffcat”的脚本。它基本上运行几个“ffmpeg-i”命令,这些命令生成可连接的MPEG,该MPEG通过管道传输到ffmpeg命令,然后将其转换为H.264 mp4文件

它还将视频大小调整为720p,但您可能不希望这样

“H264选项”是我最近在互联网上找到的标志

希望这有帮助, 里德



假设您想要连接电影,您可以使用以下com FFmpeg version SVN-r26402, Copyright (c) 2000-2011 the FFmpeg developers built on Mar 21 2011 18:05:32 with gcc 4.4.5 configuration: --enable-gpl --enable-version3 --enable-nonfree --enable-postproc --enable-libfaac --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxvid --enable-x11grab libavutil 50.36. 0 / 50.36. 0 libavcore 0.16. 1 / 0.16. 1 libavcodec 52.108. 0 / 52.108. 0 libavformat 52.93. 0 / 52.93. 0 libavdevice 52. 2. 3 / 52. 2. 3 libavfilter 1.74. 0 / 1.74. 0 libswscale 0.12. 0 / 0.12. 0 libpostproc 51. 2. 0 / 51. 2. 0 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '75_540_38HQ2.mp4': Metadata: major_brand : isom minor_version : 512 compatible_brands: isomiso2avc1mp41 creation_time : 1970-01-01 00:00:00 encoder : Lavf52.93.0 Duration: 00:00:29.99, start: 0.000000, bitrate: 11517 kb/s Stream #0.0(eng): Video: h264, yuv420p, 1280x960 [PAR 1:1 DAR 4:3], 11575 kb/s, 29.94 fps, 29.97 tbr, 30k tbn, 59.94 tbc Metadata: creation_time : 1970-01-01 00:00:00 Stream #0.1(eng): Audio: aac, 48000 Hz, stereo, s16, 127 kb/s Metadata: creation_time : 1970-01-01 00:00:00 Input #1, mov,mp4,m4a,3gp,3g2,mj2, from '76_70_20.mp4': Metadata: major_brand : isom minor_version : 512 compatible_brands: isomiso2avc1mp41 creation_time : 1970-01-01 00:00:00 encoder : Lavf52.93.0 Duration: 00:00:19.98, start: 0.000000, bitrate: 10901 kb/s Stream #1.0(eng): Video: h264, yuv420p, 1280x960 [PAR 1:1 DAR 4:3], 10804 kb/s, 29.97 fps, 29.97 tbr, 30k tbn, 59.94 tbc Metadata: creation_time : 1970-01-01 00:00:00 Stream #1.1(eng): Audio: aac, 48000 Hz, stereo, s16, 128 kb/s Metadata: creation_time : 1970-01-01 00:00:00 Input #2, mov,mp4,m4a,3gp,3g2,mj2, from '76_173_80.mp4': Metadata: major_brand : isom minor_version : 512 compatible_brands: isomiso2avc1mp41 creation_time : 1970-01-01 00:00:00 encoder : Lavf52.93.0 Duration: 00:03:09.99, start: 0.000000, bitrate: 10393 kb/s Stream #2.0(eng): Video: h264, yuv420p, 1280x960 [PAR 1:1 DAR 4:3], 10321 kb/s, 29.96 fps, 29.97 tbr, 30k tbn, 59.94 tbc Metadata: creation_time : 1970-01-01 00:00:00 Stream #2.1(eng): Audio: aac, 48000 Hz, stereo, s16, 128 kb/s Metadata: creation_time : 1970-01-01 00:00:00 Seems stream 0 codec frame rate differs from container frame rate: 119.88 (120000/1001) -> 30000.00 (30000/1) Input #3, mov,mp4,m4a,3gp,3g2,mj2, from '81_186_35.mp4': Metadata: major_brand : isom minor_version : 512 compatible_brands: isomiso2avc1mp41 creation_time : 1970-01-01 00:00:00 encoder : Lavf52.93.0 Duration: 00:00:35.00, start: 0.000000, bitrate: 12700 kb/s Stream #3.0(eng): Video: h264, yuv420p, 1280x720 [PAR 1:1 DAR 16:9], 12620 kb/s, 59.91 fps, 30k tbr, 60k tbn, 119.88 tbc Metadata: creation_time : 1970-01-01 00:00:00 Stream #3.1(eng): Audio: aac, 48000 Hz, stereo, s16, 128 kb/s Metadata: creation_time : 1970-01-01 00:00:00 Output #0, mp4, to 'Mux1.mp4': Metadata: major_brand : isom minor_version : 512 compatible_brands: isomiso2avc1mp41 creation_time : 1970-01-01 00:00:00 encoder : Lavf52.93.0 Stream #0.0(eng): Video: libx264, yuv420p, 1280x960 [PAR 1:1 DAR 4:3], q=2-31, 11575 kb/s, 30k tbn, 29.97 tbc Metadata: creation_time : 1970-01-01 00:00:00 Stream #0.1(eng): Audio: libfaac, 48000 Hz, stereo, 128 kb/s Metadata: creation_time : 1970-01-01 00:00:00 Stream mapping: Stream #0.0 -> #0.0 Stream #2.1 -> #0.1 Press [q] to stop encoding frame= 883 fps=632 q=-1.0 Lsize= 44730kB time=29.40 bitrate=12465.1kbits/s video:41678kB audio:2969kB global headers:0kB muxing overhead 0.184548%
cmd="( "

h264options="-vcodec libx264 -b 512k -flags +loop+mv4 -cmp 256 \
 -partitions +parti4x4+parti8x8+partp4x4+partp8x8+partb8x8 \
 -me_method hex -subq 7 -trellis 1 -refs 5 -bf 3 \
 -flags2 +bpyramid+wpred+mixed_refs+dct8x8 -coder 1 -me_range 16 \
   -g 250 -keyint_min 25 -sc_threshold 40 -i_qfactor 0.71 -qmin 10\
 -qmax 51 -qdiff 4"

outfile="out-`date +%F-%H%M.%S`.mp4"

for i; do
    cmd="${cmd}ffmpeg -i $i -ab 256000 -vb 10000000 -mbd rd -trellis 2 -cmp 2 -subcmp 2 -g 100 -f mpeg -; "
done
cmd="${cmd} ) | ffmpeg -y -i - -threads 8 ${h264options} -vb 10000000 -acodec libfaac -ar 44100 -ab 128k -s 1280x720 ${outfile}"
echo "${cmd}"
eval ${cmd}
ffmpeg -f concat -i inputs.txt -vcodec copy -acodec copy Mux1.mp4
file 75_540_38HQ2.mp4 
file 76_70_20.mp4 
file 76_173_80.mp4
file 81_186_35.mp4
    mp4box -add video1.mp4 -cat video2.mp4 -cat video3.mp4 output.mp4
#!/bin/bash

################################################################################
#
# Script name: MultiMedia Concat Script (mmcat)
# Author: burek (burek021@gmail.com)
# License: GNU/GPL, see http://www.gnu.org/copyleft/gpl.html
# Date: 2012-07-14
#
# This script concatenates (joins, merges) several audio/video inputs into one
# final output (just like as if all the inputs were played in a playlist, one
# after another).
#
# All input files must have at least one audio and at least one video stream.
# If not, you can easily add audio silence, using FFmpeg. Just search the
# internet for "ffmpeg add silence".
#
# The script makes use of FFmpeg tool (www.ffmpeg.org) and is free for use under
# the GPL license. The inspiration for this script came from this FAQ item:
# http://ffmpeg.org/faq.html#How-can-I-join-video-files_003f
#
# If you find any bugs, please send me an e-mail so I can fix it.
#
################################################################################
#
# General syntax: mmcat <input1> <input2> <input3> ... <output>
#
# For example: mmcat file1.flv file2.flv output.flv
# would create "output.flv" out of "file1.flv" and "file2.flv".
#
################################################################################

# change this to what you need !!!
EXTRA_OPTIONS='-vcodec libx264 -crf 23 -preset medium -acodec aac -strict experimental -ac 2 -ar 44100 -ab 128k'

################################################################################
#
# NO NEED TO TOUCH ANYTHING AFTER THIS LINE!
#
################################################################################

# the version of the script
VERSION=1.3

# location of temp folder
TMP=/tmp

################################################################################

echo "MultiMedia Concat Script v$VERSION (mmcat) - A script to concatenate multiple multimedia files."
echo "Based on FFmpeg - www.ffmpeg.org"
echo "Don't forget to edit this script and change EXTRA_OPTIONS"
echo ""

################################################################################
# syntax check (has to have at least 3 params: infile1, infile2, outfile
################################################################################
if [ -z $3 ]; then
    echo "Syntax: $0 <input1> <input2> <input3> ... <output>"
    exit 1
fi

################################################################################
# get all the command line parameters, except for the last one, which is output
################################################################################
# $first  - first parameter
# $last   - last parameter (output file)
# $inputs - all the inputs, except the first input, because 1st input is
#           handled separately
################################################################################
first=${@:1:1}
last=${@:$#:1}
len=$(($#-2))
inputs=${@:2:$len}

# remove all previous tmp fifos (if exist)
rm -f $TMP/mcs_*

################################################################################
# decode first input differently, because the video header does not have to be
# kept for each video input, only the header from the first video is needed
################################################################################
mkfifo $TMP/mcs_a1 $TMP/mcs_v1

ffmpeg -y -i $first -vn -f u16le -acodec pcm_s16le -ac 2 -ar 44100 $TMP/mcs_a1 2>/dev/null </dev/null &
ffmpeg -y -i $first -an -f yuv4mpegpipe -vcodec rawvideo $TMP/mcs_v1 2>/dev/null </dev/null &

# if you need to log the output of decoding processes (usually not necessary)
# then replace the "2>/dev/null" in 2 lines above with your log file names, like this:
#ffmpeg -y -i $first -vn -f u16le -acodec pcm_s16le -ac 2 -ar 44100 $TMP/mcs_a1 2>$TMP/log.a.1 </dev/null &
#ffmpeg -y -i $first -an -f yuv4mpegpipe -vcodec rawvideo $TMP/mcs_v1 2>$TMP/log.v.1 </dev/null &

################################################################################
# decode all the other inputs, remove first line of video (header) with tail
# $all_a and $all_v are lists of all a/v fifos, to be used by "cat" later on
################################################################################
all_a=$TMP/mcs_a1
all_v=$TMP/mcs_v1
i=2
for f in $inputs
do
    mkfifo $TMP/mcs_a$i $TMP/mcs_v$i

    ffmpeg -y -i $f -vn -f u16le -acodec pcm_s16le -ac 2 -ar 44100 $TMP/mcs_a$i 2>/dev/null </dev/null &
    { ffmpeg -y -i $f -an -f yuv4mpegpipe -vcodec rawvideo - 2>/dev/null </dev/null | tail -n +2 > $TMP/mcs_v$i ; } &

    # if you need to log the output of decoding processes (usually not necessary)
    # then replace the "2>/dev/null" in 2 lines above with your log file names, like this:
    #ffmpeg -y -i $f -vn -f u16le -acodec pcm_s16le -ac 2 -ar 44100 $TMP/mcs_a$i 2>$TMP/log.a.$i </dev/null &
    #{ ffmpeg -y -i $f -an -f yuv4mpegpipe -vcodec rawvideo - 2>$TMP/log.v.$i </dev/null | tail -n +2 > $TMP/mcs_v$i ; } &

    all_a="$all_a $TMP/mcs_a$i"
    all_v="$all_v $TMP/mcs_v$i"
    let i++
done

################################################################################
# concatenate all raw audio/video inputs into one audio/video
################################################################################
mkfifo $TMP/mcs_a_all
mkfifo $TMP/mcs_v_all
cat $all_a > $TMP/mcs_a_all &
cat $all_v > $TMP/mcs_v_all &

################################################################################
# finally, encode the raw concatenated audio/video into something useful
################################################################################
ffmpeg -f u16le -acodec pcm_s16le -ac 2 -ar 44100 -i $TMP/mcs_a_all \
       -f yuv4mpegpipe -vcodec rawvideo -i $TMP/mcs_v_all \
    $EXTRA_OPTIONS \
    $last

################################################################################
# remove all fifos
################################################################################
rm -f $TMP/mcs_*
# this is a comment
file '/path/to/file1'
file '/path/to/file2'
file '/path/to/file3'
ffmpeg -f concat -i mylist.txt -c copy output
for f in ./*.wav; do echo "file '$f'" >> mylist.txt; done
printf "file '%s'\n" ./*.wav > mylist.txt
MP4Box -force-cat -add in1.mp4 -cat in2.mp4 -cat in3.mp4 ... out.mp4
# this is a comment
file '/path/to/file1'
file '/path/to/file2'
file '/path/to/file3'
ffmpeg -f concat -i mylist.txt -c copy output.mp4
ffmpeg -f concat -safe 0 -i <(for f in ./*.mp4; do echo "file '$PWD/$f'"; done) -c copy output.mp4
ffmpeg -i "concat:input1.ts|input2.ts|input3.ts" -c copy output.ts
    ffmpeg -i input1.mp4 -i input2.webm -i input3.mov \
-filter_complex "[0:v:0][0:a:0][1:v:0][1:a:0][2:v:0][2:a:0]concat=n=3:v=1:a=1[outv][outa]" \
-map "[outv]" -map "[outa]" output.mkv
    # this is a comment
    file '/path/to/file1.wav'
    file '/path/to/file2.wav'
    file '/path/to/file3.wav'
ffmpeg -f concat -safe 0 -i mylist.txt -c copy output.wav