Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.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
Video FFmpeg-以不同分辨率连接视频_Video_Ffmpeg - Fatal编程技术网

Video FFmpeg-以不同分辨率连接视频

Video FFmpeg-以不同分辨率连接视频,video,ffmpeg,Video,Ffmpeg,我目前有一个android应用程序,其中视频使用ffmpeg的concat进行组合。那很好。但是,当我向其中一个视频添加文本(使用drawtext)时,再次组合视频后,组合的视频会失真。带有drawtext的视频显示良好,但是没有文本的视频会切换方向 我认为问题的根源在于,我的android手机上的垂直视频分辨率为1920x1080,但如果我在执行drawtext时使用该分辨率作为刻度,它将变为水平 我想举个例子可以更好地解释这一点。假设我有两个垂直录制的视频,我将它们与concat结合起来。合

我目前有一个android应用程序,其中视频使用ffmpeg的concat进行组合。那很好。但是,当我向其中一个视频添加文本(使用drawtext)时,再次组合视频后,组合的视频会失真。带有drawtext的视频显示良好,但是没有文本的视频会切换方向

我认为问题的根源在于,我的android手机上的垂直视频分辨率为1920x1080,但如果我在执行drawtext时使用该分辨率作为刻度,它将变为水平

我想举个例子可以更好地解释这一点。假设我有两个垂直录制的视频,我将它们与concat结合起来。合并后的视频显示得很好。然后,如果我使用drawtext将文本添加到第一个视频中,则组合视频将以正常方向(垂直方向)显示第一个视频(带文本)。但是,当它转换到下一个视频时,它首先会暂停几秒钟,然后以水平方向显示第二个视频

另外,我也尝试过将纵横比设为1:1,这样就没关系了,但第二个视频的方向仍然是逆时针变化的

谢谢你的帮助,如果需要的话,很高兴补充更多的说明

这是为了添加文本:

ffmpeg -i input.mp4 -vf drawbox=y=ih-200:color=black@0.5:width=iw:height=200:t=max
    ,drawtext=fontfile=RobotoRegular.ttf:text='Text':x=(w-text_w)/2:y=(h-text_h)-100:fontsize=70:fontcolor=white
    -c:v libx264 -b:v 17000k -r 30 -preset ultrafast -y output.mp4
输出:

ffmpeg version n3.0.1 Copyright (c) 2000-2016 the FFmpeg developers
                                                       built with gcc 4.8 (GCC)
                                                       configuration: --target-os=linux --cross-prefix=/home/vagrant/SourceCode/ffmpeg-android/toolchain-android/bin/arm-linux-androideabi- --arch=arm --cpu=cortex-a8 --enable-runtime-cpudetect --sysroot=/home/vagrant/SourceCode/ffmpeg-android/toolchain-android/sysroot --enable-pic --enable-libx264 --enable-libass --enable-libfreetype --enable-libfribidi --enable-libmp3lame --enable-fontconfig --enable-pthreads --disable-debug --disable-ffserver --enable-version3 --enable-hardcoded-tables --disable-ffplay --disable-ffprobe --enable-gpl --enable-yasm --disable-doc --disable-shared --enable-static --pkg-config=/home/vagrant/SourceCode/ffmpeg-android/ffmpeg-pkg-config --prefix=/home/vagrant/SourceCode/ffmpeg-android/build/armeabi-v7a --extra-cflags='-I/home/vagrant/SourceCode/ffmpeg-android/toolchain-android/include -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -fno-strict-overflow -fstack-protector-all' --extra-ldflags='-L/home/vagrant/SourceCode/ffmpeg-android/toolchain-android/lib -Wl,-z,relro -Wl,-z,now -pie' --extra-libs='-lpng -lexpat -lm' --extra-cxxflags=
                                                       libavutil      55. 17.103 / 55. 17.103
                                                       libavcodec     57. 24.102 / 57. 24.102
                                                       libavformat    57. 25.100 / 57. 25.100
                                                       libavdevice    57.  0.101 / 57.  0.101
                                                       libavfilter     6. 31.100 /  6. 31.100
                                                       libswscale      4.  0.100 /  4.  0.100
                                                       libswresample   2.  0.101 /  2.  0.101
                                                       libpostproc    54.  0.100 / 54.  0.100
                                                     Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/storage/emulated/0/Android/data/com.me.app/files/65/VID_20170802_111518.mp4':
                                                       Metadata:
                                                         major_brand     : mp42
                                                         minor_version   : 0
                                                         compatible_brands: isommp42
                                                         creation_time   : 2017-08-02 18:15:20
                                                         com.android.version: 7.0
                                                       Duration: 00:00:00.93, start: 0.000000, bitrate: 16415 kb/s
                                                         Stream #0:0(eng): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709), 1920x1080, 16408 kb/s, SAR 1:1 DAR 16:9, 28.94 fps, 30 tbr, 90k tbn, 180k tbc (default)
                                                         Metadata:
                                                           rotate          : 90
                                                           creation_time   : 2017-08-02 18:15:20
                                                           handler_name    : VideoHandle
                                                         Side data:
                                                           displaymatrix: rotation of -90.00 degrees
                                                     [libx264 @ 0xeab7ec00] using SAR=1/1
                                                     [libx264 @ 0xeab7ec00] using cpu capabilities: none!
                                                     [libx264 @ 0xeab7ec00] profile Constrained Baseline, level 4.1
                                                     [libx264 @ 0xeab7ec00] 264 - core 148 - H.264/MPEG-4 AVC codec - Copyleft 2003-2015 - http://www.videolan.org/x264.html - options: cabac=0 ref=1 deblock=0:0:0 analyse=0:0 me=dia subme=0 psy=1 psy_rd=1.00:0.00 mixed_ref=0 me_range=16 chroma_me=1 trellis=0 8x8dct=0 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=0 threads=12 lookahead_threads=2 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=0 weightp=0 keyint=250 keyint_min=25 scenecut=0 intra_refresh=0 rc=abr mbtree=0 bitrate=17000 ratetol=1.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=0
                                                     Output #0, mp4, to '/storage/emulated/0/Android/data/com.me.app/files/65/temp.mp4':
                                                       Metadata:
                                                         major_brand     : mp42
                                                         minor_version   : 0
                                                         compatible_brands: isommp42
                                                         com.android.version: 7.0
                                                         encoder         : Lavf57.25.100
                                                         Stream #0:0(eng): Video: h264 (libx264) ([33][0][0][0] / 0x0021), yuv420p, 1080x1920 [SAR 1:1 DAR 9:16], q=-1--1, 17000 kb/s, 30 fps, 15360 tbn, 30 tbc (default)
                                                         Metadata:
                                                           handler_name    : VideoHandle
                                                           creation_time   : 2017-08-02 18:15:20
                                                           encoder         : Lavc57.24.102 libx264
                                                         Side data:
                                                           unknown side data type 10 (24 bytes)
                                                     Stream mapping:
                                                       Stream #0:0 -> #0:0 (h264 (native) -> h264 (libx264))
                                                     Press [q] to stop, [?] for help
                                                     frame=    6 fps=0.0 q=0.0 size=       0kB time=00:00:00.00 bitrate=N/A dup=1 drop=0 speed=   0x    
                                                     frame=   10 fps=8.8 q=0.0 size=       0kB time=00:00:00.00 bitrate=N/A dup=1 drop=0 speed=   0x    
                                                     frame=   14 fps=8.4 q=15.0 size=     155kB time=00:00:00.03 bitrate=38067.5kbits/s dup=1 drop=0 speed=0.0201x    
                                                     frame=   18 fps=8.0 q=22.0 size=     744kB time=00:00:00.16 bitrate=36592.5kb
