ffmpeg实现web上视频转码为mp4格式用video标签却无法播放

1.问题描述:调用ffmpeg将avi格式视频转码->mp4格式,使用最简单的标签进行播放只能播放声音,没有画面(黑屏)。而暴风影音等本地视频播放软件却能够正常播放转码后的视频。
2.环境:SSH框架准备实现视频上传后的自动转码并且能够网页内播放,火狐浏览器。
3.已知mp4格式分为两种,其中H264类型才能进行html播放,但按照转码命令说已经转码成:视频H264、音频aac格式了,但是仍然是黑屏(有声音)。
4.未知:(1)转码时显示的相关命令行具体意义。(2)网上所说用格式工厂进行转码即可,有没有能够通过代码调用的视频转码方法予以解决呢?
5.以下为问题截图:

(1)视频转码Java代码:

        List<String> convert = new ArrayList<String>();
        convert.add(ffmpegPath); // 添加转换工具路径
        convert.add("-i"); // 添加参数"-i",该参数指定要转换的文件
        convert.add(sourceVideoPath); // 添加要转换格式的视频文件的路径

        convert.add("-acodec"); 
        convert.add("aac");
        convert.add("-vcodec");
        convert.add("libx264");       
        convert.add("-y");       
        convert.add(targetFolder+fileRealNameNoExtension+targetExtension);

(2)转码时的输出:

ffmpeg version N-93678-g4b7166c9d5 Copyright (c) 2000-2019 the FFmpeg developers
  built with gcc 8.3.1 (GCC) 20190414
  configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-libdav1d --enable-libbluray --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libtheora --enable-libtwolame --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable-libvidstab --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa --enable-libspeex --enable-libxvid --enable-libaom --enable-libmfx --enable-amf --enable-ffnvcodec --enable-cuvid --enable-d3d11va --enable-nvenc --enable-nvdec --enable-dxva2 --enable-avisynth --enable-libopenmpt
  libavutil      56. 26.100 / 56. 26.100
  libavcodec     58. 52.100 / 58. 52.100
  libavformat    58. 27.103 / 58. 27.103
  libavdevice    58.  7.100 / 58.  7.100
  libavfilter     7. 50.100 /  7. 50.100
  libswscale      5.  4.100 /  5.  4.100
  libswresample   3.  4.100 /  3.  4.100
  libpostproc    55.  4.100 / 55.  4.100
Input #0, avi, from 'E:\Test\projectVideos\temp\1557994804863.avi':
  Metadata:
    genre           : Other
    track           : 1
    encoder         : Lavf54.63.104
  Duration: 00:00:16.80, start: 0.000000, bitrate: 2286 kb/s
    Stream #0:0: Video: h264 (Main) (H264 / 0x34363248), yuv420p(progressive), 1920x1080 [SAR 1:1 DAR 16:9], 2151 kb/s, 25 fps, 25 tbr, 25 tbn, 50 tbc
    Stream #0:1: Audio: mp3 (U[0][0][0] / 0x0055), 44100 Hz, mono, fltp, 128 kb/s
Stream mapping:
  Stream #0:0 -> #0:0 (h264 (native) -> h264 (libx264))
  Stream #0:1 -> #0:1 (mp3 (mp3float) -> aac (native))
Press [q] to stop, [?] for help
[libx264 @ 0000000002ebf4c0] using SAR=1/1
[libx264 @ 0000000002ebf4c0] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX
[libx264 @ 0000000002ebf4c0] profile Progressive High, level 4.0, 4:2:0, 8-bit
[libx264 @ 0000000002ebf4c0] 264 - core 157 r2970 5493be8 - H.264/MPEG-4 AVC codec - Copyleft 2003-2019 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=6 lookahead_threads=1 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=crf mbtree=1 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
Output #0, mp4, to 'E:\Test\projectVideos\encvideos\1557994804863.mp4':
  Metadata:
    genre           : Other
    track           : 1
    encoder         : Lavf58.27.103
    Stream #0:0: Video: h264 (libx264) (avc1 / 0x31637661), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], q=-1--1, 25 fps, 12800 tbn, 25 tbc
    Metadata:
      encoder         : Lavc58.52.100 libx264
    Side data:
      cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: -1
    Stream #0:1: Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, mono, fltp, 69 kb/s
    Metadata:
      encoder         : Lavc58.52.100 aac
