I'm using the windows build of ffmpeg (details below), and when I try to transcode a video with the output file NOT in the local directory, it complains with the error message :
/dtop/out.mp4: No such file or directory
My cygwin mounts are as follows - I have not found any other application which doesn't follow the mounts/links correctly...
[lwobker:/dtop/vertigo]$ mount
C:/Documents and Settings/lwobker/Desktop on /dtop type ntfs (binary)
C:/cygwin/bin on /usr/bin type ntfs (binary,auto)
C:/cygwin/lib on /usr/lib type ntfs (binary,auto)
C:/cygwin on / type ntfs (binary,auto)
C: on /cygdrive/c type ntfs (binary,posix=0,user,noumount,auto)
Here's what I've managed to figure out so far, leading me to believe that for some reason FFMPEG does not like following mount points or links in cygwin. But I'll be damned if I can figure out why...
if I do this, it WORKS:
ffmpeg -i ./input.mp4 ./out.mp4
if I do this, it WORKS (permission and mount/link check):
touch /dtop/out.mp4
however, if I give a file location that is not in the current working directory or a subdirectory of the current working directory, it pukes:
[lwobker:/dtop/vertigo]$ ffmpeg -i 00001.MTS /dtop/out.mp4
ffmpeg version N-64919-ga613257 Copyright (c) 2000-2014 the FFmpeg developers
<snip>
Input #0, mpegts, from '00001.MTS':
Duration: 00:01:41.63, start: 1.033367, bitrate: 10221 kb/s
Program 1
Stream #0:0[0x1011]: Video: h264 (High) (HDMV / 0x564D4448), yuv420p, 1440x1080 [SAR 4:3 DAR 16:9], 29.97 fps, 29.97 tbr, 90k tbn, 59.94 tbc
Stream #0:1[0x1100]: Audio: ac3 (AC-3 / 0x332D4341), 48000 Hz, stereo, fltp, 256 kb/s
Stream #0:2[0x1200]: Subtitle: hdmv_pgs_subtitle ([144][0][0][0] / 0x0090), 1920x1080
/dtop/out.mp4: No such file or directory
it also pukes if I give it /cygdrive/c/somefile.mp4 as an argument - it won't find that either.
Any ideas would be really appreciated. I had this working with a version of FFMPEG that I had compiled from source locally within cygwin, but when I moved machines I could not get it to recompile correctly so I'm hoping to figure this out so I can use the pre-compiled binaries for convenience...
FFMPEG version details:
[lwobker:/dtop/vertigo]$ ffmpeg
ffmpeg version N-64919-ga613257 Copyright (c) 2000-2014 the FFmpeg developers
built on Jul 23 2014 00:35:22 with gcc 4.8.3 (GCC)
configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libfreetype --enable-libgme --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinger --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-decklink --enable-zlib
libavutil 52. 92.101 / 52. 92.101
libavcodec 55. 69.100 / 55. 69.100
libavformat 55. 48.101 / 55. 48.101
libavdevice 55. 13.102 / 55. 13.102
libavfilter 4. 11.102 / 4. 11.102
libswscale 2. 6.100 / 2. 6.100
libswresample 0. 19.100 / 0. 19.100
libpostproc 52. 3.100 / 52. 3.100
Hyper fast Audio and Video encoder
usage: ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}...
Use -h to get full help or, even better, run 'man ffmpeg'
You cannot feed Windows native programs Cygwin paths, they do not understand
that. However you can put a wrapper script in the same folder as ffmpeg.exe,
and call it ffmpeg. Like this
#!/bin/sh
for each
do
foo=$(cygpath -w -- "$each")
bar+=("$foo")
done
ffmpeg.exe "${bar[#]}"
Then you go from this
$ ffmpeg.exe -i 1_Les_Nuits.mp3 /tmp/outfile.m4a
/tmp/outfile.m4a: No such file or directory
To this
$ ffmpeg -i 1_Les_Nuits.mp3 /tmp/outfile.m4a
frame=1 fps=0.1 q=33.0 Lsize=6046kB time=00:06:21.52 bitrate= 129.8kbits/s
Another option, if it works for you is to just use Windows paths when dealing
with Windows native programs, example
ffmpeg.exe -i 'C:\1_Les_Nuits.mp3' 'C:\outfile.m4a'
Related
I've been through many stackoverflow pages and forums trying to find the answer I want.
I created a virtual microphone and I'm trying to pipe to it some wav sounds created using FFMPEG.
When I want to pipe a keyboard noise I pipe the sound to my virtual sound capture device like this:
ffmpeg -fflags +discardcorrupt -i <Keyboard sound Path> -f s16le -ar 44100 -ac 1 - > /tmp/gapFakeMic
And when I want to pipe some synthetized voice sound using Espeak to my virtual microphone, I do this:
espeak -vbrazil-mbrola-4 <some random text> --stdout | ffmpeg -fflags +discardcorrupt -i pipe:0 -f s16le -ar 44100 -ac 1 - > /tmp/gapFakeMic
The problem is my capture device doesn't record the sound like a normal recorder that still records even when there's no sound being transmited to it. So I'm trying to append the silence to the wav which is being created while my application is running. Always when I try to send the silence to buffer, FFMPEG returns the following response:
[NULL # 0x5579f7921a00] Unable to find a suitable output format for 'pipe:'
FFMPEG is a powerful tool but its documentation lacks to be useful for newbies like me. So, I'd appreciate if anyone could answer this or at least give me any direction or some resource where I could find a way of achieving this.
EDIT:
Here's how I'm producing the silence to my virtual microphone:
ffmpeg -f lavfi -i anullsrc=channel_layout=mono:sample_rate=44100 -t <Time in seconds> - > /tmp/gapFakeMic
Here's the full log:
ffmpeg version 4.1.6-1~deb10u1 Copyright (c) 2000-2020 the FFmpeg developers
built with gcc 8 (Debian 8.3.0-6)
configuration: --prefix=/usr --extra-version='1~deb10u1' --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl --disable-stripping --enable-avresample --disable-filter=resample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librsvg --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-lv2 --enable-omx --enable-openal --enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libx264 --enable-shared
libavutil 56. 22.100 / 56. 22.100
libavcodec 58. 35.100 / 58. 35.100
libavformat 58. 20.100 / 58. 20.100
libavdevice 58. 5.100 / 58. 5.100
libavfilter 7. 40.101 / 7. 40.101
libavresample 4. 0. 0 / 4. 0. 0
libswscale 5. 3.100 / 5. 3.100
libswresample 3. 3.100 / 3. 3.100
libpostproc 55. 3.100 / 55. 3.100
Input #0, lavfi, from 'anullsrc=channel_layout=mono:sample_rate=44100':
Duration: N/A, start: 0.000000, bitrate: 352 kb/s
Stream #0:0: Audio: pcm_u8, 44100 Hz, mono, u8, 352 kb/s
[NULL # 0x560516626f40] Unable to find a suitable output format for 'pipe:'
pipe:: Invalid argument
EDIT 2:
After Gyan provided a solution in the comments the error above doesn't show anymore but my result audio is being broken and doesn't come out as expected. Now the command that generates and appends the silent audio is like this:
ffmpeg -f lavfi -i anullsrc=channel_layout=stereo:sample_rate=44100 -t <Time in seconds> -f s16le - > /tmp/gapFakeMic
Edit 3:
I've made some changes to the command I'm using to pipe silence to the virtual mic. I think the pipe is breaking because of some incompatibility in audio formats. I hope I can find a solution in the next few days. After every little change I realize some improvements. Now I can hear the silence between the keys sounds but it isn't recording all the audios I'm passing to it. Here's how the command is now:
ffmpeg -f lavfi -i anullsrc=channel_layout=mono:sample_rate=44100 -t <Time in seconds> -f s16le -ar 44100 -ac 1 - > /home/icaroerasmo/gapFakeMic`
I also realized that when I pipe the sound to a pipe file created inside my home folder the audio quality improves.
Edit 4:
After all this struggle it's clear now that the named pipe is breaking in the second time it's called. I've already googled how to flush a named pipe but I didn't find anything that worked.
I need to run a command with a nightly build of FFMPEG to report a bug on the concat protocol. I found it difficult to compile from source with libx264 support on Linux, and I want to spare my Mac computer, so I use the nightly build on Windows from Zeranoe.
I call this command to concatenate the files:
ffmpeg -safe 0 concat -i files_to_combine -vcodec libx264 show.mp4
where files_to_combine is:
file ./short_DSC_0013.MOV
file ./short_DSC_0014.MOV
file ./short_DSC_0015.MOV
file ./short_DSC_0016.MOV
file ./short_DSC_0017.MOV
file ./short_DSC_0018.MOV
file ./short_DSC_0019.MOV
I call this command from the directory containing the video files and files_to_combine.
On Windows with a nightly build, I get the error:
files_to_combine: Invalid data found when processing input
I changed file ./DSC_0013.MOV to these options, all with the same error:
file 'short_DSC_0013.MOV'
file '.\short_DSC_0013.MOV'
file 'F:\short_DSC_0013.MOV'
How can I debug this error, or what is the syntax for concatenating on Windows with a nightly build?
Update with log-level 48
I ran the same command with -v 48 and got:
F:\brain squids>C:\Users\migue\Desktop\ffmpeg-20200211-f15007a-win64-static\bin\ffmpeg.exe -v 48 -i files_to_combine -vcodec libx264 show.mp4
ffmpeg version git-2020-02-11-f15007a Copyright (c) 2000-2020 the FFmpeg developers
built with gcc 9.2.1 (GCC) 20200122
configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-libdav1d --enable-libbluray --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libtheora --enable-libtwolame --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable-libvidstab --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa --enable-libspeex --enable-libxvid --enable-libaom --enable-libmfx --enable-ffnvcodec --enable-cuvid --enable-d3d11va --enable-nvenc --enable-nvdec --enable-dxva2 --enable-avisynth --enable-libopenmpt --enable-amf
libavutil 56. 39.100 / 56. 39.100
libavcodec 58. 68.102 / 58. 68.102
libavformat 58. 38.100 / 58. 38.100
libavdevice 58. 9.103 / 58. 9.103
libavfilter 7. 75.100 / 7. 75.100
libswscale 5. 6.100 / 5. 6.100
libswresample 3. 6.100 / 3. 6.100
libpostproc 55. 6.100 / 55. 6.100
Splitting the commandline.
Reading option '-v' ... matched as option 'v' (set logging level) with argument '48'.
Reading option '-i' ... matched as input url with argument 'files_to_combine'.
Reading option '-vcodec' ... matched as option 'vcodec' (force video codec ('copy' to copy stream)) with argument 'libx264'.
Reading option 'show.mp4' ... matched as output url.
Finished splitting the commandline.
Parsing a group of options: global .
Applying option v (set logging level) with argument 48.
Successfully parsed a group of options.
Parsing a group of options: input url files_to_combine.
Successfully parsed a group of options.
Opening an input file: files_to_combine.
[NULL # 0000021c781784c0] Opening 'files_to_combine' for reading
[file # 0000021c78179580] Setting default whitelist 'file,crypto,data'
[AVIOContext # 0000021c781817c0] Statistics: 182 bytes read, 0 seeks
files_to_combine: Invalid data found when processing input
The contents of files_to_combine is:
file 'short_DSC_0013.MOV'
file 'short_DSC_0014.MOV'
file 'short_DSC_0015.MOV'
file 'short_DSC_0016.MOV'
file 'short_DSC_0017.MOV'
file 'short_DSC_0018.MOV'
file 'short_DSC_0019.MOV'
Update because of wrong command
I had mistyped the command. The right command has a -f in front of concat, which I found because the accepted answer was able to make the command work in a similar environment:
ffmpeg -safe 0 -f concat -i files_to_combine -vcodec libx264 show.mp4
I tested it successfully on Windows 10:
(ffmpeg version N-95216-ge6625ca41f)
Videos 01.mp4, 02.mp4and .txt are in C:\Users\drake7\Desktop\
Content of files_to_combine.txt:
_
file 'C:\Users\drake7\Desktop\01.mp4'
file 'C:\Users\drake7\Desktop\02.mp4'
Note: 02.mp4 is a copy of 01.mp4. For this quick test I wanted to keep it really simple.
.txt created with right-click > New > Text Document
(With my windows command prompt I am in C:\Users\drake7\Desktop\ffmpeg\bin)
"ffmpeg.exe" -f concat -safe 0 -i "C:\Users\drake7\Desktop\files_to_combine.txt" -vcodec libx264 "C:\Users\drake7\Desktop\show.mp4"
I'm trying to convert a PNG image to a JPEG image using ffmpeg. As far as I can tell, it's working fine, but it doesn't display properly in Mac Preview.
I'm running the following:
$ ffmpeg -i foo.png foo.jpg
And it produces the following output:
ffmpeg version 4.1.3 Copyright (c) 2000-2019 the FFmpeg developers
built with Apple LLVM version 10.0.0 (clang-1000.11.45.5)
configuration: --prefix=/usr/local/Cellar/ffmpeg/4.1.3_1 --enable-shared --enable-pthreads --enable-version3 --enable-hardcoded-tables --enable-avresample --cc=clang --host-cflags='-I/Library/Java/JavaVirtualMachines/adoptopenjdk-11.0.2.jdk/Contents/Home/include -I/Library/Java/JavaVirtualMachines/adoptopenjdk-11.0.2.jdk/Contents/Home/include/darwin' --host-ldflags= --enable-ffplay --enable-gnutls --enable-gpl --enable-libaom --enable-libbluray --enable-libmp3lame --enable-libopus --enable-librubberband --enable-libsnappy --enable-libtesseract --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-libxvid --enable-lzma --enable-libfontconfig --enable-libfreetype --enable-frei0r --enable-libass --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-librtmp --enable-libspeex --enable-videotoolbox --disable-libjack --disable-indev=jack --enable-libaom --enable-libsoxr
libavutil 56. 22.100 / 56. 22.100
libavcodec 58. 35.100 / 58. 35.100
libavformat 58. 20.100 / 58. 20.100
libavdevice 58. 5.100 / 58. 5.100
libavfilter 7. 40.101 / 7. 40.101
libavresample 4. 0. 0 / 4. 0. 0
libswscale 5. 3.100 / 5. 3.100
libswresample 3. 3.100 / 3. 3.100
libpostproc 55. 3.100 / 55. 3.100
Input #0, png_pipe, from 'foo.png':
Duration: N/A, bitrate: N/A
Stream #0:0: Video: png, rgba(pc), 200x231, 25 tbr, 25 tbn, 25 tbc
Stream mapping:
Stream #0:0 -> #0:0 (png (native) -> mjpeg (native))
Press [q] to stop, [?] for help
[swscaler # 0x7ffeaf00ae00] deprecated pixel format used, make sure you did set range correctly
Output #0, image2, to 'foo.jpg':
Metadata:
encoder : Lavf58.20.100
Stream #0:0: Video: mjpeg, yuvj444p(pc), 200x231, q=2-31, 200 kb/s, 25 fps, 25 tbn, 25 tbc
Metadata:
encoder : Lavc58.35.100 mjpeg
Side data:
cpb: bitrate max/min/avg: 0/0/200000 buffer size: 0 vbv_delay: -1
frame= 1 fps=0.0 q=3.7 Lsize=N/A time=00:00:00.04 bitrate=N/A speed= 4.7x
video:12kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown
When I open foo.jpg in most applications, such as VLC or Google Chrome, I get exactly what I expected: an image that looks exactly the same as foo.png, the input.
However, this is what is displayed in the Finder preview, and the same this is displayed when I open up the file in "Preview."
~~~I wonder if this has something to do with the deprecated pixel format used, make sure you did set range correctly error, but I'm not sure, especially since the image is fine, the problem seems to be elsewhere.~~~
It seems the deprecated pixel format error is not the issue (that's an internal thing), so I guess I just need to specify pixel formats properly.
Looks like QT / AVFoundation doesn't like fully-sampled chroma in JPEG.
First try
ffmpeg -i foo.png -pix_fmt yuvj422p foo.jpg
else,
ffmpeg -i foo.png -pix_fmt yuvj420p foo.jpg
The warning about deprecated format relates to ffmpeg internals and not the produced output.
You could use the built-in, Apple-supplied sips "Scriptable Image Processing System" tool to do the conversion and thereby avoid the issue and also be less dependent on having to install external tools:
sips -s format jpeg input.png --out output.jpg
I am trying to convert a video that have multiple video streams and one audio stream from mxf format to mp4 format and getting an error. How can i solve this problem? Thank you.
E:\video>ffmpeg -loglevel error -y -i E:\video\19_12_2018\Files\MEDIA\media_data.mxf -map 0 -c:v h264_nvenc -acodec copy nvidia_output.mp4
[h264_nvenc # 0000020b30c86e80] OpenEncodeSessionEx failed: out of memory (10)
[h264_nvenc # 0000020b30c86e80] No NVENC capable devices found
Error initializing output stream 0:2 -- Error while opening encoder for output stream #0:2 - maybe incorrect parameters such as bit_rate, rate, width or height
[h264_nvenc # 00000204c1e37040] OpenEncodeSessionEx failed: out of memory (10)
[h264_nvenc # 00000204c1e37040] No NVENC capable devices found
[h264_nvenc # 00000204c1e37040] Nvenc unloaded
[jpeg2000 # 00000204c2d90080] End mismatch 1
Last message repeated 1 times
Error initializing output stream 0:2 -- Error while opening encoder for output stream #0:2 - maybe incorrect parameters such as bit_rate, rate, width or height
My FFPROBE output
E:\video>ffmpeg ffprobe
ffmpeg version 4.1 Copyright (c) 2000-2018 the FFmpeg developers
built with gcc 8.2.1 (GCC) 20181017
configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-fontconfig
--enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libfreetype
--enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb
--enable-libopenjpeg --enable-libopus --enable-libshine --enable-libsnappy
--enable-libsoxr --enable-libtheora --enable-libtwolame --enable-libvpx
--enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265
--enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp
--enable-libvidstab --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa
--enable-libspeex --enable-libxvid --enable-libaom --enable-libmfx --enable-amf
--enable-ffnvcodec --enable-cuvid --enable-d3d11va --enable-nvenc --enable-nvdec
--enable-dxva2 --enable-avisynth
libavutil 56. 22.100 / 56. 22.100
libavcodec 58. 35.100 / 58. 35.100
libavformat 58. 20.100 / 58. 20.100
libavdevice 58. 5.100 / 58. 5.100
libavfilter 7. 40.101 / 7. 40.101
libswscale 5. 3.100 / 5. 3.100
libswresample 3. 3.100 / 3. 3.100
libpostproc 55. 3.100 / 55. 3.100
The error you're seeing is expected, if you're using a consumer-grade NVIDIA GPU wherein the maximum simultaneous NVENC session limit of 2 is enforced at the firmware and driver level. See the NVIDIA GPU Matrix for more information on this.
There are two ways you can overcome this limitation:
1. Explicitly select the video stream(s) you desire to encode, via -map options, such that only two video streams are encoded at any given time per session. The example below explicitly selects the first and second video stream only:
E:\video>ffmpeg -loglevel error -y -i E:\video\19_12_2018\Files\MEDIA\media_data.mxf -map 0:v:0 -map 0:v:1 -map:0:a -c:v h264_nvenc -acodec copy nvidia_output.mp4
It would be awesome if you'd provide the ffprobe output for the input file you're working with, and that way, we can suggest what to do with the other video streams. An alternative to such would be falling back to a software-based encoder (such as x264) if so needed.
2. Override the aforementioned NVENC session count limit above: This will require you to patch the NVIDIA driver, as documented in this repository. Instructions for Linux are also available here.
I've been using FFMPEG on Windows to:
Convert iTunes M4A files to MP3s (with a bit rate of 128k); and
Create 30 sec sample MP3s of the above MP3s (same bit rate).
When I run FFMEG on a Windows 7 64 bit machine, the size of the MP3s (both for 1. & 2.) is in line with the rough calculation of:
(Audio length in seconds) X (Bit rate)
For example, a 4 minute audio yields an approx. 3.7MB MP3 file; a 30 second sample MP3 is approx. 470KB.
However when I run the same FFMPEG binary (copied from the Windows 7 machine) on a Windows 10 64 bit machine, all of the MP3s (both for 1. and for 2.) are inflated by approx 5MB. I'm using the same batch file on both machines to execute FFMEG with the required parameters, so pretty confident the difference is not down to user error.
My questions are:
Why is there this apparent 5MB overhead on Windows 10? and more importantly;
What can I do to remove this?
The large file size is a problem as the sample MP3s are to be put on a website for people to listen to a snippet of the song, and the webpage with multiple tags takes a long time to load completely (several minutes).
Here is the version and lib info:
ffmpeg version 3.4.1 Copyright (c) 2000-2017 the FFmpeg developers
built with gcc 7.2.0 (GCC)
configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-bzlib --enable-fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libfreetype --enable-libmp3lame --enable-libopenjpeg --enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libtheora --enable-libtwolame --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable-libvidstab --enable-libvorbis --enable-cuda --enable-cuvid --enable-d3d11va --enable-nvenc --enable-dxva2 --enable-avisynth --enable-libmfx
libavutil 55. 78.100 / 55. 78.100
libavcodec 57.107.100 / 57.107.100
libavformat 57. 83.100 / 57. 83.100
libavdevice 57. 10.100 / 57. 10.100
libavfilter 6.107.100 / 6.107.100
libswscale 4. 8.100 / 4. 8.100
libswresample 2. 9.100 / 2. 9.100
libpostproc 54. 7.100 / 54. 7.100
And here are the command lines I'm using:
ffmpeg -i input.m4a -id3v2_version 3 -b:a 128k -output.mp3
ffmpeg -i input.m4a -ss 30 -t 30 -af "afade=in:st=30:d=5,afade=out:st=55:d=5" -id3v2_version 3 -b:a 128k -output.mp3
Used the FFMPEG switch -vn to remove the video stream from the output, and that dramatically reduced the size of the MP3s (down to what was expected).
Turns out there was a difference between the FFMPEG parameters being used on each machine. On one machine the "sample" MP3 was starting from the beginning of the track (-ss 0) and this was the one with the album cover art PNG embedded in the video stream). The other machine's parameters was starting the "sample" from 30 seconds in (-ss 30) and this was not include the album cover art.
Interesting difference - not sure if it's deliberate - but that explains what was happening.