MPEG-1 Audio Layer II (mp2) encoding with FFmpeg / avconv
authorAndrew Strong <andrew.david.strong@gmail.com>
Fri, 31 Jul 2015 07:03:23 +0000 (17:03 +1000)
committerAndrew Strong <andrew.david.strong@gmail.com>
Fri, 31 Jul 2015 07:03:23 +0000 (17:03 +1000)
Tagging is with mid3v2 as neither FFmpeg or avconv tag mp2 files.

abcde
abcde.1
abcde.conf
changelog

diff --git a/abcde b/abcde
index b2da1f8..925d78f 100755 (executable)
--- a/abcde
+++ b/abcde
@@ -974,8 +974,9 @@ do_tag ()
                        ;;
                mp2)
                        # Using Mutagen's mid3v2 for tagging with id3v2.4.0. Interesting enough vlc, MPlayer and XMMS ignore
-                       # these tags but they are read by Audacious, Xine, Aqualung, mediainfo, ffplay, ffprobe. Curious...
-                       run_command tagtrack-$OUTPUT-$1 nice $ENCNICE "$MID3V2" -A "$DALBUM" -a "$TRACKARTIST" -t "$TRACKNAME" \
+                       # these tags but they are read by Audacious, Xine, Aqualung, mediainfo, ffplay, ffprobe. FFmpeg does
+                       # not currently tag mp2 audio so twolame and FFmpeg will both use mid3v2...
+                       run_command tagtrack-$OUTPUT-$1 nice $ENCNICE "$MID3V2" --verbose -A "$DALBUM" -a "$TRACKARTIST" -t "$TRACKNAME" \
                        -y "$CDYEAR" -g "$CDGENRE" -T "${TRACKNUM:-$1}/$TRACKS" ${TPE2:+--TPE2 "$TPE2"} ${COMMENTOUTPUT:+--comment="$COMMENTOUTPUT"} \
                        "$ABCDETEMPDIR/track$1.mp2"
                        ;;
@@ -1261,7 +1262,14 @@ do_encode ()
                                $RUN_COMMAND nice $EFFECTIVE_NICE $APENCODER "$IN" "$OUT" $APENCODEROPTS
                                ;;
                        mp2)
-                               $RUN_COMMAND nice $EFFECTIVE_NICE $MP2ENCODER $MP2ENCODEROPTS "$IN" "$OUT" 
+                               case "$MP2ENCODERSYNTAX" in
+                                       twolame)
+                                       $RUN_COMMAND nice $EFFECTIVE_NICE $MP2ENCODER $MP2ENCODEROPTS "$IN" "$OUT"
+                                       ;;
+                                       ffmpeg)
+                                       $RUN_COMMAND nice $EFFECTIVE_NICE $MP2ENCODER -i "$IN" $MP2ENCODEROPTS "$OUT" 
+                                       ;;
+                               esac
                                ;;
                        aac)
                                # aac container is only used to catch faac encoded files where faac 
@@ -4149,6 +4157,7 @@ do
                mp2)
                        [ "$MP2ENCODERSYNTAX" = "default" ] && MP2ENCODERSYNTAX=twolame
                        [ "$DOTAG" = "y" ] && NEEDMID3V2=y
+                       [ "$MP2ENCODERSYNTAX" = "ffmpeg" ] && [ "$DOTAG" = "y" ]  && NEEDMID3V2=y
                        ;;
                aac)
                        [ "$AACENCODERSYNTAX" = "default" ] && AACENCODERSYNTAX=faac
@@ -4162,7 +4171,7 @@ do
                        [ "$AACENCODERSYNTAX" = "neroAacEnc" ] && NEEDNEROAACTAG=y
                        [ "$AACENCODERSYNTAX" = "qaac" ] && NEEDWINE=y
                        [ "$AACENCODERSYNTAX" = "fhgaacenc" ] && NEEDWINE=y && NEEDATOMICPARSLEY=y