ffmpeg version n3.0.1 Copyright (c) 2000-2016 the FFmpeg developers
                                                        built with gcc 4.8 (GCC)
                                                        configuration: --target-os=linux --cross-prefix=/home/vagrant/SourceCode/ffmpeg-android/toolchain-android/bin/arm-linux-androideabi- --arch=arm --cpu=cortex-a8 --enable-runtime-cpudetect --sysroot=/home/vagrant/SourceCode/ffmpeg-android/toolchain-android/sysroot --enable-pic --enable-libx264 --enable-libass --enable-libfreetype --enable-libfribidi --enable-libmp3lame --enable-fontconfig --enable-pthreads --disable-debug --disable-ffserver --enable-version3 --enable-hardcoded-tables --disable-ffplay --disable-ffprobe --enable-gpl --enable-yasm --disable-doc --disable-shared --enable-static --pkg-config=/home/vagrant/SourceCode/ffmpeg-android/ffmpeg-pkg-config --prefix=/home/vagrant/SourceCode/ffmpeg-android/build/armeabi-v7a --extra-cflags='-I/home/vagrant/SourceCode/ffmpeg-android/toolchain-android/include -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -fno-strict-overflow -fstack-protector-all' --extra-ldflags='-L/home/vagrant/SourceCode/ffmpeg-android/toolchain-android/lib -Wl,-z,relro -Wl,-z,now -pie' --extra-libs='-lpng -lexpat -lm' --extra-cxxflags=
                                                        libavutil      55. 17.103 / 55. 17.103
                                                        libavcodec     57. 24.102 / 57. 24.102
                                                        libavformat    57. 25.100 / 57. 25.100
                                                        libavdevice    57.  0.101 / 57.  0.101
                                                        libavfilter     6. 31.100 /  6. 31.100
                                                        libswscale      4.  0.100 /  4.  0.100
                                                        libswresample   2.  0.101 /  2.  0.101
                                                        libpostproc    54.  0.100 / 54.  0.100
                                                      [mov,mp4,m4a,3gp,3g2,mj2 @ 0xe762a600] Auto-inserting h264_mp4toannexb bitstream filter
                                                      Input #0, concat, from '/storage/emulated/0/Android/data/com.me.app/files/64/TXT_20170802_110325.txt':
                                                        Duration: N/A, start: 0.000000, bitrate: 23403 kb/s
                                                          Stream #0:0(eng): Video: h264 (Constrained Baseline) (avc1 / 0x31637661), yuv420p, 1080x1920 [SAR 1:1 DAR 9:16], 23403 kb/s, 30 fps, 30 tbr, 15360 tbn, 60 tbc
                                                          Metadata:
                                                            handler_name    : VideoHandler
                                                      Output #0, mp4, to '/storage/emulated/0/Android/data/com.me.app/files/64/VID_20170802_110325concat.mp4':
                                                        Metadata:
                                                          encoder         : Lavf57.25.100
                                                          Stream #0:0(eng): Video: h264 ([33][0][0][0] / 0x0021), yuv420p, 1080x1920 [SAR 1:1 DAR 9:16], q=2-31, 23403 kb/s, 30 fps, 30 tbr, 15360 tbn, 15360 tbc
                                                          Metadata:
                                                            handler_name    : VideoHandler
                                                      Stream mapping:
                                                        Stream #0:0 -> #0:0 (copy)
                                                      Press [q] to stop, [?] for help
                                                      [mov,mp4,m4a,3gp,3g2,mj2 @ 0xe762a600] Auto-inserting h264_mp4toannexb bitstream filter
                                                      frame=   64 fps=0.0 q=-1.0 Lsize=    5218kB time=00:00:12.30 bitrate=3474.5kbits/s speed= 122x    
                                                      video:5217kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.025721%
ffmpeg-f concat-safe 0-i input.mp4-c copy-y output.mp4

输出:

ffmpeg version n3.0.1 Copyright (c) 2000-2016 the FFmpeg developers
                                                       built with gcc 4.8 (GCC)
                                                       configuration: --target-os=linux --cross-prefix=/home/vagrant/SourceCode/ffmpeg-android/toolchain-android/bin/arm-linux-androideabi- --arch=arm --cpu=cortex-a8 --enable-runtime-cpudetect --sysroot=/home/vagrant/SourceCode/ffmpeg-android/toolchain-android/sysroot --enable-pic --enable-libx264 --enable-libass --enable-libfreetype --enable-libfribidi --enable-libmp3lame --enable-fontconfig --enable-pthreads --disable-debug --disable-ffserver --enable-version3 --enable-hardcoded-tables --disable-ffplay --disable-ffprobe --enable-gpl --enable-yasm --disable-doc --disable-shared --enable-static --pkg-config=/home/vagrant/SourceCode/ffmpeg-android/ffmpeg-pkg-config --prefix=/home/vagrant/SourceCode/ffmpeg-android/build/armeabi-v7a --extra-cflags='-I/home/vagrant/SourceCode/ffmpeg-android/toolchain-android/include -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -fno-strict-overflow -fstack-protector-all' --extra-ldflags='-L/home/vagrant/SourceCode/ffmpeg-android/toolchain-android/lib -Wl,-z,relro -Wl,-z,now -pie' --extra-libs='-lpng -lexpat -lm' --extra-cxxflags=
                                                       libavutil      55. 17.103 / 55. 17.103
                                                       libavcodec     57. 24.102 / 57. 24.102
                                                       libavformat    57. 25.100 / 57. 25.100
                                                       libavdevice    57.  0.101 / 57.  0.101
                                                       libavfilter     6. 31.100 /  6. 31.100
                                                       libswscale      4.  0.100 /  4.  0.100
                                                       libswresample   2.  0.101 /  2.  0.101
                                                       libpostproc    54.  0.100 / 54.  0.100
                                                     Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/storage/emulated/0/Android/data/com.me.app/files/65/VID_20170802_111518.mp4':
                                                       Metadata:
                                                         major_brand     : mp42
                                                         minor_version   : 0
                                                         compatible_brands: isommp42
                                                         creation_time   : 2017-08-02 18:15:20
                                                         com.android.version: 7.0
                                                       Duration: 00:00:00.93, start: 0.000000, bitrate: 16415 kb/s
                                                         Stream #0:0(eng): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709), 1920x1080, 16408 kb/s, SAR 1:1 DAR 16:9, 28.94 fps, 30 tbr, 90k tbn, 180k tbc (default)
                                                         Metadata:
                                                           rotate          : 90
                                                           creation_time   : 2017-08-02 18:15:20
                                                           handler_name    : VideoHandle
                                                         Side data:
                                                           displaymatrix: rotation of -90.00 degrees
                                                     [libx264 @ 0xeab7ec00] using SAR=1/1
                                                     [libx264 @ 0xeab7ec00] using cpu capabilities: none!
                                                     [libx264 @ 0xeab7ec00] profile Constrained Baseline, level 4.1
                                                     [libx264 @ 0xeab7ec00] 264 - core 148 - H.264/MPEG-4 AVC codec - Copyleft 2003-2015 - http://www.videolan.org/x264.html - options: cabac=0 ref=1 deblock=0:0:0 analyse=0:0 me=dia subme=0 psy=1 psy_rd=1.00:0.00 mixed_ref=0 me_range=16 chroma_me=1 trellis=0 8x8dct=0 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=0 threads=12 lookahead_threads=2 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=0 weightp=0 keyint=250 keyint_min=25 scenecut=0 intra_refresh=0 rc=abr mbtree=0 bitrate=17000 ratetol=1.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=0
                                                     Output #0, mp4, to '/storage/emulated/0/Android/data/com.me.app/files/65/temp.mp4':
                                                       Metadata:
                                                         major_brand     : mp42
                                                         minor_version   : 0
                                                         compatible_brands: isommp42
                                                         com.android.version: 7.0
                                                         encoder         : Lavf57.25.100
                                                         Stream #0:0(eng): Video: h264 (libx264) ([33][0][0][0] / 0x0021), yuv420p, 1080x1920 [SAR 1:1 DAR 9:16], q=-1--1, 17000 kb/s, 30 fps, 15360 tbn, 30 tbc (default)
                                                         Metadata:
                                                           handler_name    : VideoHandle
                                                           creation_time   : 2017-08-02 18:15:20
                                                           encoder         : Lavc57.24.102 libx264
                                                         Side data:
                                                           unknown side data type 10 (24 bytes)
                                                     Stream mapping:
                                                       Stream #0:0 -> #0:0 (h264 (native) -> h264 (libx264))
                                                     Press [q] to stop, [?] for help
                                                     frame=    6 fps=0.0 q=0.0 size=       0kB time=00:00:00.00 bitrate=N/A dup=1 drop=0 speed=   0x    
                                                     frame=   10 fps=8.8 q=0.0 size=       0kB time=00:00:00.00 bitrate=N/A dup=1 drop=0 speed=   0x    
                                                     frame=   14 fps=8.4 q=15.0 size=     155kB time=00:00:00.03 bitrate=38067.5kbits/s dup=1 drop=0 speed=0.0201x    
                                                     frame=   18 fps=8.0 q=22.0 size=     744kB time=00:00:00.16 bitrate=36592.5kb