frame=    1 fps=0.0 q=0.0 size=       0kB time=00:00:00.06 bitrate=   5.5kbits/s speed=0.138x    
frame=   46 fps= 23 q=0.0 size=       0kB time=00:00:01.88 bitrate=   0.2kbits/s speed=0.936x    
frame=   64 fps= 25 q=28.0 size=       0kB time=00:00:02.57 bitrate=   0.1kbits/s speed=1.02x    
frame=   88 fps= 29 q=28.0 size=       0kB time=00:00:03.55 bitrate=   0.1kbits/s speed=1.17x    
frame=  108 fps= 31 q=28.0 size=       0kB time=00:00:04.34 bitrate=   0.1kbits/s speed=1.23x    
frame=  133 fps= 33 q=28.0 size=       0kB time=00:00:05.34 bitrate=   0.1kbits/s speed=1.32x    
frame=  155 fps= 34 q=28.0 size=       0kB time=00:00:06.22 bitrate=   0.1kbits/s speed=1.35x    
frame=  171 fps= 33 q=28.0 size=       0kB time=00:00:06.87 bitrate=   0.1kbits/s speed=1.33x    
frame=  186 fps= 33 q=28.0 size=       0kB time=00:00:07.47 bitrate=   0.1kbits/s speed=1.32x    
frame=  195 fps= 31 q=28.0 size=       0kB time=00:00:07.82 bitrate=   0.0kbits/s speed=1.25x    
frame=  206 fps= 30 q=28.0 size=       0kB time=00:00:08.26 bitrate=   0.0kbits/s speed=1.22x    
frame=  214 fps= 29 q=28.0 size=       0kB time=00:00:08.59 bitrate=   0.0kbits/s speed=1.17x    
frame=  223 fps= 28 q=28.0 size=       0kB time=00:00:08.96 bitrate=   0.0kbits/s speed=1.14x    
frame=  229 fps= 27 q=28.0 size=       0kB time=00:00:09.19 bitrate=   0.0kbits/s speed=1.09x    
frame=  232 fps= 25 q=28.0 size=       0kB time=00:00:09.28 bitrate=   0.0kbits/s speed=1.01x    
frame=  235 fps= 24 q=28.0 size=     256kB time=00:00:09.42 bitrate= 222.5kbits/s speed=0.965x    
frame=  240 fps= 23 q=28.0 size=     256kB time=00:00:09.63 bitrate= 217.7kbits/s speed=0.928x    
frame=  243 fps= 22 q=28.0 size=     256kB time=00:00:09.72 bitrate= 215.6kbits/s speed=0.894x    
frame=  247 fps= 21 q=28.0 size=     256kB time=00:00:09.89 bitrate= 212.1kbits/s speed=0.856x    
frame=  253 fps= 21 q=28.0 size=     512kB time=00:00:10.12 bitrate= 414.3kbits/s speed=0.832x    
frame=  258 fps= 20 q=28.0 size=     512kB time=00:00:10.33 bitrate= 406.0kbits/s speed=0.812x    
frame=  264 fps= 20 q=28.0 size=     512kB time=00:00:10.56 bitrate= 397.0kbits/s speed=0.791x    
frame=  268 fps= 19 q=28.0 size=     768kB time=00:00:10.72 bitrate= 586.5kbits/s speed=0.773x    
frame=  272 fps= 19 q=28.0 size=     768kB time=00:00:10.91 bitrate= 576.5kbits/s speed=0.753x    
frame=  278 fps= 19 q=28.0 size=     768kB time=00:00:11.14 bitrate= 564.5kbits/s speed=0.743x    
frame=  281 fps= 18 q=28.0 size=     768kB time=00:00:11.26 bitrate= 558.7kbits/s speed=0.725x    
frame=  286 fps= 18 q=28.0 size=    1024kB time=00:00:11.47 bitrate= 731.3kbits/s speed=0.715x    
frame=  291 fps= 17 q=28.0 size=    1024kB time=00:00:11.67 bitrate= 718.3kbits/s speed=0.701x    
frame=  296 fps= 17 q=25.0 size=    1024kB time=00:00:11.86 bitrate= 707.0kbits/s speed=0.687x    
frame=  303 fps= 17 q=28.0 size=    1280kB time=00:00:12.14 bitrate= 863.5kbits/s speed=0.681x    
frame=  308 fps= 17 q=28.0 size=    1280kB time=00:00:12.35 bitrate= 848.9kbits/s speed=0.67x    
frame=  312 fps= 16 q=28.0 size=    1280kB time=00:00:12.51 bitrate= 837.8kbits/s speed=0.661x    
frame=  319 fps= 16 q=28.0 size=    1280kB time=00:00:12.79 bitrate= 819.6kbits/s speed=0.658x    
frame=  341 fps= 17 q=28.0 size=    1280kB time=00:00:13.65 bitrate= 768.0kbits/s speed=0.684x    
frame=  362 fps= 18 q=28.0 size=    1280kB time=00:00:14.48 bitrate= 723.7kbits/s speed=0.708x    
frame=  391 fps= 19 q=28.0 size=    1280kB time=00:00:15.67 bitrate= 669.0kbits/s speed=0.746x    
frame=  419 fps= 19 q=28.0 size=    1280kB time=00:00:16.67 bitrate= 629.0kbits/s speed=0.774x    
frame=  419 fps= 19 q=-1.0 Lsize=    1538kB time=00:00:16.71 bitrate= 753.7kbits/s speed=0.753x    
video:1480kB audio:43kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.976535%
[libx264 @ 0000000002ebf4c0] frame I:2     Avg QP:13.37  size: 32816
[libx264 @ 0000000002ebf4c0] frame P:143   Avg QP:14.70  size:  6977
[libx264 @ 0000000002ebf4c0] frame B:274   Avg QP:13.65  size:  1647
[libx264 @ 0000000002ebf4c0] consecutive B-frames:  9.8%  7.6%  4.3% 78.3%
[libx264 @ 0000000002ebf4c0] mb I  I16..4: 38.7% 53.1%  8.1%
[libx264 @ 0000000002ebf4c0] mb P  I16..4: 17.5% 18.5%  0.2%  P16..4:  5.5%  0.4%  0.2%  0.0%  0.0%    skip:57.7%
[libx264 @ 0000000002ebf4c0] mb B  I16..4:  2.0%  0.7%  0.0%  B16..8:  3.7%  0.2%  0.0%  direct: 2.9%  skip:90.5%  L0:49.2% L1:48.4% BI: 2.4%
[libx264 @ 0000000002ebf4c0] 8x8 transform intra:48.1% inter:84.8%
[libx264 @ 0000000002ebf4c0] coded y,uvDC,uvAC intra: 3.9% 31.3% 4.5% inter: 0.7% 5.4% 0.2%
[libx264 @ 0000000002ebf4c0] i16 v,h,dc,p: 22% 68%  4%  6%
[libx264 @ 0000000002ebf4c0] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 29% 27% 42%  0%  0%  0%  0%  0%  0%
[libx264 @ 0000000002ebf4c0] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 31% 28% 24%  2%  4%  3%  4%  2%  3%
[libx264 @ 0000000002ebf4c0] i8c dc,h,v,p: 48% 39% 11%  2%
[libx264 @ 0000000002ebf4c0] Weighted P-Frames: Y:23.1% UV:22.4%
[libx264 @ 0000000002ebf4c0] ref P L0: 65.5%  9.2% 23.1%  1.9%  0.3%
[libx264 @ 0000000002ebf4c0] ref B L0: 71.1% 28.4%  0.5%
[libx264 @ 0000000002ebf4c0] ref B L1: 98.8%  1.2%
[libx264 @ 0000000002ebf4c0] kb/s:723.03
[aac @ 0000000002dc0980] Qavg: 47784.133
生成mp4视频为:E:\Test\projectVideos\temp\1557994804863.mp4

(3)播放时的截图
图片说明

(4) 播放视频jsp代码(使用的是video-js,但测试时也试了一下不加视频插件直接标签播放,结果一样)

<video id="playVideo"  class="video-js vjs-default-skin" controls ="true" preload="auto"  width="960" height="480"
                            poster="/images/${VIDEO.vpicture}" data-setup='{}'>
                                 <source src="/videos/${VIDEO.vpath}" type='video/mp4' />

    </video>

("/videos"为虚拟路径 实为本地存储地址)

希望好心人能够予以慷慨解答!~

补充:在转wmv格式到MP4格式时出现了

ConverVideoTest说:传入工具类的源视频为:E:\Test\projectVideos\temp\1558578421815.wmv
----接收到文件(E:\Test\projectVideos\temp\1558578421815.wmv)需要转换-------
----开始转文件(E:\Test\projectVideos\temp\1558578421815.wmv)-------------------------- 
源视频类型为:wmv
可以转换,统一转为mp4文件
调用了ffmpeg.exe工具
该文件夹存在。
ffmpeg输入的命令:E:\ffmpeg\bin\ffmpeg.exe-iE:\Test\projectVideos\temp\1558578421815.wmv-acodecaac-vcodeclibx264-yE:\Test\projectVideos\encvideos\1558578421815.mp4
ffmpeg version N-93678-g4b7166c9d5 Copyright (c) 2000-2019 the FFmpeg developers
  built with gcc 8.3.1 (GCC) 20190414
  configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-libdav1d --enable-libbluray --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libtheora --enable-libtwolame --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable-libvidstab --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa --enable-libspeex --enable-libxvid --enable-libaom --enable-libmfx --enable-amf --enable-ffnvcodec --enable-cuvid --enable-d3d11va --enable-nvenc --enable-nvdec --enable-dxva2 --enable-avisynth --enable-libopenmpt
  libavutil      56. 26.100 / 56. 26.100
  libavcodec     58. 52.100 / 58. 52.100
  libavformat    58. 27.103 / 58. 27.103
  libavdevice    58.  7.100 / 58.  7.100
  libavfilter     7. 50.100 /  7. 50.100
  libswscale      5.  4.100 /  5.  4.100
  libswresample   3.  4.100 /  3.  4.100
  libpostproc    55.  4.100 / 55.  4.100
Input #0, asf, from 'E:\Test\projectVideos\temp\1558578421815.wmv':
  Metadata:
    DeviceConformanceTemplate: M1
    WMFSDKNeeded    : 0.0.0.0000
    WM/WMADRCPeakReference: 7851
    WM/WMADRCPeakTarget: 7851
    WM/WMADRCAverageReference: 1027
    WM/WMADRCAverageTarget: 1027
    WMFSDKVersion   : 12.0.7601.17514
    IsVBR           : 0
  Duration: 00:00:16.58, bitrate: 1969 kb/s
    Stream #0:0(chi): Audio: wmapro (b[1][0][0] / 0x0162), 48000 Hz, stereo, fltp, 256 kb/s
    Stream #0:1(chi): Video: vc1 (Advanced) (WVC1 / 0x31435657), yuv420p, 1352x696 [SAR 1:1 DAR 169:87], 3400 kb/s, 30 tbr, 1k tbn, 60 tbc
Stream mapping:
  Stream #0:1 -> #0:0 (vc1 (native) -> h264 (libx264))
  Stream #0:0 -> #0:1 (wmapro (native) -> aac (native))
