Opened 9 years ago
Closed 9 years ago
#5037 closed defect (needs_more_info)
WEBM VP8 & VP9 - 2-pass encoding does not work
Reported by: | solidghost | Owned by: | |
---|---|---|---|
Priority: | normal | Component: | undetermined |
Version: | unspecified | Keywords: | libvpx |
Cc: | Blocked By: | ||
Blocking: | Reproduced by developer: | no | |
Analyzed by developer: | no |
Description
Summary:
2-pass encoding does not work when using libvpx-vp9 & libvpx. The output always says "Output file is empty, nothing was encoded", when the first pass is complete. Then it continues with the second pass.
The finished file does not seem to have used information from the first pass because the final bitrate is far from the specified one. Also the quality distribution is far from good.
This is the code string:
ffmpeg -y -i Input.mov -vcodec libvpx-vp9 -f rawvideo -pix_fmt yuv420p -aspect 16:9 -b:v 220k -vminrate 50k -s 420x236 -g 100 -qmin 0 -qmax 63 -an -pass 1 /dev/null && \ ffmpeg -y -i Input.mov -vcodec libvpx-vp9 -f webm -pix_fmt yuv420p -aspect 16:9 -b:v 220k -vminrate 50k -s 420x236 -g 100 -qmin 0 -qmax 63 -an -pass 2 \ out.webm
FFMPEG Output from the Terminal:
Thomas-MacBook-Pro:NEW_ONLINE_SETTINGS Thomas$ ffmpeg -y -i raw.mov -vcodec libvpx-vp9 -f rawvideo -pix_fmt yuv420p -aspect 16:9 -b:v 220k -vminrate 50k -s 420x236 -g 100 -qmin 0 -qmax 63 -an -pass 1 /dev/null && \ > ffmpeg -y -i raw.mov -vcodec libvpx-vp9 -f webm -pix_fmt yuv420p -aspect 16:9 -b:v 220k -vminrate 50k -s 420x236 -g 100 -qmin 0 -qmax 63 -an -pass 2 \ out.webm ffmpeg version 2.8 Copyright (c) 2000-2015 the FFmpeg developers built with Apple LLVM version 7.0.0 (clang-700.0.72) configuration: --prefix=/usr/local/Cellar/ffmpeg/2.8 --enable-shared --enable-pthreads --enable-gpl --enable-version3 --enable-hardcoded-tables --enable-avresample --cc=clang --host-cflags= --host-ldflags= --enable-opencl --enable-libx264 --enable-libmp3lame --enable-libvo-aacenc --enable-libxvid --enable-libfreetype --enable-libvorbis --enable-libvpx --enable-libass --enable-ffplay --enable-libfdk-aac --enable-libopus --enable-libquvi --enable-libx265 --enable-nonfree --enable-vda libavutil 54. 31.100 / 54. 31.100 libavcodec 56. 60.100 / 56. 60.100 libavformat 56. 40.101 / 56. 40.101 libavdevice 56. 4.100 / 56. 4.100 libavfilter 5. 40.101 / 5. 40.101 libavresample 2. 1. 0 / 2. 1. 0 libswscale 3. 1.101 / 3. 1.101 libswresample 1. 2.101 / 1. 2.101 libpostproc 53. 3.100 / 53. 3.100 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'raw.mov': Metadata: major_brand : qt minor_version : 537199360 compatible_brands: qt creation_time : 2015-11-23 13:44:32 Duration: 00:00:30.00, start: 0.000000, bitrate: 224330 kb/s Stream #0:0(eng): Video: qtrle (rle / 0x20656C72), rgb24, 720x576, 222782 kb/s, SAR 35:24 DAR 175:96, 25 fps, 25 tbr, 25 tbn, 25 tbc (default) Metadata: creation_time : 2015-11-23 13:44:32 handler_name : Apple Alias Data Handler encoder : Animation timecode : 00:00:00:00 Stream #0:1(eng): Audio: pcm_s16le (sowt / 0x74776F73), 48000 Hz, stereo, s16, 1536 kb/s (default) Metadata: creation_time : 2015-11-23 13:44:32 handler_name : Apple Alias Data Handler timecode : 00:00:00:00 Stream #0:2(eng): Data: none (tmcd / 0x64636D74), 0 kb/s (default) Metadata: creation_time : 2015-11-23 13:44:40 handler_name : Apple Alias Data Handler timecode : 00:00:00:00 [libvpx-vp9 @ 0x7f95a200b800] v1.4.0 Output #0, rawvideo, to '/dev/null': Metadata: major_brand : qt minor_version : 537199360 compatible_brands: qt encoder : Lavf56.40.101 Stream #0:0(eng): Video: vp9 (libvpx-vp9), yuv420p, 420x236 [SAR 944:945 DAR 16:9], q=0-63, pass 1, 220 kb/s, 25 fps, 25 tbn, 25 tbc (default) Metadata: creation_time : 2015-11-23 13:44:32 handler_name : Apple Alias Data Handler timecode : 00:00:00:00 encoder : Lavc56.60.100 libvpx-vp9 Stream mapping: Stream #0:0 -> #0:0 (qtrle (native) -> vp9 (libvpx-vp9)) Press [q] to stop, [?] for help frame= 750 fps=134 q=0.0 Lsize= 0kB time=00:00:00.00 bitrate=N/A video:0kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown Output file is empty, nothing was encoded ffmpeg version 2.8 Copyright (c) 2000-2015 the FFmpeg developers built with Apple LLVM version 7.0.0 (clang-700.0.72) configuration: --prefix=/usr/local/Cellar/ffmpeg/2.8 --enable-shared --enable-pthreads --enable-gpl --enable-version3 --enable-hardcoded-tables --enable-avresample --cc=clang --host-cflags= --host-ldflags= --enable-opencl --enable-libx264 --enable-libmp3lame --enable-libvo-aacenc --enable-libxvid --enable-libfreetype --enable-libvorbis --enable-libvpx --enable-libass --enable-ffplay --enable-libfdk-aac --enable-libopus --enable-libquvi --enable-libx265 --enable-nonfree --enable-vda libavutil 54. 31.100 / 54. 31.100 libavcodec 56. 60.100 / 56. 60.100 libavformat 56. 40.101 / 56. 40.101 libavdevice 56. 4.100 / 56. 4.100 libavfilter 5. 40.101 / 5. 40.101 libavresample 2. 1. 0 / 2. 1. 0 libswscale 3. 1.101 / 3. 1.101 libswresample 1. 2.101 / 1. 2.101 libpostproc 53. 3.100 / 53. 3.100 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'raw.mov': Metadata: major_brand : qt minor_version : 537199360 compatible_brands: qt creation_time : 2015-11-23 13:44:32 Duration: 00:00:30.00, start: 0.000000, bitrate: 224330 kb/s Stream #0:0(eng): Video: qtrle (rle / 0x20656C72), rgb24, 720x576, 222782 kb/s, SAR 35:24 DAR 175:96, 25 fps, 25 tbr, 25 tbn, 25 tbc (default) Metadata: creation_time : 2015-11-23 13:44:32 handler_name : Apple Alias Data Handler encoder : Animation timecode : 00:00:00:00 Stream #0:1(eng): Audio: pcm_s16le (sowt / 0x74776F73), 48000 Hz, stereo, s16, 1536 kb/s (default) Metadata: creation_time : 2015-11-23 13:44:32 handler_name : Apple Alias Data Handler timecode : 00:00:00:00 Stream #0:2(eng): Data: none (tmcd / 0x64636D74), 0 kb/s (default) Metadata: creation_time : 2015-11-23 13:44:40 handler_name : Apple Alias Data Handler timecode : 00:00:00:00 [libvpx-vp9 @ 0x7f849401bc00] v1.4.0 Output #0, webm, to ' out.webm': Metadata: major_brand : qt minor_version : 537199360 compatible_brands: qt encoder : Lavf56.40.101 Stream #0:0(eng): Video: vp9 (libvpx-vp9), yuv420p, 420x236 [SAR 944:945 DAR 16:9], q=0-63, pass 2, 220 kb/s, 25 fps, 1k tbn, 25 tbc (default) Metadata: creation_time : 2015-11-23 13:44:32 handler_name : Apple Alias Data Handler timecode : 00:00:00:00 encoder : Lavc56.60.100 libvpx-vp9 Stream mapping: Stream #0:0 -> #0:0 (qtrle (native) -> vp9 (libvpx-vp9)) Press [q] to stop, [?] for help frame= 750 fps= 13 q=0.0 Lsize= 844kB time=00:00:30.00 bitrate= 230.4kbits/s video:838kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.744376% Thomas-MacBook-Pro:NEW_ONLINE_SETTINGS Thomas$
ffmpeg version 2.8 Copyright (c) 2000-2015 the FFmpeg developers
built with Apple LLVM version 7.0.0 (clang-700.0.72)
Change History (9)
comment:1 by , 9 years ago
Component: | ffmpeg → undetermined |
---|---|
Keywords: | libvpx added |
comment:2 by , 9 years ago
The version I used was version 2.8, the latest stable version downloaded via "ffmpeg through Homebrew" for OSX. I have tried 2-pass for libvpx this way for this version and all older versions going back 1.5 years.
comment:4 by , 9 years ago
Replying to cehoyos:
Please test current FFmpeg git head.
Same problem with current FFmpeg git head. (if i managed to install it right. This is not my speciality).
Maybe there is an other way to enable 2-pass with libvpx that I dont know about. But this way works perfectly for libx264.
comment:6 by , 9 years ago
I tested the following command lines and the bitrates in the output files are very close to what I requested for vp8:
$ ffmpeg -f lavfi -i testsrc2 -vcodec vp8 -pass 1 -t 120 -vb 500k out1.webm $ ffmpeg -f lavfi -i testsrc2 -vcodec vp8 -pass 2 -t 120 -vb 500k -y out1.webm
$ ffmpeg -f lavfi -i testsrc2 -vcodec vp8 -pass 1 -t 120 -vb 200k out2.webm $ ffmpeg -f lavfi -i testsrc2 -vcodec vp8 -pass 2 -t 120 -vb 200k -y out2.webm
vp9 does not produce an output file of the requested size with my old version of libvpx (1.3) but I get different output file sizes for different requested bitrates.
$ ffmpeg -f lavfi -i testsrc2 -vcodec vp9 -pass 1 -t 120 -vb 200k out3.webm $ ffmpeg -f lavfi -i testsrc2 -vcodec vp9 -pass 2 -t 120 -vb 200k -y out3.webm
comment:7 by , 9 years ago
I just tried whiteout adding "-an" in the first pass. Then the transcoding works and gives no warning about "Output file is empty, nothing was encoded".
This is very strange. It feels like a Bug? Because I should be able to tell the first pass to skip analyzing the Audio. This is how it works with libx264.
Even though it does not complain anymore, the file size and quality on every frame is exactly the same if I do One pass or Two pass encoding. So it still feels like it does not apply the information from the first pass.
comment:8 by , 9 years ago
Please either test with the command lines I provided or upload your input sample so I can try to reproduce.
Completely unrelated: Please note that if you encode with x264 using -an
for the first pass, the resulting encode can be horribly broken depending on the used container and input sample.
comment:9 by , 9 years ago
Resolution: | → needs_more_info |
---|---|
Status: | new → closed |
Please reopen this ticket if you can explain how to reproduce this issue.
Is this issue reproducible with current FFmpeg git head?