Quantcast KVCD: Using Templates in Linux (Transcode/FFmpeg) - digitalFAQ.com Forums [Archives]
  #1  
07-10-2003, 11:59 AM
japie japie is offline
Free Member
 
Join Date: Jul 2003
Posts: 106
Thanks: 0
Thanked 0 Times in 0 Posts
Hello,

Has someone succesfully created a kvcd or ksvcd with one off the linuxtools like transcode or ffmpeg?
I've been trying for the past 2 days, but I don't know how to pass the right options to transcode for the ksvcd/120min. template.
Another option would be ffmpeg for creating kvcd, the newer versions have excelent quality (option -hq) and are bleeding fast (4x tmpgenc), but only makes mpeg1 video.
Can someone help me out?
__________________
Groetjes Japie
Reply With Quote
Someday, 12:01 PM
admin's Avatar
Site Staff / Ad Manager
 
Join Date: Dec 2002
Posts: 42
Thanks: ∞
Thanked 42 Times in 42 Posts
  #2  
07-10-2003, 12:33 PM
kwag kwag is offline
Free Member
 
Join Date: Apr 2002
Location: Puerto Rico, USA
Posts: 13,537
Thanks: 0
Thanked 0 Times in 0 Posts
Hi japie,

You need to recompile the encoders with KVCD's Q. Matrix. I believe the GOP can be set in ffmpeg. Not sure about transcode.
Just get the source for ffmpeg and change the matrix

Here's the matrix
Code:
Intra:
8 9 12 22 26 27 29 34
9 10 14 26 27 29 34 37
12 14 18 27 29 34 37 38
22 26 27 31 36 37 38 40
26 27 29 36 39 38 40 48
27 29 34 37 38 40 48 58
29 34 37 38 40 48 58 69
34 37 38 40 48 58 69 79
Non-Intra:
16 18 20 22 24 26 28 30
18 20 22 24 26 28 30 32
20 22 24 26 28 30 32 34
22 24 26 30 32 32 34 36
24 26 28 32 34 34 36 38
26 28 30 32 34 36 38 40
28 30 32 34 36 38 42 42
30 32 34 36 38 40 42 44


-kwag
Reply With Quote
  #3  
07-10-2003, 02:22 PM
japie japie is offline
Free Member
 
Join Date: Jul 2003
Posts: 106
Thanks: 0
Thanked 0 Times in 0 Posts
Quote:
Originally Posted by kwag
You need to recompile the encoders with KVCD's Q. Matrix. I believe the GOP can be set in ffmpeg.
Just get the source for ffmpeg and change the matrix
Wow, not every linux user is a coder
But I looked at the source and found mpeg12data.h with:
Code:
const int16_t ff_mpeg1_default_intra_matrix[64] = {
	8, 16, 19, 22, 26, 27, 29, 34,
	16, 16, 22, 24, 27, 29, 34, 37,
	19, 22, 26, 27, 29, 34, 34, 38,
	22, 22, 26, 27, 29, 34, 37, 40,
	22, 26, 27, 29, 32, 35, 40, 48,
	26, 27, 29, 32, 35, 40, 48, 58,
	26, 27, 29, 34, 38, 46, 56, 69,
	27, 29, 35, 38, 46, 56, 69, 83
};

const int16_t ff_mpeg1_default_non_intra_matrix[64] = {
    16, 16, 16, 16, 16, 16, 16, 16,
    16, 16, 16, 16, 16, 16, 16, 16,
    16, 16, 16, 16, 16, 16, 16, 16,
    16, 16, 16, 16, 16, 16, 16, 16,
    16, 16, 16, 16, 16, 16, 16, 16,
    16, 16, 16, 16, 16, 16, 16, 16,
    16, 16, 16, 16, 16, 16, 16, 16,
    16, 16, 16, 16, 16, 16, 16, 16,
};
So I suppose this is what I'am looking 4.
There's also a possibility to define the gop_size but how do I "extract" the data I need from the tmpgenc_sheets?
__________________
Groetjes Japie
Reply With Quote
  #4  