Press [q] to stop, [?] for help
[libx264 @ 0000000000531c80] using SAR=1/1
[libx264 @ 0000000000531c80] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX
[libx264 @ 0000000000531c80] profile Progressive High, level 3.2, 4:2:0, 8-bit
[libx264 @ 0000000000531c80] 264 - core 157 r2970 5493be8 - H.264/MPEG-4 AVC codec - Copyleft 2003-2019 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=6 lookahead_threads=1 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=crf mbtree=1 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
frame=   11 fps=0.0 q=0.0 size=       0kB time=-577014:32:22.77 bitrate=  -0.0kbits/s dup=1 drop=0 speed=N/A    
frame=   52 fps= 48 q=0.0 size=       0kB time=-577014:32:22.77 bitrate=  -0.0kbits/s dup=1 drop=0 speed=N/A    
frame=   85 fps= 54 q=0.0 size=       0kB time=-577014:32:22.77 bitrate=  -0.0kbits/s dup=1 drop=0 speed=N/A    
frame=  145 fps= 64 q=0.0 size=       0kB time=-577014:32:22.77 bitrate=  -0.0kbits/s dup=47 drop=0 speed=N/A    
frame=  171 fps= 61 q=0.0 size=       0kB time=-577014:32:22.77 bitrate=  -0.0kbits/s dup=55 drop=0 speed=N/A    
Too many packets buffered for output stream 0:0.
[libx264 @ 0000000000531c80] frame I:2     Avg QP:15.28  size: 56950
[libx264 @ 0000000000531c80] frame P:34    Avg QP:14.18  size:  1252
[libx264 @ 0000000000531c80] frame B:93    Avg QP:15.53  size:   140
[libx264 @ 0000000000531c80] consecutive B-frames:  3.1%  1.6%  2.3% 93.0%
[libx264 @ 0000000000531c80] mb I  I16..4: 14.9% 79.5%  5.6%
[libx264 @ 0000000000531c80] mb P  I16..4:  0.7%  1.1%  0.0%  P16..4:  4.1%  1.4%  1.3%  0.0%  0.0%    skip:91.4%
[libx264 @ 0000000000531c80] mb B  I16..4:  0.0%  0.0%  0.0%  B16..8:  3.6%  0.0%  0.0%  direct: 0.0%  skip:96.4%  L0:36.8% L1:63.2% BI: 0.0%
[libx264 @ 0000000000531c80] 8x8 transform intra:74.4% inter:80.1%
[libx264 @ 0000000000531c80] coded y,uvDC,uvAC intra: 38.4% 33.4% 20.3% inter: 0.5% 0.2% 0.0%
[libx264 @ 0000000000531c80] i16 v,h,dc,p: 61% 25%  9%  6%
[libx264 @ 0000000000531c80] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 32% 31% 21%  2%  3%  3%  3%  3%  3%
[libx264 @ 0000000000531c80] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 27% 32% 14%  4%  5%  5%  5%  4%  6%
[libx264 @ 0000000000531c80] i8c dc,h,v,p: 76% 13%  8%  4%
[libx264 @ 0000000000531c80] Weighted P-Frames: Y:0.0% UV:0.0%
[libx264 @ 0000000000531c80] ref P L0: 85.1%  6.8%  6.5%  1.6%
[libx264 @ 0000000000531c80] ref B L0: 48.1% 47.5%  4.4%
[libx264 @ 0000000000531c80] ref B L1: 93.2%  6.8%
[libx264 @ 0000000000531c80] kb/s:315.41
**Conversion failed!**
生成mp4视频为:E:\Test\projectVideos\temp1558578421815.mp4
===========视频转码结束,开始截图================= 
该文件夹存在。
截图命令:E:\ffmpeg\bin\ffmpeg.exe-ss00:00:01-iE:\Test\projectVideos\temp\1558578421815.wmv-y-fimage2-s154x90E:\Test\projectVideos\images\1558578421815.jpg
ffmpeg version N-93678-g4b7166c9d5 Copyright (c) 2000-2019 the FFmpeg developers
  built with gcc 8.3.1 (GCC) 20190414
  configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-libdav1d --enable-libbluray --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libtheora --enable-libtwolame --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable-libvidstab --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa --enable-libspeex --enable-libxvid --enable-libaom --enable-libmfx --enable-amf --enable-ffnvcodec --enable-cuvid --enable-d3d11va --enable-nvenc --enable-nvdec --enable-dxva2 --enable-avisynth --enable-libopenmpt
  libavutil      56. 26.100 / 56. 26.100
  libavcodec     58. 52.100 / 58. 52.100
  libavformat    58. 27.103 / 58. 27.103
  libavdevice    58.  7.100 / 58.  7.100
  libavfilter     7. 50.100 /  7. 50.100
  libswscale      5.  4.100 /  5.  4.100
  libswresample   3.  4.100 /  3.  4.100
  libpostproc    55.  4.100 / 55.  4.100
Input #0, asf, from 'E:\Test\projectVideos\temp\1558578421815.wmv':
  Metadata:
    DeviceConformanceTemplate: M1
    WMFSDKNeeded    : 0.0.0.0000
    WM/WMADRCPeakReference: 7851
    WM/WMADRCPeakTarget: 7851
    WM/WMADRCAverageReference: 1027
    WM/WMADRCAverageTarget: 1027
    WMFSDKVersion   : 12.0.7601.17514
    IsVBR           : 0
  Duration: 00:00:16.58, bitrate: 1969 kb/s
    Stream #0:0(chi): Audio: wmapro (b[1][0][0] / 0x0162), 48000 Hz, stereo, fltp, 256 kb/s
    Stream #0:1(chi): Video: vc1 (Advanced) (WVC1 / 0x31435657), yuv420p, 1352x696 [SAR 1:1 DAR 169:87], 3400 kb/s, 30 tbr, 1k tbn, 60 tbc
Stream mapping:
  Stream #0:1 -> #0:0 (vc1 (native) -> mjpeg (native))
Press [q] to stop, [?] for help
[swscaler @ 0000000002ecd4c0] deprecated pixel format used, make sure you did set range correctly
Output #0, image2, to 'E:\Test\projectVideos\images\1558578421815.jpg':
  Metadata:
    DeviceConformanceTemplate: M1
    WMFSDKNeeded    : 0.0.0.0000
    WM/WMADRCPeakReference: 7851
    WM/WMADRCPeakTarget: 7851
    WM/WMADRCAverageReference: 1027
    WM/WMADRCAverageTarget: 1027
    WMFSDKVersion   : 12.0.7601.17514
    IsVBR           : 0
    encoder         : Lavf58.27.103
    Stream #0:0(chi): Video: mjpeg, yuvj420p(pc), 154x90 [SAR 2535:2233 DAR 169:87], q=2-31, 200 kb/s, 30 fps, 30 tbn, 30 tbc
    Metadata:
      encoder         : Lavc58.52.100 mjpeg
    Side data:
      cpb: bitrate max/min/avg: 0/0/200000 buffer size: 0 vbv_delay: -1
[image2 @ 0000000000628e00] Could not get frame filename number 2 from pattern 'E:\Test\projectVideos\images\1558578421815.jpg'. Use '-frames:v 1' for a single image, or '-update' option, or use a pattern such as %03d within the filename.
av_interleaved_write_frame(): Invalid argument
frame=    2 fps=0.0 q=1.6 size=N/A time=00:00:00.06 bitrate=N/A speed=0.102x    
frame=    2 fps=0.0 q=1.6 Lsize=N/A time=00:00:00.06 bitrate=N/A speed=0.097x    
video:3kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown
Conversion failed!
截图进程结束
截图成功! 

即出现了Conversion failed!!!

1个回答

