nu774 / m4acut Goto Github PK
View Code? Open in Web Editor NEWLosslessly & gaplessly cut m4a (AAC in MP4) files.
License: Other
Losslessly & gaplessly cut m4a (AAC in MP4) files.
License: Other
When I use m4acut on a large file with a lot of chapters everything looks & plays fine. But if I concatenate the files with mp4box the timing is wrong. The total time for all the chapters is longer than the original file. It shows the correct number of chapters but when I play it starts in the middle of a chapter. When I concatenate the same files with ffmpeg I get a message like this for every track:
ct timestamps in the output file.
[ipod @ 00000000004f7200] Non-monotonous DTS in output stream 0:0; previous: 2222166728, current: 2222164600; changing to 2222166729. This may result in incorrect timestamps in the output file.
After concatenating with ffmpeg it does play ok. All chapters start at the beginning. Mp4box works fine on original qaac encoded files just not on a m4a split with m4acut. FFmpeg does not give the message on original qaac encoded files either.
Hello -- I am using m4acut with a cue file and get the following output with no files generated, and no error. I am using lsmash from March 5, 2017 commit on github.
m4acut -C xxx.cue file.m4a
lsmash_get_movie_parameters(mov, &m_input.movie_params)
Upon getting below from ./configure
configure: error: L-SMASH version 1.10.0 or greater required
I had to install l-smash on my Mac. Then, it turned out that l-smash is disabled and unmaintained for some reason since Dec. 2020.
To download l-smash, you just need to brew edit l-smash
and comment out the !disable
line.
For m4acut, this worked well and m4acut worked fine (I tested the chapter mode only). Thanks.
Compilation on Linux fails. Here's the complete output:
djcj: m4acut-master $ ./configure
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking whether gcc understands -c and -o together... yes
checking for style of include used by make... GNU
checking dependency style of gcc... gcc3
checking for g++... g++
checking whether we are using the GNU C++ compiler... yes
checking whether g++ accepts -g... yes
checking dependency style of g++... gcc3
checking whether g++ supports C++11 features by default... no
checking whether g++ supports C++11 features with -std=c++11... yes
checking how to run the C++ preprocessor... g++ -E
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking for stdint.h... (cached) yes
checking for _vscprintf... no
checking for getopt_long... yes
checking for struct __timeb64... no
checking for library containing lsmash_get_tyrant_chapter... -llsmash
checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu
checking for ld used by gcc... /usr/bin/ld
checking if the linker (/usr/bin/ld) is GNU ld... yes
checking for shared library run path origin... done
checking for iconv... yes
checking for working iconv... yes
checking for iconv declaration...
extern size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);
checking that generated files are newer than configure... done
configure: creating ./config.status
config.status: creating Makefile
config.status: creating config.h
config.status: executing depfiles commands
djcj: m4acut-master $ LANG=C make
make all-am
make[1]: Entering directory `/home/djcj/Downloads/m4acut-master'
depbase=`echo src/M4ATrimmer.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
g++ -DHAVE_CONFIG_H -I. -g -O2 -std=c++11 -MT src/M4ATrimmer.o -MD -MP -MF $depbase.Tpo -c -o src/M4ATrimmer.o src/M4ATrimmer.cpp &&\
mv -f $depbase.Tpo $depbase.Po
depbase=`echo src/MP4Edits.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
g++ -DHAVE_CONFIG_H -I. -g -O2 -std=c++11 -MT src/MP4Edits.o -MD -MP -MF $depbase.Tpo -c -o src/MP4Edits.o src/MP4Edits.cpp &&\
mv -f $depbase.Tpo $depbase.Po
depbase=`echo src/StringConverterUTF8.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
g++ -DHAVE_CONFIG_H -I. -g -O2 -std=c++11 -MT src/StringConverterUTF8.o -MD -MP -MF $depbase.Tpo -c -o src/StringConverterUTF8.o src/StringConverterUTF8.cpp &&\
mv -f $depbase.Tpo $depbase.Po
depbase=`echo src/cuesheet.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
g++ -DHAVE_CONFIG_H -I. -g -O2 -std=c++11 -MT src/cuesheet.o -MD -MP -MF $depbase.Tpo -c -o src/cuesheet.o src/cuesheet.cpp &&\
mv -f $depbase.Tpo $depbase.Po
depbase=`echo src/main.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
g++ -DHAVE_CONFIG_H -I. -g -O2 -std=c++11 -MT src/main.o -MD -MP -MF $depbase.Tpo -c -o src/main.o src/main.cpp &&\
mv -f $depbase.Tpo $depbase.Po
depbase=`echo src/StringConverterIConv.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
g++ -DHAVE_CONFIG_H -I. -g -O2 -std=c++11 -MT src/StringConverterIConv.o -MD -MP -MF $depbase.Tpo -c -o src/StringConverterIConv.o src/StringConverterIConv.cpp &&\
mv -f $depbase.Tpo $depbase.Po
src/StringConverterIConv.cpp: In member function 'virtual std::pair<bool, std::basic_string<char> > StringConverterIConv::convert(const string&, bool)':
src/StringConverterIConv.cpp:30:13: error: 'ptrdiff_t' was not declared in this scope
ptrdiff_t off = op - dest.data();
^
src/StringConverterIConv.cpp:30:13: note: suggested alternatives:
In file included from /usr/include/c++/4.8/bits/stl_algobase.h:59:0,
from /usr/include/c++/4.8/vector:60,
from src/StringConverterIConv.cpp:1:
/usr/include/x86_64-linux-gnu/c++/4.8/bits/c++config.h:187:28: note: 'std::ptrdiff_t'
typedef __PTRDIFF_TYPE__ ptrdiff_t;
^
/usr/include/x86_64-linux-gnu/c++/4.8/bits/c++config.h:187:28: note: 'std::ptrdiff_t'
src/StringConverterIConv.cpp:30:23: error: expected ';' before 'off'
ptrdiff_t off = op - dest.data();
^
src/StringConverterIConv.cpp:32:35: error: 'off' was not declared in this scope
op = dest.data() + off;
^
src/StringConverterIConv.cpp:43:5: error: 'ptrdiff_t' was not declared in this scope
ptrdiff_t off = ip - m_remainder.data();
^
src/StringConverterIConv.cpp:43:5: note: suggested alternatives:
In file included from /usr/include/c++/4.8/bits/stl_algobase.h:59:0,
from /usr/include/c++/4.8/vector:60,
from src/StringConverterIConv.cpp:1:
/usr/include/x86_64-linux-gnu/c++/4.8/bits/c++config.h:187:28: note: 'std::ptrdiff_t'
typedef __PTRDIFF_TYPE__ ptrdiff_t;
^
/usr/include/x86_64-linux-gnu/c++/4.8/bits/c++config.h:187:28: note: 'std::ptrdiff_t'
src/StringConverterIConv.cpp:43:15: error: expected ';' before 'off'
ptrdiff_t off = ip - m_remainder.data();
^
src/StringConverterIConv.cpp:44:9: error: 'off' was not declared in this scope
if (off == m_remainder.size())
^
make[1]: *** [src/StringConverterIConv.o] Error 1
make[1]: Leaving directory `/home/djcj/Downloads/m4acut-master'
make: *** [all] Error 2
It would be really helpful if there was an option to save all of the new files into a new directory. It could take the name or title or the original file.
Would be cool ๐
Is it possible to split files to a separate directory?
Eg. I have a folder with podcasts (POD1.m4a, POD2.m4a etc), and I want to split the entire dir (perhaps with a simple batch for loop), but can I set the output folder? So like this:
POD1/01 First track.m4a
POD1/02 Second track.m4a
POD2/01 First track.m4a
Instead of all in the same folder.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.