07-10-2003, 02:30 PM
kwag kwag is offline
Free Member
 
Join Date: Apr 2002
Location: Puerto Rico, USA
Posts: 13,537
Thanks: 0
Thanked 0 Times in 0 Posts
Quote:
Originally Posted by japie
Quote:
Originally Posted by kwag
You need to recompile the encoders with KVCD's Q. Matrix. I believe the GOP can be set in ffmpeg.
Just get the source for ffmpeg and change the matrix
Wow, not every linux user is a coder
But I looked at the source and found mpeg12data.h with:
Code:
const int16_t ff_mpeg1_default_intra_matrix[64] = {
	8, 16, 19, 22, 26, 27, 29, 34,
	16, 16, 22, 24, 27, 29, 34, 37,
	19, 22, 26, 27, 29, 34, 34, 38,
	22, 22, 26, 27, 29, 34, 37, 40,
	22, 26, 27, 29, 32, 35, 40, 48,
	26, 27, 29, 32, 35, 40, 48, 58,
	26, 27, 29, 34, 38, 46, 56, 69,
	27, 29, 35, 38, 46, 56, 69, 83
};

const int16_t ff_mpeg1_default_non_intra_matrix[64] = {
    16, 16, 16, 16, 16, 16, 16, 16,
    16, 16, 16, 16, 16, 16, 16, 16,
    16, 16, 16, 16, 16, 16, 16, 16,
    16, 16, 16, 16, 16, 16, 16, 16,
    16, 16, 16, 16, 16, 16, 16, 16,
    16, 16, 16, 16, 16, 16, 16, 16,
    16, 16, 16, 16, 16, 16, 16, 16,
    16, 16, 16, 16, 16, 16, 16, 16,
};
So I suppose this is what I'am looking 4.
That's exactly it
Quote:
There's also a possibility to define the gop_size but how do I "extract" the data I need from the tmpgenc_sheets?
I think the GOP would be set on a command line argument
I'm not sure if the tar file in the CVS is compilable in Windows environment. Maybe I'll get my hands dirty with the code, and see if it compiles

-kwag
Reply With Quote
  #5  
07-10-2003, 03:13 PM
japie japie is offline
Free Member
 
Join Date: Jul 2003
Posts: 106
Thanks: 0
Thanked 0 Times in 0 Posts
Quote:
Originally Posted by kwag
I think the GOP would be set on a command line argument
I'm not sure if the tar file in the CVS is compilable in Windows environment. Maybe I'll get my hands dirty with the code, and see if it compiles
Youll won't be sorry
Maybe I'am a bit rude now, but I'am posting the command line ffmpeg options so if it won't compile, you can atleast see what your missing
Code:
Main options are:
-L                  show license
-h                  show help
-formats            show available formats, codecs, protocols, ...
-f fmt              force format
-img img_fmt        force image format
-i filename         input file name
-y                  overwrite output files
-t duration         set the recording time
-title string       set the title
-author string      set the author
-copyright string   set the copyright
-comment string     set the comment
-pass n             select the pass number (1 or 2)
-passlogfile file   select two pass log file name
-b bitrate          set video bitrate (in kbit/s)
-r rate             set frame rate (in Hz)
-s size             set frame size (WxH or abbreviation)
-aspect aspect      set aspect ratio (4:3, 16:9 or 1.3333, 1.7777)
-croptop size       set top crop band size (in pixels)
-cropbottom size    set bottom crop band size (in pixels)
-cropleft size      set left crop band size (in pixels)
-cropright size     set right crop band size (in pixels)
-vn                 disable video
-bt tolerance       set video bitrate tolerance (in kbit/s)
-maxrate bitrate    set max video bitrate tolerance (in kbit/s)
-minrate bitrate    set min video bitrate tolerance (in kbit/s)
-bufsize size       set ratecontrol buffere size (in kbit)
-sameq              use same video quality as source (implies VBR)
-ab bitrate         set audio bitrate (in kbit/s)
-ar rate            set audio sampling rate (in Hz)
-ac channels        set number of audio channels
-an                 disable audio