lz仔细去查一查ffmpeg转码命令参数,看是否缺少什么命令参数,然后用vlc工具去播放转码后的MP4文件,如果能正常播放说明你的前端页面调用video.js编程有问题。若vlc不能正常播放那就是ffmpeg转码时命令缺少参数。
另外,网页调用video.js播放视频流时要把网页发布到服务器上最好,我当时就遇到过这样的坑,直接的本地网页怎么也打不开视频

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
在用ffmpeg 2.0做一个转码工具的时候,转出的视频 视频播放速度变快
在用最新版 ffmpeg 2.0 转换视频的时候 首先遇到的一个问题是 在 avformat_write_header(pFormatCtxOut, NULL); 处报错:[mp4 @ 0x8183600] track 1: codec frame size is not set 虽然报了这个错误 但是还是能够转码,只是转出来的视频本来30秒 但是15秒左右就没有了,应该没有丢帧,只不过画面播放得特别快,就像快进一样。下面是源码,求大神 出场--- // Created by showself on 13-8-19. // Copyright (c) 2013年 showself. All rights reserved. // #include <stdio.h> #include "test2.h" #include <stdlib.h> #include <stdio.h> #include <string.h> #include <math.h> #include <libavutil/opt.h> #include <libavutil/mathematics.h> #include <libavformat/avformat.h> #include <libswscale/swscale.h> #include <libswresample/swresample.h> static AVStream *add_stream(AVFormatContext *oc, AVCodec **codec, enum AVCodecID codec_id); void transTest2(const char *src, const char *dst) { const char *filename; const char *outfilename; AVFormatContext *pFormatCtxIn,*pFormatCtxOut; AVInputFormat *inFmt; AVOutputFormat *outFmt; AVStream *audio_st,*video_st; AVFrame *pFrameIn; AVCodecContext *pVideoCodecCtxIn,*pAudioCodecCtxIn,*pVideoCodecCtxOut,*pAudioCodecCtxOut; AVCodec *pVideoCodecIn,*pAudioCodecIn,*pVideoCodecOut,*pAudioCodecOut; int i ,videoStream,audioStream;; int ret = 0; AVPacket packet; // int frame_count; /* Initialize libavcodec, and register all codecs and formats. */ av_register_all(); if (src == NULL) { printf("no input file"); return; } filename = src; outfilename = dst; /*get inout format*/ inFmt = av_find_input_format("MOV"); /*allocate the input media context*/ pFormatCtxIn = avformat_alloc_context(); if (pFormatCtxIn == NULL) { printf("allocate the input media context error"); return; } // open a video if (avformat_open_input(&pFormatCtxIn, filename, inFmt, NULL)) { return; } // get stream info if (avformat_find_stream_info(pFormatCtxIn, NULL)<0) { return; } // get streams index from a video videoStream = -1; audioStream = -1; for (i=0; i<pFormatCtxIn->nb_streams; i++) { if(pFormatCtxIn->streams[i]->codec->codec_type==AVMEDIA_TYPE_VIDEO) { printf("%d stream 为视频\n",i); videoStream=i; } if (pFormatCtxIn->streams[i]->codec->codec_type == AVMEDIA_TYPE_AUDIO) { audioStream = i;// 音轨位置 printf("%d stream 为音轨\n",i); } } if(videoStream==-1) return ; // Didn't find a video stream or Did not find a audio stream if (audioStream == -1) { return; } // get decode codec contex pointer pVideoCodecCtxIn = pFormatCtxIn->streams[videoStream]->codec; pAudioCodecCtxIn = pFormatCtxIn->streams[audioStream]->codec; // get decode codec pointer pVideoCodecIn = avcodec_find_decoder(pVideoCodecCtxIn->codec_id); if (pVideoCodecIn == NULL) { return; } pAudioCodecIn = avcodec_find_decoder(pAudioCodecCtxIn->codec_id); if (pAudioCodecIn == NULL) { return; } // open codec if (avcodec_open2(pVideoCodecCtxIn, pVideoCodecIn, NULL)<0) { return; } if (avcodec_open2(pAudioCodecCtxIn, pAudioCodecIn, NULL)<0) { return; } // allocate input frame pFrameIn = av_frame_alloc(); if (pFrameIn == NULL) { return; } /* allocate the output media context */ // // method 1 // avformat_alloc_output_context2(&pFormatCtxOut, NULL, NULL, outfilename); // if (!pFormatCtxOut) { // printf("Could not deduce output format from file extension: using MPEG.\n"); // avformat_alloc_output_context2(&pFormatCtxOut, NULL, "mpeg", outfilename); // } // if (!pFormatCtxOut) { // return ; // } // method 2 outFmt = av_guess_format(NULL, outfilename, NULL); if (outFmt == NULL) { return; } pFormatCtxOut = avformat_alloc_context(); if (pFormatCtxOut == NULL) { return; } pFormatCtxOut->oformat = outFmt; sprintf(pFormatCtxOut->filename, "%s",outfilename); // get output codec from AVOutputContext pVideoCodecOut = avcodec_find_encoder(outFmt->video_codec); if (pVideoCodecOut == NULL) { return; } pAudioCodecOut = avcodec_find_encoder(outFmt->audio_codec); if (pAudioCodecOut == NULL) { return; } /* Add the audio and video streams using the default format codecs * and initialize the codecs. */ video_st = NULL; audio_st = NULL; // 添加一条视频流 if (outFmt->video_codec != AV_CODEC_ID_NONE) { // 解码 源视频流 video_st = avformat_new_stream(pFormatCtxOut, pVideoCodecOut); if (video_st == NULL) { return; } pVideoCodecCtxOut = video_st->codec; pVideoCodecCtxOut->codec_type = AVMEDIA_TYPE_VIDEO; pVideoCodecCtxOut->codec_id = outFmt->video_codec; pVideoCodecCtxOut->bit_rate = pVideoCodecCtxIn->bit_rate/2; pVideoCodecCtxOut->width = pVideoCodecCtxIn->width; pVideoCodecCtxOut->height = pVideoCodecCtxIn->height; pVideoCodecCtxOut->time_base.den = 25; pVideoCodecCtxOut->time_base.num = 1; pVideoCodecCtxOut->gop_size = 12; pVideoCodecCtxOut->pix_fmt = PIX_FMT_YUV420P; if (pVideoCodecCtxOut->codec_id == AV_CODEC_ID_MPEG2VIDEO) { /* just for testing, we also add B frames */ pVideoCodecCtxOut->max_b_frames =2; } if (pVideoCodecCtxOut->codec_id == AV_CODEC_ID_MPEG1VIDEO) { /* Needed to avoid using macroblocks in which some coeffs overflow. * This does not happen with normal video, it just happens here as * the motion of the chroma plane does not match the luma plane. */ pVideoCodecCtxOut->mb_decision = 2; } } if (pFormatCtxOut->oformat->flags & AVFMT_GLOBALHEADER) { pVideoCodecCtxOut->flags |= CODEC_FLAG_GLOBAL_HEADER; } // 添加一条音频流 if (outFmt->audio_codec != AV_CODEC_ID_NONE) { audio_st = avformat_new_stream(pFormatCtxOut, pAudioCodecOut); if (audio_st == NULL) { return; } pAudioCodecCtxOut = audio_st->codec; pAudioCodecCtxOut->codec_id = outFmt->audio_codec; pAudioCodecCtxOut->coder_type = AVMEDIA_TYPE_AUDIO; pAudioCodecCtxOut->sample_fmt = pAudioCodecCtxIn->sample_fmt; pAudioCodecCtxOut->bit_rate = pAudioCodecCtxIn->bit_rate; pAudioCodecCtxOut->sample_rate = pAudioCodecCtxIn->sample_rate; pAudioCodecCtxOut->channels = pAudioCodecCtxIn->channels; pAudioCodecCtxOut->channel_layout = pAudioCodecCtxIn->channel_layout; } if (pFormatCtxOut->oformat->flags & AVFMT_GLOBALHEADER) { pAudioCodecCtxOut->flags |= CODEC_FLAG_GLOBAL_HEADER; } // open encode codec if (avcodec_open2(pVideoCodecCtxOut, pVideoCodecOut, NULL)<0) { return; } // if(avcodec_open2(pAudioCodecCtxOut, pAudioCodecOut, NULL)<0) // { // printf("audio encode codec not found\n"); // return; // } av_dump_format(pFormatCtxOut, 0, outfilename, 1); // open the output file, if needed if (!(pFormatCtxOut->flags & AVFMT_NOFILE)) { // if (avio_open(&pFormatCtxOut->pb, outfilename, AVIO_FLAG_WRITE) < 0) { fprintf(stderr, "Could not open '%s'\n", outfilename); return; } } printf("1\n"); // write the stream header, if any // [mp4 @ 0x99a8a00] track 1: codec frame size is not set? avformat_write_header(pFormatCtxOut, NULL); printf("2\n"); av_init_packet(&packet); int frameFinished; int videoFrameCount=0,audioFrameCount=0; int got_packet,frames=0; while (av_read_frame(pFormatCtxIn, &packet)>=0) {// 只要有帧 就读到packet中 printf("video frame %d audio frame %d dts-%lld pts-%lld \n",videoFrameCount,audioFrameCount,packet.dts,packet.pts); frames ++; /*decodec and codec*/ if (packet.stream_index == videoStream) { ret = avcodec_decode_video2(pVideoCodecCtxIn, pFrameIn, &frameFinished, &packet); videoFrameCount++; if (frameFinished) { // pFrameOut->data[0] = pFrameIn->data[0]; // pFrameOut->data[1] = pFrameIn->data[1]; // pFrameOut->data[2] = pFrameIn->data[2]; // pFrameOut->linesize[0] = pFrameIn->linesize[0]; // pFrameOut->linesize[1] = pFrameIn->linesize[1]; // pFrameOut->linesize[2] = pFrameIn->linesize[2]; if (outFmt->flags & AVFMT_RAWPICTURE) { // 不改变图片尺寸 AVPacket pkt; av_init_packet(&pkt); pkt.flags |= AV_PKT_FLAG_KEY; pkt.stream_index = video_st->index; pkt.data = (uint8_t *)pFormatCtxIn; pkt.size = sizeof(AVPicture); av_write_frame(pFormatCtxOut, &pkt); } else // 需要改变尺寸 { AVPacket pkt = {0}; av_init_packet(&pkt); ret = avcodec_encode_video2(pVideoCodecCtxOut, &pkt, pFrameIn, &got_packet); if (ret<0) { return; } /* If size is zero, it means the image was buffered. */ if (!ret && got_packet && pkt.size) { printf("frame dts-%lld pts-%lld \n",packet.dts,packet.pts); pkt.stream_index = video_st->index; pkt.pts = pVideoCodecCtxOut->coded_frame->pts; if(pVideoCodecCtxOut->coded_frame->key_frame) // 如果是关键帧 pkt.flags |= AV_PKT_FLAG_KEY; /* Write the compressed frame to the media file. */ // ret = av_interleaved_write_frame(pFormatCtxOut, &pkt); av_write_frame(pFormatCtxOut, &pkt); } else { ret = 0; } } } } else if(packet.stream_index == audioStream) { audioFrameCount ++; printf("frame dts-%lld pts-%lld \n",packet.dts,packet.pts); av_write_frame(pFormatCtxOut, &packet); } // /* get the delayed frames */ // for (got_packet = 1; got_packet; i++) { // got_output ’Ê // fflush(stdout); // ret = avcodec_encode_video2(pVideoCodecCtxOut, &packet, NULL, &got_packet); // if (ret < 0) { // fprintf(stderr, "Error encoding frame\n"); // exit(1); // } // if (got_packet) { // printf("Write frame %3d (size=%5d)\n", i, packet.size); // av_write_frame(pFormatCtxOut, &packet); // } // } } av_write_trailer(pFormatCtxOut); avcodec_close(pVideoCodecCtxIn); avcodec_close(pVideoCodecCtxOut); avcodec_close(pAudioCodecCtxIn); avcodec_close(pAudioCodecCtxOut); }
java 调用ffmpeg对视频进行转码
java 调用ffmpeg对视频进行转码 ,只有当全部转换成mp4文件时,该视频才能播放。可不可以边转码边播放该视频?是要调用qt-faststart吗?如果调用它,那么如何使用qt-faststart.exe文件?
java运用FFmpeg实现本地两个MP4视频文件的合并
java如何运用FFmpeg实现本地两个MP4视频文件的合并
Android 如何使用ffmpeg合并MP4视频
用ffmpeg合并裁减后的视频,视频都是MP4格式的,请问该怎么合并呢?我在网上看到的都是命令,但是不会在android中用,刚刚接触ffpeg,什么都不懂,求资料和帮助!!!谢谢
android使用ffmpeg,通过图片和视频合成mp4
最近接到个任务 就是用使用android app 把图片和视频合成mp4文件,文件的时长要根据mp3文件来定, 研究了好几天 实在没有头绪,求大神解惑 ,我现在的情况就是找个找几个库 (因导入ffmpeg总是出错)但还是无法解决 合成后的视频大小还是1-2秒 肯定不是mp3的时间 求大神帮个忙 或者给个思路 问题1.android studio 想制作这种功能是否使用第三方库是否能完成 问题2.怎么合成后 视频的时长是mp3的 而且能播放出mp3的声音。 能帮我解决可付费
ffmpeg编码一个mp4格式的视频文件
编码的mp4文件可以用VLC播放器播放,但是不能用Window Media播放,查看详细信息的时候也没有相关比特率的信息。个人觉得是视频文件的包头写的不对,但是mp4格式的视频文件的包头该如何写呢?希望最好给个示例代码,这样便于理解,谢谢。
servlet ffmpeg转码为什么会停止不动
先转一部分,然后不转码了,就像堵塞一样,重启服务器又开始动了
ffmpeg合成MP4格式视频
入手ffmpeg大概2周时间,在H264和aac合成MP4文件遇到一个问题,MP4文件使用QQ影音播放没有声音,使用VLC播放有声音, 我在程序里面打印 AVOutputFormat *audio_codec = ofmt_ctx->oformat; if(audio_codec->audio_codec == AV_CODEC_ID_AAC) { printf("TAG----%d---%d--%d\n", st->codec->sample_rate, st->codec->channels,st->codec->sample_fmt); if(st->codec->codec_id == AV_CODEC_ID_AAC) printf("aac-------------------\n"); } else { printf("NO AAC\n"); } 显示的格式为aac 采样率为44100 及bit为8,都是正确的,请教下大神这是什么原因造成的? 下面为源码部分 开发环境为ffmpeg3.0.2,linux 折腾了2周 ,还是没有进展 #include <stdio.h> #define __STDC_CONSTANT_MACROS #include <libavformat/avformat.h> /* FIX: H.264 in some container format (FLV, MP4, MKV etc.) need "h264_mp4toannexb" bitstream filter (BSF) *Add SPS,PPS in front of IDR frame *Add start code ("0,0,0,1") in front of NALU H.264 in some container (MPEG2TS) don't need this BSF. */ //'1': Use H.264 Bitstream Filter #define USE_H264BSF 0 /* FIX:AAC in some container format (FLV, MP4, MKV etc.) need "aac_adtstoasc" bitstream filter (BSF) */ //'1': Use AAC Bitstream Filter #define USE_AACBSF 1 int main(int argc, char* argv[]) { AVOutputFormat *ofmt = NULL; //Input AVFormatContext and Output AVFormatContext AVFormatContext *ifmt_ctx_v = NULL, *ifmt_ctx_a = NULL,*ofmt_ctx = NULL; AVPacket pkt; int ret, i; int videoindex_v=-1,videoindex_out=-1; int audioindex_a=-1,audioindex_out=-1; int frame_index=0; int64_t cur_pts_v=0,cur_pts_a=0; //const char *in_filename_v = "cuc_ieschool.ts";//Input file URL const char *in_filename_v = "22.h264"; //const char *in_filename_a = "cuc_ieschool.mp3"; //const char *in_filename_a = "gowest.m4a"; const char *in_filename_a = "22.aac"; //const char *in_filename_a = "huoyuanjia.mp3"; const char *out_filename = "22.mp4";//Output file URL av_register_all(); //Input #if 1 if ((ret = avformat_open_input(&ifmt_ctx_v, in_filename_v, 0, 0)) < 0) { printf( "Could not open input file."); goto end; } if ((ret = avformat_find_stream_info(ifmt_ctx_v, 0)) < 0) { printf( "Failed to retrieve input stream information"); goto end; } #endif if ((ret = avformat_open_input(&ifmt_ctx_a, in_filename_a, 0, 0)) < 0) { printf( "Could not open input file."); goto end; } if ((ret = avformat_find_stream_info(ifmt_ctx_a, 0)) < 0) { printf( "Failed to retrieve input stream information"); goto end; } printf("===========Input Information==========\n"); av_dump_format(ifmt_ctx_v, 0, in_filename_v, 0); av_dump_format(ifmt_ctx_a, 0, in_filename_a, 0); printf("======================================\n"); //Output avformat_alloc_output_context2(&ofmt_ctx, NULL, NULL, out_filename); if (!ofmt_ctx) { printf( "Could not create output context\n"); ret = AVERROR_UNKNOWN; goto end; } ofmt_ctx->oformat->video_codec = AV_CODEC_ID_H264; ofmt_ctx->oformat->audio_codec = AV_CODEC_ID_AAC; ofmt = ofmt_ctx->oformat; #if 1 for (i = 0; i < ifmt_ctx_v->nb_streams; i++) { //Create output AVStream according to input AVStream if(ifmt_ctx_v->streams[i]->codec->codec_type==AVMEDIA_TYPE_VIDEO){ AVStream *in_stream = ifmt_ctx_v->streams[i]; AVStream *out_stream = avformat_new_stream(ofmt_ctx, in_stream->codec->codec); videoindex_v=i; if (!out_stream) { printf( "Failed allocating output stream\n"); ret = AVERROR_UNKNOWN; goto end; } videoindex_out=out_stream->index; //Copy the settings of AVCodecContext if (avcodec_copy_context(out_stream->codec, in_stream->codec) < 0) { printf( "Failed to copy context from input to output stream codec context\n"); goto end; } out_stream->codec->codec_tag = 0; if (ofmt_ctx->oformat->flags & AVFMT_GLOBALHEADER) out_stream->codec->flags |= CODEC_FLAG_GLOBAL_HEADER; break; } } #endif for (i = 0; i < ifmt_ctx_a->nb_streams; i++) { //Create output AVStream according to input AVStream if(ifmt_ctx_a->streams[i]->codec->codec_type==AVMEDIA_TYPE_AUDIO){ AVStream *in_stream = ifmt_ctx_a->streams[i]; AVStream *out_stream = avformat_new_stream(ofmt_ctx, in_stream->codec->codec); // add_stream(OutputStream * ost, AVFormatContext * oc, AVCodec * * codec, enum AVCodecID codec_id) audioindex_a=i; if (!out_stream) { printf( "Failed allocating output stream\n"); ret = AVERROR_UNKNOWN; goto end; } audioindex_out=out_stream->index; //Copy the settings of AVCodecContext if (avcodec_copy_context(out_stream->codec, in_stream->codec) < 0) { printf( "Failed to copy context from input to output stream codec context\n"); goto end; } out_stream->codec->codec_tag = 0; if (ofmt_ctx->oformat->flags & AVFMT_GLOBALHEADER) out_stream->codec->flags |= CODEC_FLAG_GLOBAL_HEADER; break; } } printf("==========Output Information==========\n"); av_dump_format(ofmt_ctx, 0, out_filename, 1); printf("======================================\n"); //Open output file if (!(ofmt->flags & AVFMT_NOFILE)) { if (avio_open(&ofmt_ctx->pb, out_filename, AVIO_FLAG_WRITE) < 0) { printf( "Could not open output file '%s'", out_filename); goto end; } } //Write file header if (avformat_write_header(ofmt_ctx, NULL) < 0) { printf( "Error occurred when opening output file\n"); goto end; } //FIX #if USE_H264BSF AVBitStreamFilterContext* h264bsfc = av_bitstream_filter_init("h264_mp4toannexb"); #endif #if USE_AACBSF AVBitStreamFilterContext* aacbsfc = av_bitstream_filter_init("aac_adtstoasc"); #endif while (1) { AVFormatContext *ifmt_ctx; int stream_index=0; AVStream *in_stream, *out_stream; //Get an AVPacket #if 1 if(av_compare_ts(cur_pts_v,ifmt_ctx_v->streams[videoindex_v]->time_base,cur_pts_a,ifmt_ctx_a->streams[audioindex_a]->time_base) <= 0){ ifmt_ctx=ifmt_ctx_v; stream_index=videoindex_out; if(av_read_frame(ifmt_ctx, &pkt) >= 0){ do{ in_stream = ifmt_ctx->streams[pkt.stream_index]; out_stream = ofmt_ctx->streams[stream_index]; if(pkt.stream_index==videoindex_v){ //FIX:No PTS (Example: Raw H.264) //Simple Write PTS if(pkt.pts==AV_NOPTS_VALUE){ //Write PTS AVRational time_base1=in_stream->time_base; //Duration between 2 frames (us) int64_t calc_duration=(double)AV_TIME_BASE/av_q2d(in_stream->r_frame_rate); //Parameters pkt.pts=(double)(frame_index*calc_duration)/(double)(av_q2d(time_base1)*AV_TIME_BASE); pkt.dts=pkt.pts; pkt.duration=(double)calc_duration/(double)(av_q2d(time_base1)*AV_TIME_BASE); frame_index++; } cur_pts_v=pkt.pts; break; } }while(av_read_frame(ifmt_ctx, &pkt) >= 0); }else{ break; } }else #endif { ifmt_ctx=ifmt_ctx_a; stream_index=audioindex_out; if(av_read_frame(ifmt_ctx, &pkt) >= 0){ do{ in_stream = ifmt_ctx->streams[pkt.stream_index]; out_stream = ofmt_ctx->streams[stream_index]; if(pkt.stream_index==audioindex_a){ //FIX:No PTS //Simple Write PTS if(pkt.pts==AV_NOPTS_VALUE){ //Write PTS AVRational time_base1=in_stream->time_base; //Duration between 2 frames (us) int64_t calc_duration=(double)AV_TIME_BASE/av_q2d(in_stream->r_frame_rate); //Parameters pkt.pts=(double)(frame_index*calc_duration)/(double)(av_q2d(time_base1)*AV_TIME_BASE); pkt.dts=pkt.pts; pkt.duration=(double)calc_duration/(double)(av_q2d(time_base1)*AV_TIME_BASE); frame_index++; } cur_pts_a=pkt.pts; break; } }while(av_read_frame(ifmt_ctx, &pkt) >= 0); }else{ break; } } //FIX:Bitstream Filter #if USE_H264BSF av_bitstream_filter_filter(h264bsfc, in_stream->codec, NULL, &pkt.data, &pkt.size, pkt.data, pkt.size, 0); #endif #if USE_AACBSF av_bitstream_filter_filter(aacbsfc, out_stream->codec, NULL, &pkt.data, &pkt.size, pkt.data, pkt.size, 0); #endif //Convert PTS/DTS pkt.pts = av_rescale_q_rnd(pkt.pts, in_stream->time_base, out_stream->time_base, (enum AVRounding)(AV_ROUND_NEAR_INF|AV_ROUND_PASS_MINMAX)); pkt.dts = av_rescale_q_rnd(pkt.dts, in_stream->time_base, out_stream->time_base, (enum AVRounding)(AV_ROUND_NEAR_INF|AV_ROUND_PASS_MINMAX)); pkt.duration = av_rescale_q(pkt.duration, in_stream->time_base, out_stream->time_base); pkt.pos = -1; pkt.stream_index=stream_index; printf("Write 1 Packet. size:%5d\tpts:%lld\n",pkt.size,pkt.pts); //Write if (av_interleaved_write_frame(ofmt_ctx, &pkt) < 0) { printf( "Error muxing packet\n"); break; } av_free_packet(&pkt); } //Write file trailer av_write_trailer(ofmt_ctx); #if USE_H264BSF av_bitstream_filter_close(h264bsfc); #endif #if USE_AACBSF av_bitstream_filter_close(aacbsfc); #endif end: avformat_close_input(&ifmt_ctx_v); avformat_close_input(&ifmt_ctx_a); /* close output */ if (ofmt_ctx && !(ofmt->flags & AVFMT_NOFILE)) avio_close(ofmt_ctx->pb); avformat_free_context(ofmt_ctx); if (ret < 0 && ret != AVERROR_EOF) { printf( "Error occurred.\n"); return -1; } return 0; }
通过java上传视频,还有进行视频转码如何知道视频是否已经上传成功,还有视频转码是否已经转换完成
RT,通过java上传视频,还有通过ffmpeg进行视频转码如何知道视频是否已经上传成功,还有视频转码是否已经转换完成
求ffmpeg把flv转为MP4的代码
研究半天研究出来的代码ffmpeg.exe -i D:\\Test\\1.flv -qscale 6 -ar 22050 -y D:\\Test\\3.mp4,结果这段代码相当于把视频的后缀名改了一下,并没有实质性的改变视屏编码,用video标签手机端一样没法看,求代码
在java中使用ffmpeg的问题
我要实现的是微信公众号网页中用户可以把手机录的视频上传到服务器,目前存在的问题是ios的mov格式视频在安卓手机端无法通过video标签播放。 于是我在网上找到可以通过java调用ffmpeg.exe实现转码的方法,但是由于对ffmpeg不熟悉,故而有一些问题不太明白。 1、html5上传文件可以通过二进制流来上传,数据到服务器后写成文件。然而ffmpeg肯定也是需要读取文件然后解码、再编码.....,那么我可以直接调用ffmpeg来接收html5上传过来的二进制流,然后转码吗? 2、有其他的网页插件或者方式来实现手机浏览器播放mov和MP4格式的视频吗?除了flash。
ffmpeg如何快速裁剪视频?
如题,如何使用FFmpeg快速的裁剪视频到指定的宽高,频率?-y -i /Video/output11.mp4 -acodec copy -vf scale=853:480,crop=480:480:280:0 -s 480x480 /Video/output1.mp4 这个命令怎么优化才能更快?
java通过ffmpeg 实现视频水印的各种参数设置
java通过ffmpeg 实现视频水印的各种参数设置。例如,视频尺寸,位置,大小,透明度,旋转。。。
ffmpeg.exe使用命令行进行录屏,为什么在ie上不能进行播放?
视频编码为H264,保存文件为mp4格式,同样的在media player上也不能进行播放 这是我录屏的命令:ffmpeg.exe -f gdigrab -i desktop -r 15 -vf lutyuv="u=128:v=128" -vcodec libx264 rest.mp4 另外,我尝试了录制成mpeg格式,再进行转码mp4则不存在不能播放的问题
Java 使用ffmpeg进行视频转换问题
使用Java代码进行视频格式转换,使用了ffmpeg+mencoder,但是转换出来的视频大小为50KB左右,也就是为空。对此,我在命令行下进行了测试,发现转出来的视频大小也是50KB左右,这个是什么原因? 命令如下: ffmpeg -i 被转资源 目标资源 给出其他视频格式转mp4的转换代码最好,谢谢啦。
ffmpeg分离mp4文件中h265流
目前,在linux平台上使用ffmpeg完成mp4的demuxer功能,拿到原始ES流,送入硬件解码器解码. 针对h264,目前ffmpeg通过流过滤器av_bitstream_filter_init("h264_mp4toannexb");可以拿到NALU模块的PSP,PPS等数据。 但是目前针对h265编码格式的流,不知道如何处理,求高人指教? 目前,我想从GPAC源码中mp42ts模块中找解决办法,gpac从mp4中拿到es数据肯定会加NALU信息的,但是代码没怎么读懂!
java上传视频过程中进行视频转码如何做
我现在能做的就是有了完整的视频之后,用ffmpeg才能转成MP4 而不是上传的过程中,边上传边转码,有这方面懂的人么?求指点一下
ffmpeg获取mp4文件中的第一个视频帧的时间戳是怎么设定的?
ffmpeg获取mp4文件中的第一个视频帧的时间戳是怎么设定的?是在mp4录制时指定的吗?从第二帧开始mp4writesample的时间戳是与前一帧的差值,第一帧的时间戳是哪来的?
求一个使用FFmpeg实现录制视频的Demo
需要使用FFmpeg录制视频,但感觉FFmpeg有点难。。。
相见恨晚的超实用网站
搞学习 知乎:www.zhihu.com 简答题:http://www.jiandati.com/ 网易公开课:https://open.163.com/ted/ 网易云课堂:https://study.163.com/ 中国大学MOOC:www.icourse163.org 网易云课堂:study.163.com 哔哩哔哩弹幕网:www.bilibili.com 我要自学网:www.51zxw
花了20分钟,给女朋友们写了一个web版群聊程序
参考博客 [1]https://www.byteslounge.com/tutorials/java-ee-html5-websocket-example
爬虫福利二 之 妹子图网MM批量下载
爬虫福利一:27报网MM批量下载    点击 看了本文,相信大家对爬虫一定会产生强烈的兴趣,激励自己去学习爬虫,在这里提前祝:大家学有所成! 目标网站:妹子图网 环境:Python3.x 相关第三方模块:requests、beautifulsoup4 Re:各位在测试时只需要将代码里的变量 path 指定为你当前系统要保存的路径,使用 python xxx.py 或IDE运行即可。
字节跳动视频编解码面经
引言 本文主要是记录一下面试字节跳动的经历。 三四月份投了字节跳动的实习(图形图像岗位),然后hr打电话过来问了一下会不会opengl,c++,shador,当时只会一点c++,其他两个都不会,也就直接被拒了。 七月初内推了字节跳动的提前批,因为内推没有具体的岗位,hr又打电话问要不要考虑一下图形图像岗,我说实习投过这个岗位不合适,不会opengl和shador,然后hr就说秋招更看重基础。我当时
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...
linux系列之常用运维命令整理笔录
本博客记录工作中需要的linux运维命令,大学时候开始接触linux,会一些基本操作,可是都没有整理起来,加上是做开发,不做运维,有些命令忘记了,所以现在整理成博客,当然vi,文件操作等就不介绍了,慢慢积累一些其它拓展的命令,博客不定时更新 顺便拉下票,我在参加csdn博客之星竞选,欢迎投票支持,每个QQ或者微信每天都可以投5票,扫二维码即可,http://m234140.nofollow.ax.
比特币原理详解
一、什么是比特币 比特币是一种电子货币,是一种基于密码学的货币,在2008年11月1日由中本聪发表比特币白皮书,文中提出了一种去中心化的电子记账系统,我们平时的电子现金是银行来记账,因为银行的背后是国家信用。去中心化电子记账系统是参与者共同记账。比特币可以防止主权危机、信用风险。其好处不多做赘述,这一层面介绍的文章很多,本文主要从更深层的技术原理角度进行介绍。 二、问题引入 假设现有4个人...
Python 基础(一):入门必备知识
目录1 标识符2 关键字3 引号4 编码5 输入输出6 缩进7 多行8 注释9 数据类型10 运算符10.1 常用运算符10.2 运算符优先级 1 标识符 标识符是编程时使用的名字,用于给变量、函数、语句块等命名,Python 中标识符由字母、数字、下划线组成,不能以数字开头,区分大小写。 以下划线开头的标识符有特殊含义,单下划线开头的标识符,如:_xxx ,表示不能直接访问的类属性,需通过类提供
这30个CSS选择器,你必须熟记(上)
关注前端达人,与你共同进步CSS的魅力就是让我们前端工程师像设计师一样进行网页的设计,我们能轻而易举的改变颜色、布局、制作出漂亮的影音效果等等,我们只需要改几行代码,不需...
国产开源API网关项目进入Apache孵化器:APISIX
点击蓝色“程序猿DD”关注我回复“资源”获取独家整理的学习资料!近日,又有一个开源项目加入了这个Java开源界大名鼎鼎的Apache基金会,开始进行孵化器。项目名称:AP...
程序员接私活怎样防止做完了不给钱?
首先跟大家说明一点,我们做 IT 类的外包开发,是非标品开发,所以很有可能在开发过程中会有这样那样的需求修改,而这种需求修改很容易造成扯皮,进而影响到费用支付,甚至出现做完了项目收不到钱的情况。 那么,怎么保证自己的薪酬安全呢? 我们在开工前,一定要做好一些证据方面的准备(也就是“讨薪”的理论依据),这其中最重要的就是需求文档和验收标准。一定要让需求方提供这两个文档资料作为开发的基础。之后开发
网页实现一个简单的音乐播放器(大佬别看。(⊙﹏⊙))
今天闲着无事,就想写点东西。然后听了下歌,就打算写个播放器。 于是乎用h5 audio的加上js简单的播放器完工了。 欢迎 改进 留言。 演示地点跳到演示地点 html代码如下`&lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head&gt; &lt;title&gt;music&lt;/title&gt; &lt;meta charset="utf-8"&gt
Python十大装B语法
Python 是一种代表简单思想的语言,其语法相对简单,很容易上手。不过,如果就此小视 Python 语法的精妙和深邃,那就大错特错了。本文精心筛选了最能展现 Python 语法之精妙的十个知识点,并附上详细的实例代码。如能在实战中融会贯通、灵活使用,必将使代码更为精炼、高效,同时也会极大提升代码B格,使之看上去更老练,读起来更优雅。 1. for - else 什么?不是 if 和 else 才
数据库优化 - SQL优化
前面一篇文章从实例的角度进行数据库优化,通过配置一些参数让数据库性能达到最优。但是一些“不好”的SQL也会导致数据库查询变慢,影响业务流程。本文从SQL角度进行数据库优化,提升SQL运行效率。 判断问题SQL 判断SQL是否有问题时可以通过两个表象进行判断: 系统级别表象 CPU消耗严重 IO等待严重 页面响应时间过长
2019年11月中国大陆编程语言排行榜
2019年11月2日,我统计了某招聘网站,获得有效程序员招聘数据9万条。针对招聘信息,提取编程语言关键字,并统计如下: 编程语言比例 rank pl_ percentage 1 java 33.62% 2 c/c++ 16.42% 3 c_sharp 12.82% 4 javascript 12.31% 5 python 7.93% 6 go 7.25% 7
通俗易懂地给女朋友讲:线程池的内部原理
餐厅的约会 餐盘在灯光的照耀下格外晶莹洁白,女朋友拿起红酒杯轻轻地抿了一小口,对我说:“经常听你说线程池,到底线程池到底是个什么原理?”我楞了一下,心里想女朋友今天是怎么了,怎么突然问出这么专业的问题,但做为一个专业人士在女朋友面前也不能露怯啊,想了一下便说:“我先给你讲讲我前同事老王的故事吧!” 大龄程序员老王 老王是一个已经北漂十多年的程序员,岁数大了,加班加不动了,升迁也无望,于是拿着手里
经典算法(5)杨辉三角
杨辉三角 是经典算法,这篇博客对它的算法思想进行了讲解,并有完整的代码实现。
编写Spring MVC控制器的14个技巧
本期目录 1.使用@Controller构造型 2.实现控制器接口 3.扩展AbstractController类 4.为处理程序方法指定URL映射 5.为处理程序方法指定HTTP请求方法 6.将请求参数映射到处理程序方法 7.返回模型和视图 8.将对象放入模型 9.处理程序方法中的重定向 10.处理表格提交和表格验证 11.处理文件上传 12.在控制器中自动装配业务类 ...
腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹?
昨天,有网友私信我,说去阿里面试,彻底的被打击到了。问了为什么网上大量使用ThreadLocal的源码都会加上private static?他被难住了,因为他从来都没有考虑过这个问题。无独有偶,今天笔者又发现有网友吐槽了一道腾讯的面试题,我们一起来看看。 腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹? 在互联网职场论坛,一名程序员发帖求助到。二面腾讯,其中一个算法题:64匹
面试官:你连RESTful都不知道我怎么敢要你?
面试官:了解RESTful吗? 我:听说过。 面试官:那什么是RESTful? 我:就是用起来很规范,挺好的 面试官:是RESTful挺好的,还是自我感觉挺好的 我:都挺好的。 面试官:… 把门关上。 我:… 要干嘛?先关上再说。 面试官:我说出去把门关上。 我:what ?,夺门而去 文章目录01 前言02 RESTful的来源03 RESTful6大原则1. C-S架构2. 无状态3.统一的接
求小姐姐抠图竟遭白眼?痛定思痛,我决定用 Python 自力更生!
点击蓝色“Python空间”关注我丫加个“星标”,每天一起快乐的学习大家好,我是 Rocky0429,一个刚恰完午饭,正在用刷网页浪费生命的蒟蒻...一堆堆无聊八卦信息的网页内容慢慢使我的双眼模糊,一个哈欠打出了三斤老泪,就在此时我看到了一张图片:是谁!是谁把我女朋友的照片放出来的!awsl!太好看了叭...等等,那个背景上的一堆鬼画符是什么鬼?!真是看不下去!叔叔婶婶能忍,隔壁老王的三姨妈的四表...
为啥国人偏爱Mybatis,而老外喜欢Hibernate/JPA呢?
关于SQL和ORM的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行了一番讨论,感触还是有一些,于是就有了今天这篇文。 声明:本文不会下关于Mybatis和JPA两个持久层框架哪个更好这样的结论。只是摆事实,讲道理,所以,请各位看官勿喷。 一、事件起因 关于Mybatis和JPA孰优孰劣的问题,争论已经很多年了。一直也没有结论,毕竟每个人的喜好和习惯是大不相同的。我也看
SQL-小白最佳入门sql查询一
不要偷偷的查询我的个人资料,即使你再喜欢我,也不要这样,真的不好;
项目中的if else太多了,该怎么重构?
介绍 最近跟着公司的大佬开发了一款IM系统,类似QQ和微信哈,就是聊天软件。我们有一部分业务逻辑是这样的 if (msgType = "文本") { // dosomething } else if(msgType = "图片") { // doshomething } else if(msgType = "视频") { // doshomething } else { // doshom...
致 Python 初学者
欢迎来到“Python进阶”专栏!来到这里的每一位同学,应该大致上学习了很多 Python 的基础知识,正在努力成长的过程中。在此期间,一定遇到了很多的困惑,对未来的学习方向感到迷茫。我非常理解你们所面临的处境。我从2007年开始接触 python 这门编程语言,从2009年开始单一使用 python 应对所有的开发工作,直至今天。回顾自己的学习过程,也曾经遇到过无数的困难,也曾经迷茫过、困惑过。开办这个专栏,正是为了帮助像我当年一样困惑的 Python 初学者走出困境、快速成长。希望我的经验能真正帮到你
“狗屁不通文章生成器”登顶GitHub热榜,分分钟写出万字形式主义大作
一、垃圾文字生成器介绍 最近在浏览GitHub的时候,发现了这样一个骨骼清奇的雷人项目,而且热度还特别高。 项目中文名:狗屁不通文章生成器 项目英文名:BullshitGenerator 根据作者的介绍,他是偶尔需要一些中文文字用于GUI开发时测试文本渲染,因此开发了这个废话生成器。但由于生成的废话实在是太过富于哲理,所以最近已经被小伙伴们给玩坏了。 他的文风可能是这样的: 你发现,...
程序员:我终于知道post和get的区别
是一个老生常谈的话题,然而随着不断的学习,对于以前的认识有很多误区,所以还是需要不断地总结的,学而时习之,不亦说乎
《程序人生》系列-这个程序员只用了20行代码就拿了冠军
你知道的越多,你不知道的越多 点赞再看,养成习惯GitHub上已经开源https://github.com/JavaFamily,有一线大厂面试点脑图,欢迎Star和完善 前言 这一期不算《吊打面试官》系列的,所有没前言我直接开始。 絮叨 本来应该是没有这期的,看过我上期的小伙伴应该是知道的嘛,双十一比较忙嘛,要值班又要去帮忙拍摄年会的视频素材,还得搞个程序员一天的Vlog,还要写BU...
相关热词 c#处理浮点数 c# 生成字母数字随机数 c# 动态曲线 控件 c# oracle 开发 c#选择字体大小的控件 c# usb 批量传输 c#10进制转8进制 c#转base64 c# 科学计算 c#下拉列表获取串口
立即提问