-                       [ "$AACENCODERSYNTAX" = "ffmpeg" ] &&  [ "$DOTAG" = "y" ]
+                       [ "$AACENCODERSYNTAX" = "ffmpeg" ] && [ "$DOTAG" = "y" ]
                        ;;
                wav)
                        if [ "$KEEPWAVS" = "y" ]; then
@@ -4277,6 +4286,10 @@ case "$MP2ENCODERSYNTAX" in
                MP2ENCODEROPTS="${MP2ENCODEROPTSCLI:-$TWOLAMENCOPTS}"
                MP2ENCODER="$TWOLAME"
                ;;
+       ffmpeg)
+               MP2ENCODEROPTS="${MP2ENCODEROPTSCLI:-$FFMPEGENCOPTS}"
+               MP2ENCODER="$FFMPEG"
+               ;;
 esac
 case "$AACENCODERSYNTAX" in
                # Some elaborate 'if' work to keep backward compatibility for those
diff --git a/abcde.1 b/abcde.1
index badd0d7..97343a4 100644 (file)
--- a/abcde.1
+++ b/abcde.1
@@ -321,7 +321,7 @@ Specifies the style of encoder to use for the FLAC encoder. At this point only
 .TP
 .B MP2ENCODERSYNTAX
 Specifies the style of encoder to use for the MPEG-1 Audio Layer II (MP2) encoder.
-At this point only \'twolame\' is available for MP2 encoding.
+At this point both \'twolame\' and \'ffmpeg\' are available for MP2 encoding.
 .TP
 .B SPEEXENCODERSYNTAX
 Specifies the style of encoder to use for Speex encoder. At this point only
index 3b8e489..8238f62 100644 (file)
@@ -66,7 +66,7 @@
 # mac - for APENCODERSYNTAX
 # faac, neroAacEnc, fdkaac, qaac, fhgaacenc, ffmpeg - for AACENCODERSYNTAX
 # opusenc - for OPUSENCODERSYNTAX
-# twolame - for MP2ENCODERSYNTAX
+# twolame, ffmpeg - for MP2ENCODERSYNTAX
 # default is a valid option for oggenc, lame, flac, speexenc, mpcenc, wavpack,
 # faac, opus and twolame. Currently this affects the default location of the
 # binary, the variable to pick encoder command-line options from, and where
 #OPUSENCOPTS=
 
 # MP2
-# Currently uses only twolame, for options look at: 'twolame --help',
-# a highly recommended setting is "--bitrate 320".
+# Currently uses either twolame or ffmpeg, for twolame options look at:
+# 'twolame --help',a highly recommended setting is "--bitrate 320".
 #TWOLAMENCOPTS=
 
 # FFmpeg or avconv can be used for several audio codecs:
 #    Consider setting the following with a compression_level between 0-8:
 #    FFMPEGENCOPTS="-c:a wavpack -compression_level 6"
 # 2. Encoding to ALAC (both FFmpeg and avconv have a native encoder).
-#    Consider using the following for both FFmpeg and avconv:
-#    FFMPEGENCOPTS="-c:a alac" 
+#    Consider using the following for either FFmpeg and avconv:
+#    FFMPEGENCOPTS="-c:a alac"
+# 3. Encoding to mp2
+#    Consider using the following for either FFmpeg and avconv:
+#    FFMPEGENCOPTS="-c:a mp2 -b:a 320k"
 #FFMPEGENCOPTS=
 
 # mp3 tagging:
index f3e9fd0..c46494a 100644 (file)
--- a/changelog
+++ b/changelog
@@ -1,7 +1,7 @@
 abcde 2.7.1
 
   * Support added for encoding to MPEG-1 Audio Layer II (mp2)
-    with twolame. Tagging with mid3v2.
+    with either twolame or FFmpeg / avconv. Tagging with mid3v2.
   * Encoding to WavPack with FFmpeg. Some slight changes to WavPack
     syntax with backward compatibility built in for abcde 2.7. 
   * Encoding to m4a container with FFmpeg or avconv. This allows