[FFmpeg-user] Reencoding video from image sequence doesn't work (sometimes)
serialhex at gmail.com
serialhex at gmail.com
Thu Jan 18 22:53:48 EET 2018
First of all, I've exhausted all my Google-fu to no avail... so any help is
greatly appreciated!
I found a cool utility to upconvert anime images
(if you're interested https://github.com/lltcggie/waifu2x-caffe) and so I'm
reencoding my low quality
anime using this. First I rip to an image sequence using a command like:
.\ffmpeg.exe -i full-20s.mkv -f image2 "file\seq-%09d.png"
I also get some metadata, such as framerate and stuff using ffprobe
Then I do the upconvert of the image sequence, and then I put it back
together
.\ffmpeg.exe -y -i "full-20s.mkv" -framerate $framerate -f image2 -i
"file\seq-%09d.png" -map 1:v -c copy -vcodec h264 -pix_fmt yuv420p -map 0
-map -0:v out.mkv
This works beautifully for most files, but for some files this breaks in a
weird way. The file will encode
okay, and I can then play it, but I get no video. If I then seek to a
random place, pause the video and
then seek to near the beginning, it works perfectly.
I've uploaded some example files here:
https://drive.google.com/open?id=1qog43RZ8hPfQIjc6PbGi1Ii_ugeFNrQO
(oddly, playing the bad "out.mkv" file from google drive works fine, but vlc
and other media
players it doesn't -_- )
I've already tried making a keyframe at the beginning with adding
`-force_key_frames 0.0` to my
command line, and making a video out of the image sequence (which then plays
fine!!!) and adding it to
the audio later. I've done a lot of research, and I'm at a loss.
"full-20s.mkv" was taken using ./ffmpeg -i full-episode.mkv -t 20 -c copy
-map 0 full-20s.mkv
I then made out.mkv using the following 2 commands:
D:\programmin\Projects\reencode> & .\ffmpeg.exe -i full-20s.mkv -f image2
".\inp-full-20s.mkv\seq-%09d.png"
ffmpeg version N-79690-g78baa45 Copyright (c) 2000-2016 the FFmpeg
developers
built with gcc 5.3.0 (GCC)
configuration: --enable-gpl --enable-version3 --disable-w32threads
--enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r
--enable-gnutls --enable-iconv --enable-libass --enable-libblu
ray --enable-libbs2b --enable-libcaca --enable-libfreetype --enable-libgme
--enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmfx
--enable-libmp3lame --enable-libopencore-amrnb --enable-
libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-librtmp
--enable-libschroedinger --enable-libsnappy --enable-libsoxr
--enable-libspeex --enable-libtheora --enable-libtwolame --enable-
libvidstab --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx
--enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265
--enable-libxavs --enable-libxvid --enable-libzimg --enable
-lzma --enable-decklink --enable-zlib
libavutil 55. 23.100 / 55. 23.100
libavcodec 57. 38.100 / 57. 38.100
libavformat 57. 34.103 / 57. 34.103
libavdevice 57. 0.101 / 57. 0.101
libavfilter 6. 44.100 / 6. 44.100
libswscale 4. 1.100 / 4. 1.100
libswresample 2. 0.101 / 2. 0.101
libpostproc 54. 0.100 / 54. 0.100
The tags at index 3 refer to a non-existent track 4.
The tags at index 7 refer to a non-existent track 4.
Input #0, matroska,webm, from
'D:\programmin\Projects\reencode\full-20s.mkv':
Metadata:
ENCODER : Lavf57.34.103
Duration: 00:00:20.12, start: 0.000000, bitrate: 640 kb/s
Stream #0:0: Video: h264 (High), yuv420p, 848x480, SAR 1:1 DAR 53:30,
19.18 fps, 19.18 tbr, 1k tbn (default)
Metadata:
DURATION : 00:00:20.124000000
Stream #0:1(jpn): Audio: aac (HE-AAC), 48000 Hz, stereo, fltp (default)
Metadata:
DURATION : 00:00:20.010000000
Stream #0:2(eng): Subtitle: ass (default)
Metadata:
DURATION : 00:00:00.000000000
Stream #0:3: Attachment: ttf
Metadata:
filename : RotisWTF.ttf
mimetype : application/x-truetype-font
[image2 @ 00000000004ef9c0] Using AVStream.codec to pass codec parameters to
muxers is deprecated, use AVStream.codecpar instead.
Output #0, image2, to '.\inp-full-20s.mkv\seq-%09d.png':
Metadata:
encoder : Lavf57.34.103
Stream #0:0: Video: png, rgb24, 848x480 [SAR 1:1 DAR 53:30], q=2-31, 200
kb/s, 19.18 fps, 19.18 tbn (default)
Metadata:
DURATION : 00:00:20.124000000
encoder : Lavc57.38.100 png
Stream mapping:
Stream #0:0 -> #0:0 (h264 (native) -> png (native))
Press [q] to stop, [?] for help
frame= 386 fps=150 q=-0.0 Lsize=N/A time=00:00:20.12 bitrate=N/A
speed=7.83x
video:209581kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB
muxing overhead: unknown
D:\programmin\Projects\reencode> .\ffmpeg.exe -y -framerate 28752/1499 -f
image2 -i ".\inp-full-20s.mkv\seq-%09d.png" -i "full-20s.mkv" -map 0:v -map
1 -map -1:v -c copy -vcodec h264 -pix_fmt yuv420p out.mkv
ffmpeg version N-79690-g78baa45 Copyright (c) 2000-2016 the FFmpeg
developers
built with gcc 5.3.0 (GCC)
configuration: --enable-gpl --enable-version3 --disable-w32threads
--enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r
--enable-gnutls --enable-iconv --enable-libass --enable-libblu
ray --enable-libbs2b --enable-libcaca --enable-libfreetype --enable-libgme
--enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmfx
--enable-libmp3lame --enable-libopencore-amrnb --enable-
libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-librtmp
--enable-libschroedinger --enable-libsnappy --enable-libsoxr
--enable-libspeex --enable-libtheora --enable-libtwolame --enable-
libvidstab --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx
--enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265
--enable-libxavs --enable-libxvid --enable-libzimg --enable
-lzma --enable-decklink --enable-zlib
libavutil 55. 23.100 / 55. 23.100
libavcodec 57. 38.100 / 57. 38.100
libavformat 57. 34.103 / 57. 34.103
libavdevice 57. 0.101 / 57. 0.101
libavfilter 6. 44.100 / 6. 44.100
libswscale 4. 1.100 / 4. 1.100
libswresample 2. 0.101 / 2. 0.101
libpostproc 54. 0.100 / 54. 0.100
Input #0, image2, from '.\inp-full-20s.mkv\seq-%09d.png':
Duration: 00:00:20.12, start: 0.000000, bitrate: N/A
Stream #0:0: Video: png, rgb24(pc), 848x480 [SAR 1:1 DAR 53:30], 19.17
fps, 19.18 tbr, 19.18 tbn
The tags at index 3 refer to a non-existent track 4.
The tags at index 7 refer to a non-existent track 4.
Input #1, matroska,webm, from 'full-20s.mkv':
Metadata:
ENCODER : Lavf57.34.103
Duration: 00:00:20.12, start: 0.000000, bitrate: 640 kb/s
Stream #1:0: Video: h264 (High), yuv420p, 848x480, SAR 1:1 DAR 53:30,
19.18 fps, 19.18 tbr, 1k tbn (default)
Metadata:
DURATION : 00:00:20.124000000
Stream #1:1(jpn): Audio: aac (HE-AAC), 48000 Hz, stereo, fltp (default)
Metadata:
DURATION : 00:00:20.010000000
Stream #1:2(eng): Subtitle: ass (default)
Metadata:
DURATION : 00:00:00.000000000
Stream #1:3: Attachment: ttf
Metadata:
filename : RotisWTF.ttf
mimetype : application/x-truetype-font
[libx264 @ 00000000030f0480] using SAR=1/1
[libx264 @ 00000000030f0480] using cpu capabilities: MMX2 SSE2Fast SSSE3
SSE4.2 AVX FMA3 AVX2 LZCNT BMI2
[libx264 @ 00000000030f0480] profile High, level 3.0
[libx264 @ 00000000030f0480] 264 - core 148 r2694 3b70645 - H.264/MPEG-4 AVC
codec - Copyleft 2003-2016 - 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=12 lookahead_threads=2 sliced_threads=0 nr=0 dec
imate=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=19 scenecut=40 intra_refresh=0 rc_lookah
ead=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
[matroska @ 00000000031daa20] Using AVStream.codec to pass codec parameters
to muxers is deprecated, use AVStream.codecpar instead.
Last message repeated 3 times
Output #0, matroska, to 'out.mkv':
Metadata:
encoder : Lavf57.34.103
Stream #0:0: Video: h264 (H264 / 0x34363248), yuv420p, 848x480 [SAR 1:1
DAR 53:30], q=2-31, 19.18 fps, 1k tbn
Metadata:
encoder : Lavc57.38.100 libx264
Side data:
cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: -1
Stream #0:1(jpn): Audio: aac (HE-AAC) ([255][0][0][0] / 0x00FF), 48000
Hz, stereo (default)
Metadata:
DURATION : 00:00:20.010000000
Stream #0:2(eng): Subtitle: ass (default)
Metadata:
DURATION : 00:00:00.000000000
Stream #0:3: Attachment: ttf
Metadata:
filename : RotisWTF.ttf
mimetype : application/x-truetype-font
Stream mapping:
Stream #0:0 -> #0:0 (png (native) -> h264 (libx264))
Stream #1:1 -> #0:1 (copy)
Stream #1:2 -> #0:2 (copy)
Stream #1:3 -> #0:3 (copy)
Press [q] to stop, [?] for help
[image2 @ 00000000005b65a0] Thread message queue blocking; consider raising
the thread_queue_size option (current value: 8)
frame= 386 fps=143 q=-1.0 Lsize= 1978kB time=00:00:20.01 bitrate=
809.6kbits/s speed= 7.4x
video:1814kB audio:99kB subtitle:0kB other streams:0kB global headers:0kB
muxing overhead: 3.401193%
[libx264 @ 00000000030f0480] frame I:10 Avg QP:17.92 size: 11772
[libx264 @ 00000000030f0480] frame P:173 Avg QP:22.36 size: 8013
[libx264 @ 00000000030f0480] frame B:203 Avg QP:25.76 size: 1738
[libx264 @ 00000000030f0480] consecutive B-frames: 20.2% 25.4% 10.9% 43.5%
[libx264 @ 00000000030f0480] mb I I16..4: 21.9% 60.3% 17.8%
[libx264 @ 00000000030f0480] mb P I16..4: 3.3% 20.1% 3.5% P16..4: 27.4%
8.8% 3.8% 0.0% 0.0% skip:33.1%
[libx264 @ 00000000030f0480] mb B I16..4: 1.2% 4.5% 0.3% B16..8: 15.3%
1.9% 0.5% direct: 5.1% skip:71.3% L0:40.9% L1:49.6% BI: 9.5%
[libx264 @ 00000000030f0480] 8x8 transform intra:72.8% inter:68.9%
[libx264 @ 00000000030f0480] coded y,uvDC,uvAC intra: 39.3% 51.0% 21.0%
inter: 12.4% 16.4% 2.0%
[libx264 @ 00000000030f0480] i16 v,h,dc,p: 45% 23% 12% 20%
[libx264 @ 00000000030f0480] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 36% 16% 22% 4%
5% 4% 5% 4% 5%
[libx264 @ 00000000030f0480] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 24% 16% 13% 7%
10% 8% 8% 7% 6%
[libx264 @ 00000000030f0480] i8c dc,h,v,p: 60% 17% 16% 7%
[libx264 @ 00000000030f0480] Weighted P-Frames: Y:13.9% UV:10.4%
[libx264 @ 00000000030f0480] ref P L0: 73.0% 16.4% 8.2% 2.3% 0.1%
[libx264 @ 00000000030f0480] ref B L0: 90.9% 7.6% 1.5%
[libx264 @ 00000000030f0480] ref B L1: 97.8% 2.2%
[libx264 @ 00000000030f0480] kb/s:738.12
you can seek to like 4 seconds in out.mkv and then get video, but starting
from the beginning gets nothing.
I'm not sure what's going on, this works with some mkv files, and not with
others, also I was able to
reencode and entire anime in mp4 format without problems like this.
Any help would be appreciated!
By the way, the entire powershell script if anyone is interested:
https://gist.github.com/serialhex/18ff67b31f05e700d5456aac0e213e7f
Thanks for your help
--
Sent from: http://www.ffmpeg-archive.org/
More information about the ffmpeg-user
mailing list