ffmpeg version n3.0.1 Copyright (c) 2000-2016 the FFmpeg developers
                                                        built with gcc 4.8 (GCC)
                                                        configuration: --target-os=linux --cross-prefix=/home/vagrant/SourceCode/ffmpeg-android/toolchain-android/bin/arm-linux-androideabi- --arch=arm --cpu=cortex-a8 --enable-runtime-cpudetect --sysroot=/home/vagrant/SourceCode/ffmpeg-android/toolchain-android/sysroot --enable-pic --enable-libx264 --enable-libass --enable-libfreetype --enable-libfribidi --enable-libmp3lame --enable-fontconfig --enable-pthreads --disable-debug --disable-ffserver --enable-version3 --enable-hardcoded-tables --disable-ffplay --disable-ffprobe --enable-gpl --enable-yasm --disable-doc --disable-shared --enable-static --pkg-config=/home/vagrant/SourceCode/ffmpeg-android/ffmpeg-pkg-config --prefix=/home/vagrant/SourceCode/ffmpeg-android/build/armeabi-v7a --extra-cflags='-I/home/vagrant/SourceCode/ffmpeg-android/toolchain-android/include -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -fno-strict-overflow -fstack-protector-all' --extra-ldflags='-L/home/vagrant/SourceCode/ffmpeg-android/toolchain-android/lib -Wl,-z,relro -Wl,-z,now -pie' --extra-libs='-lpng -lexpat -lm' --extra-cxxflags=
                                                        libavutil      55. 17.103 / 55. 17.103
                                                        libavcodec     57. 24.102 / 57. 24.102
                                                        libavformat    57. 25.100 / 57. 25.100
                                                        libavdevice    57.  0.101 / 57.  0.101
                                                        libavfilter     6. 31.100 /  6. 31.100
                                                        libswscale      4.  0.100 /  4.  0.100
                                                        libswresample   2.  0.101 /  2.  0.101
                                                        libpostproc    54.  0.100 / 54.  0.100
                                                      [mov,mp4,m4a,3gp,3g2,mj2 @ 0xe762a600] Auto-inserting h264_mp4toannexb bitstream filter
                                                      Input #0, concat, from '/storage/emulated/0/Android/data/com.me.app/files/64/TXT_20170802_110325.txt':
                                                        Duration: N/A, start: 0.000000, bitrate: 23403 kb/s
                                                          Stream #0:0(eng): Video: h264 (Constrained Baseline) (avc1 / 0x31637661), yuv420p, 1080x1920 [SAR 1:1 DAR 9:16], 23403 kb/s, 30 fps, 30 tbr, 15360 tbn, 60 tbc
                                                          Metadata:
                                                            handler_name    : VideoHandler
                                                      Output #0, mp4, to '/storage/emulated/0/Android/data/com.me.app/files/64/VID_20170802_110325concat.mp4':
                                                        Metadata:
                                                          encoder         : Lavf57.25.100
                                                          Stream #0:0(eng): Video: h264 ([33][0][0][0] / 0x0021), yuv420p, 1080x1920 [SAR 1:1 DAR 9:16], q=2-31, 23403 kb/s, 30 fps, 30 tbr, 15360 tbn, 15360 tbc
                                                          Metadata:
                                                            handler_name    : VideoHandler
                                                      Stream mapping:
                                                        Stream #0:0 -> #0:0 (copy)
                                                      Press [q] to stop, [?] for help
                                                      [mov,mp4,m4a,3gp,3g2,mj2 @ 0xe762a600] Auto-inserting h264_mp4toannexb bitstream filter
                                                      frame=   64 fps=0.0 q=-1.0 Lsize=    5218kB time=00:00:12.30 bitrate=3474.5kbits/s speed= 122x    
                                                      video:5217kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.025721%

从日志中,您可以看到源代码是1920x1080,元数据旋转90。在drawtext之后,输出为1080x1920,没有元数据

然后将1080x1920无旋转视频和1920x1080旋转90的视频连接在一起。最终输出为不旋转的一半1080x1920和一半1920x1080视频

我的建议是使用转置过滤器将视频旋转到0度,然后再进行处理和压缩

更新

如果要保持原始旋转,需要在中间缓冲区上绘制文本,旋转它,然后与输入重叠。您可能还需要将元数据添加到输出中。示例命令如下所示:

ffmpeg -f lavfi -i color=color=0x000000@0.0:s=1080x1920,format=yuva444p -noautorotate -i input.mp4 \
-filter_complex "[0:v]drawbox=y=ih-200:color=black@0.5:width=iw:height=200:t=max,drawtext=fontfile=RobotoRegular.ttf:text='Text':x=(w-text_w)/2:y=(h-text_h)-100:fontsize=70:fontcolor=white,transpose=dir=2,[1:v]overlay" \
-c:v libx264 -b:v 17000k -r 30 -preset ultrafast -y output1.mp4

ffmpeg -i output1.mp4 -c copy -metadata:s:v:0 rotate=-90 output2.mp4

然后,您可以使用另一个旋转的源来解析输出。

需要查看您的命令和完整的控制台输出。也可能是您的输入文件。在添加了
-report
的情况下运行命令,并共享生成的日志。如果尝试运行-report,则无法打开报告“ffmpeg-20170802-070746.log”:只读文件系统只显示整个命令行输出。添加了一些输出。对不起,格式不对。正如我添加过滤器时看到的,它将视频从1920x1080更改为1080x1920。android手机的摄像头具有1920x1080的垂直视频,因此,当我将过滤视频与非过滤视频相结合时,它将1080x1920视频与1920x1080视频相结合,从而产生半垂直半水平的视频。这将在处理步骤中增加更多时间。我尝试过在添加drawtext时不自动旋转,但是文本被添加到视频的左侧而不是底部,因为它将其视为水平方向。而且,当我意识到这一点时,它在从第一个视频转换到第二个视频时冻结了。