VideoHelp Forum
+ Reply to Thread
Results 1 to 11 of 11
Thread
  1. Hi everyone

    There's a way to do similar encode with staxRip?

    I tried with x264 and Nvenc but no one allows fps lower than 19

    Maybe I can do that with command line?

    Code:
    General
    Complete name               : low_fps.mp4
    Format                      : MPEG-4
    Format profile              : Base Media / Version 2
    Codec ID                    : mp42 (mp42/isom/avc1)
    File size                   : 6.75 MiB
    Duration                    : 6 min 38 s
    Overall bit rate mode       : Variable
    Overall bit rate            : 142 kb/s
    
    Video
    ID                          : 1
    Format                      : AVC
    Format/Info                 : Advanced Video Codec
    Format profile              : High@L5.1
    Format settings             : CABAC / 16 Ref Frames
    Format settings, CABAC      : Yes
    Format settings, ReFrames   : 16 frames
    Codec ID                    : avc1
    Codec ID/Info               : Advanced Video Coding
    Duration                    : 6 min 38 s
    Bit rate mode               : Variable
    Bit rate                    : 12.6 kb/s
    Nominal bit rate            : 10 000 b/s
    Maximum bit rate            : 13.0 kb/s
    Width                       : 1 920 pixels
    Height                      : 1 080 pixels
    Display aspect ratio        : 16:9
    Frame rate mode             : Variable
    Frame rate                  : 1.003 FPS
    Minimum frame rate          : 1.000 FPS
    Maximum frame rate          : 16 384.000 FPS
    Original frame rate         : 1.000 FPS
    Standard                    : NTSC
    Color space                 : YUV
    Chroma subsampling          : 4:2:0
    Bit depth                   : 8 bits
    Scan type                   : Progressive
    Bits/(Pixel*Frame)          : 0.006
    Stream size                 : 612 KiB (9%)
    Writing library             : x264 core 114
    Encoding settings           : cabac=1 / ref=16 / 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=2 / deadzone=21,11 / fast_pskip=1 / chroma_qp_offset=-4 / threads=12 / sliced_threads=0 / slices=1 / nr=0 / decimate=1 / interlaced=0 / constrained_intra=0 / bframes=0 / weightp=2 / keyint=500 / keyint_min=1 / scenecut=40 / intra_refresh=0 / rc_lookahead=40 / rc=2pass / mbtree=1 / bitrate=10 / ratetol=1.0 / qcomp=0.60 / qpmin=5 / qpmax=69 / qpstep=4 / cplxblur=20.0 / qblur=0.5 / vbv_maxrate=13 / vbv_bufsize=300000 / nal_hrd=vbr / ip_ratio=1.40 / aq=1:1.00
    Color range                 : Limited
    Codec configuration box     : avcC
    
    Audio
    ID                          : 2
    Format                      : AAC LC
    Format/Info                 : Advanced Audio Codec Low Complexity
    Codec ID                    : mp4a-40-2
    Duration                    : 6 min 38 s
    Bit rate mode               : Variable
    Bit rate                    : 128 kb/s
    Maximum bit rate            : 529 kb/s
    Channel(s)                  : 2 channels
    Channel layout              : L R
    Sampling rate               : 44.1 kHz
    Frame rate                  : 43.066 FPS (1024 SPF)
    Compression mode            : Lossy
    Stream size                 : 6.08 MiB (90%)
    I need low fps and bit rate, since the picture is static full quality is expected...

    Code:
    Bit rate                    : 12.6 kb/s
    Nominal bit rate            : 10 000 b/s
    Maximum bit rate            : 13.0 kb/s
    Frame rate mode             : Variable
    Frame rate                  : 1.003 FPS
    Minimum frame rate          : 1.000 FPS
    Maximum frame rate          : 16 384.000 FPS
    Original frame rate         : 1.000 FPS
    On attachments has a sample, thanks in advance!
    Image Attached Files
    Quote Quote  
  2. It's easy enough to do using AviSynth. Since StaxRip uses AviSynth, it should be easy to do in that as well:

    ImageSource("Picture.bmp",End=100,FPS=1).ConvertTo YV12()

    Using ImageSource, you give a name to the picture
    Using ConvertToYV12 you set the colorspace common to almost all videos


    The 'End' setting tells for how many frames the picture is to remain. The framerate is set for 1 so if End=100, the picture will last for 101 seconds. Avisynth counting begins with zero. You can probably replace the script StaxRip gives you with that line. Or use something, like RipBot64, which won't have any problems with that script. Be sure and test out your script in VDub before doing the encode. Once open in VDub, go File->File Information to get information about the video, including how long it'll last.

    If using RipBot64 or other encoders, add your audio separately (WAV audio preferred)
    Quote Quote  
  3. "low_fps.mp4" sample file is 99% 1 fps. There's only one frame that's irregularly timed (bug in muxer?) so MediaInfo reports a high Maximum frame rate. Compression wise this shouldn't make any difference at all.

    Code:
                            [stts: Decoding Time to Sample Box]
                                position = 7007085
                                size = 40
                                version = 0
                                flags = 0x000000
                                entry_count = 3
                                entry[0]
                                    sample_count = 255
                                    sample_delta = 16384
                                entry[1]
                                    sample_count = 1
                                    sample_delta = 1
                                entry[2]
                                    sample_count = 143
                                    sample_delta = 16384
    Quote Quote  
  4. Originally Posted by manono View Post
    It's easy enough to do using AviSynth. Since StaxRip uses AviSynth, it should be easy to do in that as well:

    ImageSource("Picture.bmp",End=100,FPS=1).ConvertTo YV12()

    Using ImageSource, you give a name to the picture
    Using ConvertToYV12 you set the colorspace common to almost all videos


    The 'End' setting tells for how many frames the picture is to remain. The framerate is set for 1 so if End=100, the picture will last for 101 seconds. Avisynth counting begins with zero. You can probably replace the script StaxRip gives you with that line. Or use something, like RipBot64, which won't have any problems with that script. Be sure and test out your script in VDub before doing the encode. Once open in VDub, go File->File Information to get information about the video, including how long it'll last.

    If using RipBot64 or other encoders, add your audio separately (WAV audio preferred)
    Awesome!

    Worked like a charm!

    The size is bit bigger, but that's because I used a 2k image and a bigger bitrate!

    Maybe using two pass I can use lower bitrate, but I couldn't set this using Nvenc, I tried with x264 but did not worked :/

    Thanks a lot

    Originally Posted by sneaker View Post
    "low_fps.mp4" sample file is 99% 1 fps. There's only one frame that's irregularly timed (bug in muxer?) so MediaInfo reports a high Maximum frame rate. Compression wise this shouldn't make any difference at all.

    Code:
                            [stts: Decoding Time to Sample Box]
                                position = 7007085
                                size = 40
                                version = 0
                                flags = 0x000000
                                entry_count = 3
                                entry[0]
                                    sample_count = 255
                                    sample_delta = 16384
                                entry[1]
                                    sample_count = 1
                                    sample_delta = 1
                                entry[2]
                                    sample_count = 143
                                    sample_delta = 16384
    I almost asked about it because looking at the size of the video track makes no sense for me this having 16384fps, thanks for the answering
    Image Attached Files
    Quote Quote  
  5. UP!

    Originally Posted by manono View Post
    It's easy enough to do using AviSynth. Since StaxRip uses AviSynth, it should be easy to do in that as well:

    ImageSource("Picture.bmp",End=100,FPS=1).ConvertTo YV12()

    Using ImageSource, you give a name to the picture
    Using ConvertToYV12 you set the colorspace common to almost all videos


    The 'End' setting tells for how many frames the picture is to remain. The framerate is set for 1 so if End=100, the picture will last for 101 seconds. Avisynth counting begins with zero. You can probably replace the script StaxRip gives you with that line. Or use something, like RipBot64, which won't have any problems with that script. Be sure and test out your script in VDub before doing the encode. Once open in VDub, go File->File Information to get information about the video, including how long it'll last.

    If using RipBot64 or other encoders, add your audio separately (WAV audio preferred)
    There's a way to set variable framerate?
    Even using Nvidia hevc?
    Quote Quote  
  6. Your sample used keyint 500, but there's only around 400 frames. That means the first frame is a keyframe, no other frames are keyframes, and seeking is very slow. Maybe you should set keyint to something smaller, such as keyint 1, so there's a new keyframe added every second.

    Why such a low frame rate? And why variable? I ask as I'm new to the thread and may have missed something.
    Quote Quote  
  7. The only way I know of to make something VFR when encoding with Avisynth is to create a timecodes file and add it to the command line for x264 to play with. Failing that you can encode at some constant rate and add the timecodes file when muxing.

    A basic timecodes file looks like this. The default frame rate is 59.94fps in this case. The frames that go by at a different speed need to be specified. It's similar to using Trim() to specify a range of frames.

    # timecode format v1
    Assume 59.940060
    0, 763, 23.9760240
    85902, 87156, 23.9760240

    To add the timecodes file to the x264 command line:
    --tcfile-in "D:\MyTimecodes.txt"

    You can, of course, extract the existing timecodes from MKV source files and use them when re-encoding.
    Quote Quote  
  8. Member
    Join Date
    Oct 2004
    Location
    United States
    Search PM
    The goal is to have the "video" part of the stream be as small as possible, as it simply serves as a backdrop for the audio. Changing fps to 1, increasing the key frame interval, and changing the bitrate to variable should all help in accomplishing this goal.

    I thought I heard something a while back about YouTube being "smart" enough to handle an "audio with image backdrop" file so that it only displayed the image as it it was showing a picture, and then played the audio stream. This would make the "video" portion of the stream only take up as much space as the file size of the picture. Although it wouldn't be a video file as we know it...
    Last edited by greymalkin; 14th Sep 2019 at 11:14.
    Quote Quote  
  9. Staxrip lets you change the AviSynth script it uses. So you can add ChangeFPS(1.0, linear=false) and set the x264 encoder to quality mode or bitrate mode with a low bitrate. That will give you a 1 fps video with the default GOP size of 250 and a low bitrate. You can go with lower frame rates too. For example, ChangeFPS(0.01, linear=false) will give you 1/100 fps. I don't know if youtube can deal with such low frame rates.
    Quote Quote  
  10. Thanks in advance for the support guys!

    Originally Posted by hello_hello View Post
    Your sample used keyint 500, but there's only around 400 frames. That means the first frame is a keyframe, no other frames are keyframes, and seeking is very slow. Maybe you should set keyint to something smaller, such as keyint 1, so there's a new keyframe added every second.

    Why such a low frame rate? And why variable? I ask as I'm new to the thread and may have missed something.
    So, I have an static picture as video track, the problem is that encoder is not so smart, seems that him are encoding by duration, so every each ms him are processing and rendering the image again, this creates picture distortions since the bitrate was changed according the encoder's analyze. My idea was change to variable fps to force encoder to recognize as 1fps static picture...

    Originally Posted by hello_hello View Post
    The only way I know of to make something VFR when encoding with Avisynth is to create a timecodes file and add it to the command line for x264 to play with. Failing that you can encode at some constant rate and add the timecodes file when muxing.

    A basic timecodes file looks like this. The default frame rate is 59.94fps in this case. The frames that go by at a different speed need to be specified. It's similar to using Trim() to specify a range of frames.

    # timecode format v1
    Assume 59.940060
    0, 763, 23.9760240
    85902, 87156, 23.9760240

    To add the timecodes file to the x264 command line:
    --tcfile-in "D:\MyTimecodes.txt"

    You can, of course, extract the existing timecodes from MKV source files and use them when re-encoding.
    mm... I'm very noob, idk if I understood :/

    Originally Posted by greymalkin View Post
    The goal is to have the "video" part of the stream be as small as possible, as it simply serves as a backdrop for the audio. Changing fps to 1, increasing the key frame interval, and changing the bitrate to variable should all help in accomplishing this goal.

    I thought I heard something a while back about YouTube being "smart" enough to handle an "audio with image backdrop" file so that it only displayed the image as it it was showing a picture, and then played the audio stream. This would make the "video" portion of the stream only take up as much space as the file size of the picture. Although it wouldn't be a video file as we know it...
    That's exactly I'm trying to do!

    Originally Posted by jagabo View Post
    Staxrip lets you change the AviSynth script it uses. So you can add ChangeFPS(1.0, linear=false) and set the x264 encoder to quality mode or bitrate mode with a low bitrate. That will give you a 1 fps video with the default GOP size of 250 and a low bitrate. You can go with lower frame rates too. For example, ChangeFPS(0.01, linear=false) will give you 1/100 fps. I don't know if youtube can deal with such low frame rates.
    I'll Try it!

    Right now I had a idea to change motion search estimation, maybe can it can help...
    Quote Quote  
  11. Originally Posted by WilliamFS View Post
    Right now I had a idea to change motion search estimation, maybe can it can help...
    That will have little effect on the file size with a static picture. If there's no motion there's no motion to estimate.
    Quote Quote  



Similar Threads

Visit our sponsor! Try DVDFab and backup Blu-rays!