Rendering image sequence as HDV

Hello, I'm new to kdenlive but am a long-time user of Kino. The main reason I left Kino was so that I could create and edit HD videos.

My current project settings are HDV 1080p at 25fps. This corresponds to a frame size of 1920x1080. I am starting off with a slideshow and feeding it JPEG images sized at 1920x1080. This works fine. However, I can't seem to render anything at that size. The only HDV options I get at rendering time are 1440x1080.

How can I create a video from still images with full HD dimensions?

Thanks!

I should have added that I am using version 0.8.2.1 on Ubuntu 10.04 LTS (lucid).

OK, in the meantime I found this old thread:

http://www.kdenlive.org/forum/rendering-1920-becomes-1440-yet-still-play...

I can render an image sequence as a video and import it into another project, but the clip seems to be broken.

What I am doing is adding a custom transition created using ImageMagick from an image sequence consisting of 20 single frames, one JPEG image per frame. When I import these into an empty project, they Look OK, but after rendering it according to the instructions in the above link and importing it as a video clip, it only has 18 frames and they are partially overlapping... the clip doesn't start with the first frame, and one frame appears to have three frames superimposed on it.

I suppose that I could import them directly, but since I have about 20 sequences, and each sequence has images named "000.jpg" "001.jpg" etc., I cannot keep track of them in the project tree.

What should I do?

Next thing I tried was ffmpeg. Created an Ogg video using the image sequence. I can play the resulting clip fine in movie player, but when I import it into kdenlive it shows up as having only 12 frames and totally white...