Advanced options are:
-map file:stream    set input stream mapping
-re                 read input at native frame rate
-pix_fmt format     set pixel format
-g gop_size         set the group of picture size
-intra              use only intra frames
-qscale q           use fixed video quantiser scale (VBR)
-qmin q             min video quantiser scale (VBR)
-qmax q             max video quantiser scale (VBR)
-mbqmin q           min macroblock quantiser scale (VBR)
-mbqmax q           max macroblock quantiser scale (VBR)
-qdiff q            max difference between the quantiser scale (VBR)
-qblur blur         video quantiser scale blur (VBR)
-qcomp compression  video quantiser scale compression (VBR)
-rc_init_cplx complexity  initial complexity for 1-pass encoding
-b_qfactor factor   qp factor between p and b frames
-i_qfactor factor   qp factor between p and i frames
-b_qoffset offset   qp offset between p and b frames
-i_qoffset offset   qp offset between p and i frames
-rc_eq equation     
-rc_override qualities for specific intervals  Rate control override
-vd device          set video grab device
-vc channel         set video grab channel (DV1394 only)
-tvstd standard     set television standard (NTSC, PAL (SECAM))
-dv1394             set DV1394 grab
-vcodec codec       force video codec ('copy' to copy stream)
-me method          set motion estimation method
-dct_algo algo      set dct algo
-idct_algo algo     set idct algo
-er                 set error resilience
-ec                 set error concealment
-bf frames          use 'frames' B frames (only MPEG-4)
-hq                 activate high quality settings
-4mv                use four motion vector by macroblock (only MPEG-4)
-part               use data partitioning (only MPEG-4)
-bug param          workaround not auto detected encoder bugs
-ps size in bits    packet size
-strict how strictly to follow the standarts  strictness
-debug              print specific debug info
-ad device          set audio device
-acodec codec       force audio codec ('copy' to copy stream)
-deinterlace        deinterlace pictures
-benchmark          add timings for benchmarking
-hex                dump each input packet
-psnr               calculate PSNR of compressed frames
-vstats             dump video coding statistics to file
-bitexact           only use bit exact algorithms (for codec testing)
-vhook module name and parameters  insert video processing module
-aic                enable Advanced intra coding (h263+)
-umv                enable Unlimited Motion Vector (h263+)
A lot off options are bogus, the package contains ffmpeg AND ffserver, wich is an streaming_video_daemon.
It reads from file or video device and spits it's data on the web in a variety off different formats on rtsp, http, whatever U want.

But how do I place the GOP size here?
I started with the KVCD-CQ-352x576-_PAL_-PLUS.mcf and I gues I have to use:
352x576
800 kbits/sec.
ratecontrol buffer size 40K.
gop size ?
I don't know, will try again tomorrow.
b.t.w; compiling with the new matrix went fine, it's in place and (hopefully) working.
__________________
Groetjes Japie
Reply With Quote
  #6  
07-10-2003, 03:27 PM
kwag kwag is offline
Free Member
 
Join Date: Apr 2002
Location: Puerto Rico, USA
Posts: 13,537
Thanks: 0
Thanked 0 Times in 0 Posts
Right there it is "-g gop_size set the group of picture size"

So the parameter in the command line would be -g 24

Edit: Do you have a Windows executable

-kwag
Reply With Quote
  #7  
07-10-2003, 11:19 PM
japie japie is offline
Free Member
 
Join Date: Jul 2003
Posts: 106
Thanks: 0
Thanked 0 Times in 0 Posts
Quote:
Originally Posted by kwag
Edit: Do you have a Windows executable
-kwag
Sorry, I was wrong, there is no windows exe.
It is possible to build it under windows using MinGW, I yust downloaded it and will try to build it 4 U, but don't know or it will run stand-alone on win.
There are win-project who use the codec doo.

