Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ffmpeg 一个文件中包含多个并排视频流,无需转码_Ffmpeg_Mp4_Video Encoding_Avi_Mkv - Fatal编程技术网

Ffmpeg 一个文件中包含多个并排视频流,无需转码

Ffmpeg 一个文件中包含多个并排视频流,无需转码,ffmpeg,mp4,video-encoding,avi,mkv,Ffmpeg,Mp4,Video Encoding,Avi,Mkv,我正在研究一种可能性,即存储来自h264中已编码的少数源的视频流,而不进行视频转码,因为我想用于此项目的设备将无法动态转码组合视频 我要找的是两个或更多的图片并排(不是视频拼接)打包到mp4/avi/mkv中 我相信mkv容器支持这种打包,但我还没有找到合适的ffmpeg选项或其他工具来以这种方式存储它。它所做的是非常缓慢的视频转码成一个大的h264流 只需指定多个输入 ffmpeg -i [input 1] -i [input 2] ... -map 0 -map 1 ... -codec c

我正在研究一种可能性,即存储来自h264中已编码的少数源的视频流,而不进行视频转码,因为我想用于此项目的设备将无法动态转码组合视频

我要找的是两个或更多的图片并排(不是视频拼接)打包到mp4/avi/mkv中


我相信mkv容器支持这种打包,但我还没有找到合适的ffmpeg选项或其他工具来以这种方式存储它。它所做的是非常缓慢的视频转码成一个大的h264流

只需指定多个输入

ffmpeg -i [input 1] -i [input 2] ... -map 0 -map 1 ... -codec copy -f matroska [output]

至于“边到边”部分,由玩家决定呈现方式。如果您无法控制播放器,并且需要特定的布局或演示,则必须将所有这些视频流“刻录”到新的视频流中,并将其编码为新的单个视频流。

如果您的播放器可以处理它,请使其执行并排视图。不需要编码或muxing

mpv视频播放器

示例使用:

上面的示例假设每个输入具有相同的高度。否则,必须添加比例、比例2ref、垫和/或裁剪过滤器。使用裁剪过滤器从高度中删除20个像素的简单示例:

mpv --lavfi-complex="[vid1]crop=iw:ih-20[c];[c][vid2]hstack[vo];[aid1][aid2]amix[ao]" input1.mp4 --external-file=input2.mp4

有关更多信息,请参阅和。

MPEG容器还支持一个文件中具有不同属性的多个TS(传输流)。但是祝贺您选择了MKV,它更容易解析。在这种情况下,您需要包含
-map
选项来手动选择所需的流,例如
-map 0-map 1
,因为每个流类型只选择一个流。另外,
-f
不是必需的(但如果需要,正确的值是
matroska
,而不是
mkv
)。@LordNeckbeard有效积分,谢谢。另外,我指定
-f
,因为我通常以流的形式输出到标准输出。编解码器拷贝将第二个流附加到末尾,而不是强制VLC并行播放-映射不会改变行为。@SergFillipenko设置编解码器不会改变任何类似的行为。所有这些都是将两个流放在同一个输出中。而且,它们应该是交错的。
mpv --lavfi-complex="[vid1]crop=iw:ih-20[c];[c][vid2]hstack[vo];[aid1][aid2]amix[ao]" input1.mp4 --external-file=input2.mp4