:(

Anybody?

OK, now I guess I have to forget about Ogg Theora:
http://en.wikibooks.org/wiki/Kdenlive/FAQ#Does_Kdenlive_support_.ogv_fro...

So I used ffmpeg to create an MP4 video. This plays back perfectly in movie player, and I can import it into kdenlive ... BUT ... there are only 19 frames instead of 20, and frames 2 and 3 are not in order (i.e. what should be frame 3 comes before frame 2), and the last three frames seem to be duplicates of each other.

Here is the ffmpeg output when I created the MP4 file:

[code]
=====================================================
bob@bobubuntu:~/Videos/projects$ ffmpeg -f image2 -i %02d.jpg -vcodec libx264 -s 1920x1080 -r 25 -b 25000k -y anim_cover.mp4
ffmpeg version 0.8.5, Copyright (c) 2000-2011 the FFmpeg developers
built on Oct 8 2011 23:41:49 with gcc 4.4.3
configuration: --enable-gpl --enable-shared --enable-nonfree --enable-x11grab --enable-frei0r --enable-libdc1394 --enable-libdirac --enable-libfaac --enable-libfreetype --enable-libgsm --enable-libmp3lame --enable-libopenjpeg --enable-libtheora --enable-libspeex --enable-libvorbis --enable-libx264 --enable-libxvid --extra-libs=-lx264
libavutil 51. 9. 1 / 51. 9. 1
libavcodec 53. 7. 0 / 53. 7. 0
libavformat 53. 4. 0 / 53. 4. 0
libavdevice 53. 1. 1 / 53. 1. 1
libavfilter 2. 23. 0 / 2. 23. 0
libswscale 2. 0. 0 / 2. 0. 0
libpostproc 51. 2. 0 / 51. 2. 0
Input #0, image2, from '%02d.jpg':
Duration: 00:00:00.80, start: 0.000000, bitrate: N/A
Stream #0.0: Video: mjpeg, yuvj420p, 1920x1080 [PAR 400:400 DAR 16:9], 25 fps, 25 tbr, 25 tbn, 25 tbc
[buffer @ 0x8222660] w:1920 h:1080 pixfmt:yuvj420p tb:1/1000000 sar:400/400 sws_param:
[libx264 @ 0x82302a0] Default settings detected, using medium profile
[libx264 @ 0x82302a0] using SAR=1/1
[libx264 @ 0x82302a0] using cpu capabilities: MMX2 SSE2Fast SSSE3 Cache64
[libx264 @ 0x82302a0] profile High, level 4.1
[libx264 @ 0x82302a0] 264 - core 116 - H.264/MPEG-4 AVC codec - Copyleft 2003-2011 - 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=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=abr mbtree=1 bitrate=25000 ratetol=1.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
Output #0, mp4, to 'anim_cover.mp4':
Metadata:
encoder : Lavf53.4.0
Stream #0.0: Video: libx264, yuvj420p, 1920x1080 [PAR 400:400 DAR 16:9], q=2-31, 25000 kb/s, 25 tbn, 25 tbc
Stream mapping:
Stream #0.0 -> #0.0
Press [q] to stop, [?] for help
frame= 20 fps= 2 q=9.0 Lsize= 1722kB time=00:00:00.72 bitrate=19588.1kbits/s
video:1721kB audio:0kB global headers:0kB muxing overhead 0.058460%
frame I:1 Avg QP: 6.08 size:680383
[libx264 @ 0x82302a0] frame P:14 Avg QP: 7.95 size: 71512
[libx264 @ 0x82302a0] frame B:5 Avg QP:11.87 size: 15926
[libx264 @ 0x82302a0] consecutive B-frames: 65.0% 0.0% 15.0% 20.0%
[libx264 @ 0x82302a0] mb I I16..4: 34.1% 47.5% 18.4%
[libx264 @ 0x82302a0] mb P I16..4: 3.6% 4.3% 2.2% P16..4: 4.7% 0.9% 0.9% 0.0% 0.0% skip:83.4%
[libx264 @ 0x82302a0] mb B I16..4: 1.6% 1.0% 0.4% B16..8: 2.6% 0.9% 0.8% direct: 0.4% skip:92.3% L0:45.5% L1:47.5% BI: 7.0%
[libx264 @ 0x82302a0] final ratefactor: 2.48
[libx264 @ 0x82302a0] 8x8 transform intra:44.0% inter:40.0%
[libx264 @ 0x82302a0] coded y,uvDC,uvAC intra: 83.3% 84.9% 72.9% inter: 3.3% 3.5% 3.0%
[libx264 @ 0x82302a0] i16 v,h,dc,p: 29% 3% 6% 62%
[libx264 @ 0x82302a0] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 11% 43% 15% 6% 3% 2% 3% 10% 6%
[libx264 @ 0x82302a0] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 14% 28% 13% 10% 6% 4% 6% 9% 9%
[libx264 @ 0x82302a0] i8c dc,h,v,p: 55% 26% 12% 7%
[libx264 @ 0x82302a0] Weighted P-Frames: Y:0.0% UV:0.0%
[libx264 @ 0x82302a0] ref P L0: 85.5% 5.3% 7.8% 1.4%
[libx264 @ 0x82302a0] ref B L0: 90.7% 8.0% 1.2%
[libx264 @ 0x82302a0] ref B L1: 94.7% 5.3%
[libx264 @ 0x82302a0] kb/s:17611.88
bob@bobubuntu:~/Videos/projects$
==========================================
[/code]

Does anyone see something I'm doing wrong here?

For a sequence of only 20 frames, you probably do not need such heavy compression?

I would rather try an I-frame only mjpegish format like DNxHD instead.

Just for the intermediate file to import in Kdenlive, the final render from Kdenlive can later be h264 or whatever.

hi, if your images are 1920x1080 then HDV is really the wrong project type.

Your images have square pixels, ie: 1:1 pixel aspect ratio, HDV on the other hand uses non square pixels because camera's couldn't transport full HD resolution 1920x1080 over firewire port on the camera, so to get round the problem they did non square pixels at a resolution of 1440x1080, that was then expanded horizontally in the media player to make a 1920 wide image, that's why you can't find a 1920x1080 HDV profile and really it's lowering the quality.

You really need to use a 1920x1080 project, suggest a progressive one so that adds a 1920x1080p, then you choose the framerate, what do you prefer or what does your playback device prefer? Any preference really? 24p can be a bit blurry in motion, anything over 30p will reduce compatibility.

Depending on what you anticipate playing your video on, h264 may be a good option.

If you prefer to use imagemagick to encode you image sequences, make sure your framerate you set is consistent with the kdenlive project profile you wish to use. Encode from IM to an RGB codec. Only because I don't know how good your transitions are going to look going to what could be 4:2:0 video and then encoded out again from kdenlive.

I'm familiar with IM but never have encoded to video from it. If you can pipe out to x264 from IM then another option would be to use x264 4:4:4. but that's probably a bit involved or necessary.

**EDIT**

Encoding from IM to x264 on the command line example using IM's png2yuv, images would need to be png.

png2yuv -j file%08d.png -I p -f 24 -n 24 - | x264 - --demuxer y4m --input-depth 8 --input-res 1920x1080 --fps 24 --colormatrix bt709 --preset ultrafast --qp 0 --output output.mkv

-I = interlaced or progressive output
-f = framerate
-n = number of frames

x264 options:

--colormatrix for HD default is bt709, but this depends on the origin of your images sequences, if converted from video?
--qp 0 is 'lossless' although not lossless as the output is 4:2:0 YCbCr ;-) Probably overkill, could use --qp 1 profile I guess.