I decoded a 10 min. divx with the new matrix in 4 min. with a terrible result:
http://japie.is.dreaming.org/ftp/test.jpg
__________________
Groetjes Japie
Reply With Quote
  #8  
07-10-2003, 11:24 PM
kwag kwag is offline
Free Member
 
Join Date: Apr 2002
Location: Puerto Rico, USA
Posts: 13,537
Thanks: 0
Thanked 0 Times in 0 Posts
Quote:
Originally Posted by japie

I decoded a 10 min. divx with the new matrix in 4 min. with a terrible result:
http://japie.is.dreaming.org/ftp/test.jpg
You probably have to adjust the CQ or quality settings. They will not be the same as with the standard MPEG matrix.

-kwag
Reply With Quote
  #9  
07-11-2003, 09:40 AM
japie japie is offline
Free Member
 
Join Date: Jul 2003
Posts: 106
Thanks: 0
Thanked 0 Times in 0 Posts
Quote:
Originally Posted by kwag
You probably have to adjust the CQ or quality settings. They will not be the same as with the standard MPEG matrix.
Where do I find these in the template?

I tryed to compile ffmpeg with mingw32 but didn't suxeed maybe you have more luck using you native windowz compiler.
__________________
Groetjes Japie
Reply With Quote
  #10  
07-11-2003, 11:12 AM
girv girv is offline
Free Member
 
Join Date: Sep 2002
Posts: 108
Thanks: 0
Thanked 0 Times in 0 Posts
Send a message via ICQ to girv
@japie: FWIW I'd be interested in a Win32 build of ffmpeg as well, should you ever make one :)
Reply With Quote
  #11  
07-11-2003, 12:57 PM
japie japie is offline
Free Member
 
Join Date: Jul 2003
Posts: 106
Thanks: 0
Thanked 0 Times in 0 Posts
Quote:
Originally Posted by girv
@japie: FWIW I'd be interested in a Win32 build of ffmpeg as well, should you ever make one
I'am not a coder and surtanly not a windowz one
I tryed to build it but did not suxeed.
On the other hand, the binairy isn't available but the actual coding part is available 4 windowz as libavcodec and is used in quite a lott apps. like ffdshow.
So if those guys can port the lib, the bin is portable as well too (I think).
I have no clue. My knowledge doesn't go any further than doing a ./configure and make.
__________________
Groetjes Japie
Reply With Quote
  #12  
07-11-2003, 11:58 PM
japie japie is offline
Free Member
 
Join Date: Jul 2003
Posts: 106
Thanks: 0
Thanked 0 Times in 0 Posts
Quote:
Originally Posted by kwag
You need to recompile the encoders with KVCD's Q. Matrix. I believe the GOP can be set in ffmpeg. Not sure about transcode.
Yust found the next mailing about transcode:
http://zebra.fh-weingarten.de/~maxi/.../msg00035.html
Where can I find the matrix for ksvcd?
__________________
Groetjes Japie
Reply With Quote
  #13  
07-12-2003, 12:14 AM
kwag kwag is offline
Free Member
 
Join Date: Apr 2002
Location: Puerto Rico, USA
Posts: 13,537
Thanks: 0
Thanked 0 Times in 0 Posts
Quote:
Originally Posted by japie
Quote:
Originally Posted by kwag
You need to recompile the encoders with KVCD's Q. Matrix. I believe the GOP can be set in ffmpeg. Not sure about transcode.
Yust found the next mailing about transcode:
http://zebra.fh-weingarten.de/~maxi/.../msg00035.html
Where can I find the matrix for ksvcd?
KVCD's matrix is patched on all TMPGEnc templates on this site
It's the same matrix for all resolutions
http://www.kvcd.net/e107/article.php?21.255

-kwag
Reply With Quote
  #14  
07-12-2003, 10:17 AM
japie japie is offline
Free Member
 
