VideoHelp Forum
+ Reply to Thread
Results 1 to 11 of 11
Thread
  1. FLAC is supposed to reduce the size of the audio source. For some reason though, whenever I try to use it to encode this .DTS audio source from my Blu-Ray, it is taking a 269MB .DTS file and converting it into a 629MB audio file.

    I have tried all the different compression levels and the size only varies by a couple MB. It's still coming out about 630MB on average. Whats going on here? Why is this making it larger and not shrinking it like it is supposed to be doing?

    I have tried 3 different softwares, and all of them are giving me these same results. I even tried updating FLAC to the newest release, and this is still happening.
    Quote Quote  
  2. FLAC is supposed to reduce the size of the audio source.
    That you got wrong. FLAC is supposed to compress better than most other lossless audio formats like DTS-HD.

    If you take a compressed format like .ac3, .dts, .mp3,... decode it and then encode it to a lossless format like FLAC, file size naturally will increase.

    => There is no problem with FLAC. Just what you expected it to do is wrong.

    Cu Selur
    users currently on my ignore list: deadrats, Stears555
    Quote Quote  
  3. Originally Posted by Selur View Post
    FLAC is supposed to compress better than most other lossless audio formats like DTS-HD.
    Exactly, and as a result it gives a file with a lower size because it compressed it better. Thus reducing the size of the source audio file like I said.

    DTS is lossless audio already. I am working with a lossless audio source. FLAC is supposed to be compressing it. The size is not supposed to be increasing by 3x. Even if it were one of the other compressed formats, that is way too much of a size increase.

    I just asked a friend if they would try it, and it came out smaller for them. They encode FLAC all the time because it comes out smaller than DTS.
    My issue was my encoders were outputting 24-bit FLAC audio files when the source was only 16-bit. As soon as they are set to be 16-bit instead of 24-bit, the 3x file size is greatly reduced, and it comes out smaller than the DTS file. It was padding them or something, and making much larger when set for 24-bit.

    Originally Posted by Selur View Post
    => There is no problem with FLAC. Just what you expected it to do is wrong.
    There was a problem with it. The problem was my settings.
    Last edited by killerteengohan; 30th Oct 2022 at 08:18.
    Quote Quote  
  4. Okay,... but DTS is not lossless. DTS-HD is,...
    users currently on my ignore list: deadrats, Stears555
    Quote Quote  
  5. Originally Posted by Selur View Post
    Okay,... but DTS is not lossless. DTS-HD is,...
    That's what Blu-Ray audio is according to the information for it on the case. The file on the computer ends with .DTS regardless though. Its not gonna be "Audio.DTS-HD", or at least I have never seen that file extension before. That's why I called it .DTS.
    I apologize if that was confusing.

    Thanks for the answer!
    Quote Quote  
  6. I apologize if that was confusing.
    Ah, okay, that explains it.
    users currently on my ignore list: deadrats, Stears555
    Quote Quote  
  7. Would you happen to know the command line for FLAC to make it output 16-bit? I found this "-sample_fmt s16" and tried to use it, but no matter what I try, it will not work with MeGui.

    I don't even know if thats the correct command line usage. The error I get just keeps saying "ERROR: --channels not allowed with --decode"

    Audacity I can just choose 16-Bit in settings, but MeGui defaults to 24-Bits. I would use Audacity, but I have avisynth syncing involved that can't be used with Audacity.
    Quote Quote  
  8. No clue about MeGui, but 'flac --explain' reports:
    Code:
    ===============================================================================
    flac - Command-line FLAC encoder/decoder version 1.4.0
    Copyright (C) 2000-2009  Josh Coalson
    Copyright (C) 2011-2022  Xiph.Org Foundation
    
    This program is free software; you can redistribute it and/or
    modify it under the terms of the GNU General Public License
    as published by the Free Software Foundation; either version 2
    of the License, or (at your option) any later version.
    
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.
    
    You should have received a copy of the GNU General Public License along
    with this program; if not, write to the Free Software Foundation, Inc.,
    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
    ===============================================================================
    Usage:
    
     Encoding: flac [<general/encoding/format options>] [INPUTFILE [...]]
     Decoding: flac -d [<general/decoding/format options>] [FLACFILE [...]]
      Testing: flac -t [<general options>] [FLACFILE [...]]
    Analyzing: flac -a [<general/analysis options>] [FLACFILE [...]]
    
    Be sure to read the list of known bugs at:
    http://xiph.org/flac/documentation_bugs.html
    
    For encoding:
      The input file(s) may be a PCM WAVE, Wave64, RF64 file, AIFF (or uncompressed
      AIFF-C) file, or raw samples. The output file(s)  will be in native FLAC
      or Ogg FLAC format
    For decoding, the reverse is true.
    
    A single INPUTFILE may be - for stdin.  No INPUTFILE implies stdin.  Use of
    stdin implies -c (write to stdout).  Normally you should use:
       flac [options] -o outfilename  or  flac -d [options] -o outfilename
    instead of:
       flac [options] > outfilename   or  flac -d [options] > outfilename
    since the former allows flac to seek backwards to write the STREAMINFO or
    WAVE/AIFF header contents when necessary.
    
    general options:
      -v, --version                Show the flac version number
      -h, --help                   Show basic usage a list of all options
      -H, --explain                Show this screen
      -d, --decode                 Decode (the default behavior is to encode)
      -t, --test                   Same as -d except no decoded file is written
      -a, --analyze                Same as -d except an analysis file is written
      -c, --stdout                 Write output to stdout
      -s, --silent                 Do not write runtime encode/decode statistics
          --totally-silent         Do not print anything of any kind, including
                                   warnings or errors.  The exit code will be the
                                   only way to determine successful completion.
          --no-utf8-convert        Do not convert tags from local charset to UTF-8.
                                   This is useful for scripts, and setting tags in
                                   situations where the locale is wrong.  This
                                   option must appear before any tag options!
      -w, --warnings-as-errors     Treat all warnings as errors
      -f, --force                  Force overwriting of output files
      -o, --output-name=FILENAME   Force the output file name; usually flac just
                                   changes the extension.  May only be used when
                                   encoding a single file.  May not be used in
                                   conjunction with --output-prefix.
          --output-prefix=STRING   Prefix each output file name with the given
                                   STRING.  This can be useful for encoding or
                                   decoding files to a different directory.  Make
                                   sure if your STRING is a path name that it ends
                                   with a '/' slash.
          --delete-input-file      Automatically delete the input file after a
                                   successful encode or decode.  If there was an
                                   error (including a verify error) the input file
                                   is left intact.
          --preserve-modtime       Output files have their timestamps/permissions
                                   set to match those of their inputs (this is
                                   default).  Use --no-preserve-modtime to make
                                   output files have the current time and default
                                   permissions.
          --keep-foreign-metadata  If encoding, save WAVE or AIFF non-audio chunks
                                   in FLAC metadata.  If decoding, restore any saved
                                   non-audio chunks from FLAC metadata when writing
                                   the decoded file.  Foreign metadata cannot be
                                   transcoded, e.g. WAVE chunks saved in a FLAC file
                                   cannot be restored when decoding to AIFF.  Input
                                   and output must be regular files, not stdin/out.
          --keep-foreign-metadata-if-present  As previous option, but do not throw
                                   an error in case no foreign metadata is found,
                                   the wrong kind of foreign metadata is found (on
                                   decoding) or if the foreign could not be parsed,
                                   i.e. all foreign metadata related errors are
                                   treated as warnings.
          --skip={#|mm:ss.ss}      Skip the first # samples of each input file; can
                                   be used both for encoding and decoding.  The
                                   alternative form mm:ss.ss can be used to specify
                                   minutes, seconds, and fractions of a second.
          --until={#|[+|-]mm:ss.ss}  Stop at the given sample number for each input
                                   file.  The given sample number is not included
                                   in the decoded output.  The alternative form
                                   mm:ss.ss can be used to specify minutes,
                                   seconds, and fractions of a second.  If a `+'
                                   sign is at the beginning, the --until point is
                                   relative to the --skip point.  If a `-' sign is
                                   at the beginning, the --until point is relative
                                   to end of the audio.
          --ogg                    When encoding, generate Ogg FLAC output instead
                                   of native FLAC.  Ogg FLAC streams are FLAC
                                   streams wrapped in an Ogg transport layer.  The
                                   resulting file should have an '.oga' extension
                                   and will still be decodable by flac.  When
                                   decoding, force the input to be treated as
                                   Ogg FLAC.  This is useful when piping input
                                   from stdin or when the filename does not end in
                                   '.oga' or '.ogg'.
          --serial-number          Serial number to use for the FLAC stream.  When
                                   encoding and no serial number is given, flac
                                   uses a random one.  If encoding to multiple files
                                   the serial number is incremented for each file.
                                   When decoding and no number is given, flac uses
                                   the serial number of the first page.
    analysis options:
          --residual-text          Include residual signal in text output.  This
                                   will make the file very big, much larger than
                                   even the decoded file.
          --residual-gnuplot       Generate gnuplot files of residual distribution
                                   of each subframe
    decoding options:
      -F, --decode-through-errors  By default flac stops decoding with an error
                                   and removes the partially decoded file if it
                                   encounters a bitstream error.  With -F, errors
                                   are still printed but flac will continue
                                   decoding to completion.  Note that errors may
                                   cause the decoded audio to be missing some
                                   samples or have silent sections.
          --cue=[#.#][-[#.#]]      Set the beginning and ending cuepoints to
                                   decode.  The optional first #.# is the track and
                                   index point at which decoding will start; the
                                   default is the beginning of the stream.  The
                                   optional second #.# is the track and index point
                                   at which decoding will end; the default is the
                                   end of the stream.  If the cuepoint does not
                                   exist, the closest one before it (for the start
                                   point) or after it (for the end point) will be
                                   used.  The cuepoints are merely translated into
                                   sample numbers then used as --skip and --until.
                                   A CD track can always be cued by, for example,
                                   --cue=9.1-10.1 for track 9, even if the CD has
                                   no 10th track.
    encoding options:
      -V, --verify                 Verify a correct encoding by decoding the
                                   output in parallel and comparing to the
                                   original
          --lax                    Allow encoder to generate non-Subset files
          --ignore-chunk-sizes     Ignore data chunk sizes in WAVE/AIFF files;
                                   useful when piping data from programs which
                                   generate bogus data chunk sizes.
          --sector-align           Align encoding of multiple CD format WAVE files
                                   on sector boundaries.  This option is DEPRECATED
                                   and may not exist in future versions of flac.
                                   shntool offers similar functionality.
          --replay-gain            Calculate ReplayGain values and store them as
                                   FLAC tags.  Title gains/peaks will be computed
                                   for each file, and an album gain/peak will be
                                   computed for all files.  All input files must
                                   have the same resolution, sample rate, and
                                   number of channels.  The sample rate must be
                                   one of 8, 11.025, 12, 16, 22.05, 24, 32, 44.1,
                                   or 48 kHz.  NOTE: this option may also leave a
                                   few extra bytes in the PADDING block.
          --cuesheet=FILENAME      Import the given cuesheet file and store it in
                                   a CUESHEET metadata block.  This option may only
                                   be used when encoding a single file.  A
                                   seekpoint will be added for each index point in
                                   the cuesheet to the SEEKTABLE unless
                                   --no-cued-seekpoints is specified.
          --picture=SPECIFICATION  Import a picture and store it in a PICTURE block.
                                   More than one --picture command can be specified.
                                   The SPECIFICATION can either be a simple filename
                                   for the picture file, or a complete specification
                                   whose parts are separated by | characters.  Some
                                   parts may be left empty to invoke default values.
                                   Using a filename is shorthand for "||||FILE".
                                   The SPECIFICATION format is:
             [TYPE]|[MIME-TYPE]|[DESCRIPTION]|[WIDTHxHEIGHTxDEPTH[/COLORS]]|FILE
               TYPE is optional; it is a number from one of:
                  0: Other
                  1: 32x32 pixels 'file icon' (PNG only)
                  2: Other file icon
                  3: Cover (front)
                  4: Cover (back)
                  5: Leaflet page
                  6: Media (e.g. label side of CD)
                  7: Lead artist/lead performer/soloist
                  8: Artist/performer
                  9: Conductor
                 10: Band/Orchestra
                 11: Composer
                 12: Lyricist/text writer
                 13: Recording Location
                 14: During recording
                 15: During performance
                 16: Movie/video screen capture
                 17: A bright coloured fish
                 18: Illustration
                 19: Band/artist logotype
                 20: Publisher/Studio logotype
                 The default is 3 (front cover).  There may only be one picture each
                 of type 1 and 2 in a file.
               MIME-TYPE is optional; if left blank, it will be detected from the
                 file.  For best compatibility with players, use pictures with MIME
                 type image/jpeg or image/png.  The MIME type can also be --> to
                 mean that FILE is actually a URL to an image, though this use is
                 discouraged.
               DESCRIPTION is optional; the default is an empty string
               The next part specifies the resolution and color information.  If
                 the MIME-TYPE is image/jpeg, image/png, or image/gif, you can
                 usually leave this empty and they can be detected from the file.
                 Otherwise, you must specify the width in pixels, height in pixels,
                 and color depth in bits-per-pixel.  If the image has indexed colors
                 you should also specify the number of colors used.
               FILE is the path to the picture file to be imported, or the URL if
                 MIME type is -->
      -T, --tag=FIELD=VALUE        Add a FLAC tag.  Make sure to quote the
                                   comment if necessary.  This option may appear
                                   more than once to add several comments.  NOTE:
                                   all tags will be added to all encoded files.
          --tag-from-file=FIELD=FILENAME   Like --tag, except FILENAME is a file
                                   whose contents will be read verbatim to set the
                                   tag value.  The contents will be converted to
                                   UTF-8 from the local charset.  This can be used
                                   to store a cuesheet in a tag (e.g.
                                   --tag-from-file="CUESHEET=image.cue").  Do not
                                   try to store binary data in tag fields!  Use
                                   APPLICATION blocks for that.
      -S, --seekpoint={#|X|#x|#s}  Include a point or points in a SEEKTABLE
           #  : a specific sample number for a seek point
           X  : a placeholder point (always goes at the end of the SEEKTABLE)
           #x : # evenly spaced seekpoints, the first being at sample 0
           #s : a seekpoint every # seconds; # does not have to be a whole number
         You may use many -S options; the resulting SEEKTABLE will be the unique-
               ified union of all such values.
         With no -S options, flac defaults to '-S 10s'.  Use -S- for no SEEKTABLE.
         Note: -S #x and -S #s will not work if the encoder can't determine the
               input size before starting.
         Note: if you use -S # and # is >= samples in the input, there will be
               either no seek point entered (if the input size is determinable
               before encoding starts) or a placeholder point (if input size is not
               determinable)
      -P, --padding=#              Tell the encoder to write a PADDING metadata
                                   block of the given length (in bytes) after the
                                   STREAMINFO block.  This is useful if you plan
                                   to tag the file later with an APPLICATION
                                   block; instead of having to rewrite the entire
                                   file later just to insert your block, you can
                                   write directly over the PADDING block.  Note
                                   that the total length of the PADDING block will
                                   be 4 bytes longer than the length given because
                                   of the 4 metadata block header bytes.  You can
                                   force no PADDING block at all to be written with
                                   --no-padding.  The encoder writes a PADDING
                                   block of 8192 bytes by default, or 65536 bytes
                                   if the input audio is more than 20 minutes long.
      -b, --blocksize=#            Specify the blocksize in samples; the default is
                                   1152 for -l 0, else 4096; for subset streams this
                                   must be <= 4608 if the samplerate <= 48kHz,
                                   for subset streams with a higher samplerates it
                                   must be <= 16384.
      -0, --compression-level-0, --fast  Synonymous with -l 0 -b 1152 -r 3
                                                                --no-mid-side
      -1, --compression-level-1          Synonymous with -l 0 -b 1152 -M -r 3
      -2, --compression-level-2          Synonymous with -l 0 -b 1152 -m -r 3
      -3, --compression-level-3          Synonymous with -l 6 -b 4096 -r 4
                                                                --no-mid-side
      -4, --compression-level-4          Synonymous with -l 8 -b 4096 -M -r 4
      -5, --compression-level-5          Synonymous with -l 8 -b 4096 -m -r 5
                                         -5 is the default setting
      -6, --compression-level-6          Synonymous with -l 8 -b 4096 -m -r 6
                                            -A tukey(0.5) -A partial_tukey(2)
      -7, --compression-level-7          Synonymous with -l 12 -b 4096 -m -r 6
                                             -A tukey(0.5) -A partial_tukey(2)
      -8, --compression-level-8, --best  Synonymous with -l 12 -b 4096 -m -r 6
                        -A tukey(0.5) -A partial_tukey(2) -A punchout_tukey(3)
      -m, --mid-side                     Try mid-side coding for each frame
                                         (stereo only)
      -M, --adaptive-mid-side            Adaptive mid-side coding for all frames
                                         (stereo only)
      -e, --exhaustive-model-search      Do exhaustive model search (expensive!)
      -A, --apodization="function"       Window audio data with given the function.
                                         The functions are: bartlett, bartlett_hann,
                                         blackman, blackman_harris_4term_92db,
                                         connes, flattop, gauss(STDDEV), hamming,
                                         hann, kaiser_bessel, nuttall, rectangle,
                                         triangle, tukey(P), welch, partial_tukey(n)
                                         punchout_tukey(n) and subdivide_tukey(n).
                                         More than one may be specified but encoding
                                         time is a multiple of the number of
                                         functions since they are each tried in 
                                         turn.  The encoder chooses suitable
                                         defaults in the absence of any -A options.
      -l, --max-lpc-order=#              Max LPC order; 0 => only fixed predictors.
                                         Must be <= 12 for Subset streams if sample
                                         rate is <=48kHz.
      -p, --qlp-coeff-precision-search   Do exhaustive search of LP coefficient
                                         quantization (expensive!); overrides -q;
                                         does nothing if using -l 0
      -q, --qlp-coeff-precision=#        Specify precision in bits of quantized
                                         linear-predictor coefficients; 0 => let
                                         encoder decide (the minimum is 5, the
                                         default is -q 0)
      -r, --rice-partition-order=[#,]#   Set [min,]max residual partition order
                                         (# is 0 to 15 inclusive; min defaults to 0;
                                         the default is -r 0; above 4 does not
                                         usually help much)
          --limit-min-bitrate            Limit minimum bitrate by not allowing
                                         frames consisting of only constant
                                         subframes. This ensures a bitrate of at
                                         least 1 bit/sample, for example 48kbit/s
                                         for 48kHz input. This is mostly beneficial
                                         for internet streaming.
    format options:
          --force-raw-format       Force input (when encoding) or output (when
                                   decoding) to be treated as raw samples
          --force-aiff-format      Force the decoder to output AIFF format.  This
                                   option is not needed if the output filename (as
                                   set by -o) ends with .aif or .aiff; this option
                                   has no effect when encoding since input AIFF is
                                   auto-detected.
          --force-rf64-format      Force the decoder to output RF64 format.  This
                                   option is not needed if the output filename (as
                                   set by -o) ends with .rf64; this option
                                   has no effect when encoding since input RF64 is
                                   auto-detected.
          --force-wave64-format    Force the decoder to output Wave64 format.  This
                                   option is not needed if the output filename (as
                                   set by -o) ends with .w64; this option
                                   has no effect when encoding since input Wave64 is
                                   auto-detected.
    raw format options:
          --endian={big|little}    Set byte order for samples
          --channels=#             Number of channels
          --bps=#                  Number of bits per sample
          --sample-rate=#          Sample rate in Hz
          --sign={signed|unsigned} Sign of samples (the default is signed)
          --input-size=#           Size of the raw input in bytes.  If you are
                                   encoding raw samples from stdin, you must set
                                   this option in order to be able to use --skip,
                                   --until, --cuesheet, or other options that need
                                   to know the size of the input beforehand.  If
                                   the size given is greater than what is found in
                                   the input stream, the encoder will complain
                                   about an unexpected end-of-file.  If the size
                                   given is less, samples will be truncated.
    negative options:
          --no-adaptive-mid-side
          --no-cued-seekpoints
          --no-decode-through-errors
          --no-delete-input-file
          --no-preserve-modtime
          --no-keep-foreign-metadata
          --no-exhaustive-model-search
          --no-lax
          --no-mid-side
          --no-ogg
          --no-padding
          --no-qlp-coeff-prec-search
          --no-residual-gnuplot
          --no-residual-text
          --no-ignore-chunk-sizes
          --no-sector-align
          --no-seektable
          --no-silent
          --no-force
          --no-verify
          --no-warnings-as-errors
    So assuming MeGui uses the raw format "--bps=16" should set 16bit per sample.
    users currently on my ignore list: deadrats, Stears555
    Quote Quote  
  9. It ran, but unfortunately that parameter added to the command line did not change anything. It still came out as 24-bit.

    It says it ran this command line in the log.
    --force --force-raw-format --endian=little --sign=signed -4 --bps=16 - -o "{0}"
    Quote Quote  
  10. I just checked, what Hybrid does, and it uses the flac.exe only for 24bit for other bit depths ffmpeg is used.
    -> I suspect that flac.exe always creates 24bit output and you should use ffmpeg to do what you want.
    users currently on my ignore list: deadrats, Stears555
    Quote Quote  
  11. Originally Posted by Selur View Post
    -> I suspect that flac.exe always creates 24bit output and you should use ffmpeg to do what you want.
    I think you may be right.


    I noticed in log it's also running an avisynth script right before encoding and using the command line. This is the sync info.

    Code:
    -[NoImage] LoadPlugin("C:\Users\Aiden\Desktop\MeGUI\tools\lsmash\LSMASHSource.dll")
    -[NoImage] LWLibavAudioSource("C:\Users\Aiden\Desktop\Encoding\Blu-Ray\Episode 1\T2_Audio - English.dts")
    -[NoImage] __film = last
    -[NoImage] __just_audio = __film
    -[NoImage] __blank = BlankClip(length=44834, fps=29.97)
    -[NoImage] __film = AudioDub(__blank, __film)
    -[NoImage] __t0 = __film.trim(0, 29)
    -[NoImage] __t1 = __film.trim(0, 2787)
    -[NoImage] __t2 = __film.trim(2794, 44834)
    -[NoImage] __t0 ++ __t1 ++ __t2 
    -[NoImage] AudioDubEx(__just_audio, last)
    -[NoImage] # detected channels: 6
    -[NoImage] # detected channel positions: 3/2/0.1
    -[NoImage] AudioBits(last)>24?ConvertAudioTo24bit(last):last 
    -[NoImage] return last
    It is doing this on it's own, and I have no way to change the settings for it. I think it might be overriding the command line perhaps or exactly what you suspected is happening.

    An older version of MeGui however uses this in it's script.
    Code:
    AudioBits(last)>24?ConvertAudioTo16bit(last):last
    This is coming out as 16bits, and I didn't even need to use the --bps=16

    I think I can just make an avisynth script with the ConvertAudioTo16bit in it, and run the script instead of the built in encoder and settings. I will give that a try later when I have the time.
    Quote Quote  



Similar Threads

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