mkv matroska container because avi sucks. :-)

You'd obviously need to change things like framerate to suit your kdenlive project.

@yellow:
Thanks very much for your detailed and helpful response!

When I started this thread, I assumed that I needed HDV export. My current project settings, however, are indeed HD 1080p 25 (i.e., not HDV at all). The older thread explains somewhat my confusion because some HD profiles were renamed to HDV in recent versions ... besides, I did not really know the difference! Now I do.

At any rate, I can create a short clip with ffmpeg in this format (HD 1080p @ 25fps). However, it seems that kdenlive cannot import it without breaking it!

If you created something with ffmpeg then kdenlive should be able to import it as MLT the underlying media handling framework uses ffmpeg.

Format 1080p is not very helpful, what codec did you use, what was your command line?

What does ffplay tell you about your file? Can ffplay actually play the file? It may not be kdenlive at fault.

An alternative approach as you are happy with scripting in IM for your transitions might be to look at creating a few MLT files which can be dragged into kdenlive like any media file, its XML so structured, to create simple image sequence imports and then do your transitions in kdenlive on the timeline because even getting your video into kdenlive you might not like the results regarding quality of transitions, banding etc going from RGB images to 4:2:0 then to 4:2:2 in kdenlive back to 4:2:0 as output.

Although kdenlive offers image sequence import not sure if its very flexible but MLT scripts maybe a way to go as an alternative.

Using the following command line with FFMpeg to create a raw video file seems to work now. I can import the clip into kdenlive although the project tree still reports one frame less than it actually has (there are 20 JPEG images in the sequence):

ffmpeg -f image2 -i anim-000/%03d.jpg -vcodec rawvideo -r 25 -s 1920x1080 -pix_fmt uyvy422 -vtag 2vuy -y anim-000/anim_000.mov

At least now the frames appear to be in correct sequence and they are not corrupted, AFAICT.

What surprises me is that when I import an image sequence, I expect to see only *one* asset in the project tree. However, kdenlive lists each inidividual image file! This makes it nearly impossible to keep track of 20 sequences, each having 20 images ... especially if they have the same filename but are located in different folders, because they are sorted alphabetically in the project tree.

You could try putting it in a matroska .mkv instead of mov, mov seems like an odd choice really.

Yeah, that's what I was saying about image sequence support, seems to import as individual files with duration > 1 frame, although in kdenlives config we can set image import to 1 frame duration for image imports but detection of sequencial numbers in the file name didn't seem to work last time I tried, on the odd occasions I found need to use them.