Join Date: Jul 2003
Posts: 106
Thanks: 0
Thanked 0 Times in 0 Posts
Quote:
That's the info I'am looking 4, so if I understand correctly the only 3 things changed against normal vcd/svc are; matrixes, GOP size and resolution?
I will try to make an kvcd and an ksvcd and will post my findings and used commandline for next generations.
__________________
Groetjes Japie
Reply With Quote
  #15  
07-13-2003, 04:41 AM
japie japie is offline
Free Member
 
Join Date: Jul 2003
Posts: 106
Thanks: 0
Thanked 0 Times in 0 Posts
Hello guys,

Here's how to make a ksvcd_pal_120min under linux in a bleeding fast 8 frames per seconds (but it works)
Youll need transcode and mplayer 4 this.
Create 3 files and place them in /usr/lib/transcode

ksvcd.prof
Code:
gop_size = 25
frame_rate = 25.0
fixed_vbv_delay = 1
cbr = 0
max_bitrate = 64000.0
min_bitrate = 3000000.0
dc_prec = 0
iqname = intra.txt
niqname = non_intra.txt
cat intra.txt
Code:
8 9 12 22 26 27 29 34
9 10 14 26 27 29 34 37
12 14 18 27 29 34 37 38
22 26 27 31 36 37 38 40
26 27 29 36 39 38 40 48
27 29 34 37 38 40 48 58
29 34 37 38 40 48 58 69
34 37 38 40 48 58 69 79
non_intra.txt
Code:
16 18 20 22 24 26 28 30
18 20 22 24 26 28 30 32
20 22 24 26 28 30 32 34
22 24 26 30 32 32 34 36
24 26 28 32 34 34 36 38
26 28 30 32 34 36 38 40
28 30 32 34 36 38 42 42
30 32 34 36 38 40 42 44
Next, create a script mkksvcd
Code:
transcode -x mplayer -i "$1" -y mpeg -Fs,/usr/lib/transcode/ksvcd.prof -E 44100 -b 128 -Z 528x576 -j -56 -o "ksvcd"
#the above is one line
mplex -f 5 -o "ksvcd%d.mpeg" "ksvcd.m2v" "ksvcd.mpa"
rm ksvcd.m2v
rm ksvcd.mpa
Make it executable and place it in /usr/bin
Run from comandline:
mkksvcd /path/to/your/file.avi and go to bed, wake up go to your work, take a shower, go to bed again and optionaly have sex and maybe the next morning you can burn the thing
__________________
Groetjes Japie
Reply With Quote
  #16  
07-13-2003, 11:15 AM
kwag kwag is offline
Free Member
 
Join Date: Apr 2002
Location: Puerto Rico, USA
Posts: 13,537
Thanks: 0
Thanked 0 Times in 0 Posts
Hi japie,

Aren't your bitrates inverted
Code:
max_bitrate = 64000.0 
min_bitrate = 3000000.0


Also, remove the "cat" from the "cat intra.txt" ( we don't want to type that line )

-kwag
Reply With Quote
  #17  
07-15-2003, 06:56 AM
japie japie is offline
Free Member
 
Join Date: Jul 2003
Posts: 106
Thanks: 0
Thanked 0 Times in 0 Posts
Quote:
Originally Posted by kwag
Hi japie,
Aren't your bitrates inverted
Code:
max_bitrate = 64000.0 
min_bitrate = 3000000.0

-kwag
Oops

Anyway, I sucsesfuly created the streams only one problem...
I have a video stream of 600Mb. and a audio stream of 90Mb. but after multiplexing I have a 950Mb. video, that doesn't fit on a cd :O

Also I did some benchmarks in vcd format. (to show how fast ffmpeg is, altough it's unuseable for kvcd at the moment)
Testvideo reloaded_superbowl.avi 01:02
VIDEO: [DX50] 640x480 24bpp 24,72 fps 1175,6 kbps (143,5 kbyte/s)
AUDIO: [MP3] 44100 Hz, 2 ch, 16 bit (0x10), ratio: 16000->176400 (128,0 kbit)

benchmarks:
ffmpeg 00:15 mpeg
mpeg2enc 01:43 m1v + mp2
bbmpeg 01:39 m1v + mp2
tmpgenc 00:59 mpeg
mainconcept 00:20 mpeg

Nice to see that an opensource project like ffmpeg beets the mainconcept encoder
__________________
Groetjes Japie
Reply With Quote
  #18  
07-15-2003, 07:50 AM
serrabastien serrabastien is offline
Free Member
 
Join Date: Sep 2002
Location: France, Lille
Posts: 102
Thanks: 0
Thanked 0 Times in 0 Posts
Quote:
Originally Posted by japie
Anyway, I sucsesfuly created the streams only one problem...
I have a video stream of 600Mb. and a audio stream of 90Mb. but after multiplexing I have a 950Mb. video, that doesn't fit on a cd :O
Maybe there's a problem with the header. Try to remux it with bbmpeg.

Quote:
Originally Posted by japie
Also I did some benchmarks in vcd format. (to show how fast ffmpeg is, altough it's unuseable for kvcd at the moment)
Testvideo reloaded_superbowl.avi 01:02
VIDEO: [DX50] 640x480 24bpp 24,72 fps 1175,6 kbps (143,5 kbyte/s)
AUDIO: [MP3] 44100 Hz, 2 ch, 16 bit (0x10), ratio: 16000->176400 (128,0 kbit)

benchmarks:
ffmpeg 00:15 mpeg
mpeg2enc 01:43 m1v + mp2
bbmpeg 01:39 m1v + mp2
tmpgenc 00:59 mpeg
mainconcept 00:20 mpeg

Nice to see that an opensource project like ffmpeg beets the mainconcept encoder
What about the quality ?

I'm very happy coz i've post some weeks ago about help to make kvcd under Linux. If we work together I think it will be possible.
I've read somewhere that someone is porting avisynth under Linux.

'Z
Reply With Quote
  #19  
07-15-2003, 09:17 AM
japie japie is offline
Free Member
 
Join Date: Jul 2003
Posts: 106
Thanks: 0
Thanked 0 Times in 0 Posts
Quote:
Originally Posted by 'Z
Maybe there's a problem with the header. Try to remux it with bbmpeg.
It's a linux mplex problem, using standard vcd I get a big file, and when using userbitrate -V (variable) I have to specify the max bitrate but ends up with a/v not not sync.
I used tmpgenc_mplex_variable_bitrate and alzwell now.

Quote:
Originally Posted by 'Z
What about the quality ?
All good. I used 4 all apps default settings exept for ffmpeg, I used that one with option -hq (high quality) because standard it's bad. (but faster)
These were creating a standard vcd mpeg.
__________________
Groetjes Japie
Reply With Quote
  #20  
07-15-2003, 11:05 AM
kwag kwag is offline
Free Member
 
Join Date: Apr 2002
Location: Puerto Rico, USA
Posts: 13,537
Thanks: 0
Thanked 0 Times in 0 Posts
I'm going to put this on my schedule
I have ffmpeg and ffmpegX (graphical front end) on a PowerPC G4 running Mac OS X 10.2.
I just need to get the latest source and recompile it with the matrix. I'll do some tests later today.

-kwag
Reply With Quote
Reply




Similar Threads
Thread Thread Starter Forum Replies Last Post
FFMPEG: Kvcd script for Linux/Unix fragmaster170 Video Encoding and Conversion 3 04-25-2006 04:24 PM
Linux: Anybody use transcode software? jonny_eh Computers 2 06-25-2004 01:17 PM
FFMPEG: Linux kvcd status (so far) japie Video Encoding and Conversion 20 11-28-2003 03:13 PM
FFMPEG: AVIsynth for Linux ak47 Video Encoding and Conversion 0 09-15-2003 07:48 PM
FFMPEG: quality diference between the kvcd made on Windows vs Linux buildid Video Encoding and Conversion 1 09-10-2003 12:49 PM

Thread Tools



 
All times are GMT -5. The time now is 01:39 AM  —  vBulletin Jelsoft Enterprises Ltd