I'm joining several .ts
files into one .mp3
file like this:
import ffmpeg from 'fluent-ffmpeg'
const tsDest = 'dir/file.ts'
const mp3Dest = 'dir/file.mp3'
const ff = ffmpeg(urls[0])
urls.slice(1).map(url => ff.input(url))
ff.on('error', function (err) {
logger.error('An error occurred: ' + err.message)
reject(err)
})
.on('end', function () {
return ffmpeg(tsDest)
.videoCodec('libx264')
.audioCodec('libmp3lame')
.on('error', function (err) {
logger.error('An error occurred: ', err)
reject(err)
})
.on('end', function () {
resolve(mp3Dest)
})
.save(mp3Dest)
}).mergeToFile(tsDest, dir)
In the first part I receive this error:
An error occurred: ffmpeg exited with code 228: size= 259KiB time=00:00:04.95 bitrate= 428.6kbits/s speed=58.1x
Conversion failed!
I have no clue why this happens and how to fix it. I can't find a pattern that I can follow to know why this happens and how, it just happens sometimes and some other times it doesn't. I've tried to find a solution but I couldn't find anything or any bug similar to mine.
I've put this question in the library (https://github.com/damianociarla/node-ffmpeg/issues/101) too let's see if I can get some useful info from somewhere.
Thanks in advance!
I added more logs to see what's going on:
ff.on('error', function (err) {
logger.error('An error occurred: ' + err.message)
logger.error('stdout: ', stdout)
logger.error('stderr: ', stderr)
reject(err)
})
And got more details on the error:
stderr: 'ffmpeg version N-71064-gd5e603ddc0-static https://johnvansickle.com/ffmpeg/ Copyright (c) 2000-2024 the FFmpeg developers\n' +
' built with gcc 8 (Debian 8.3.0-6)\n' +
' configuration: --enable-gpl --enable-version3 --enable-static --disable-debug --disable-ffplay --disable-indev=sndio --disable-outdev=sndio --cc=gcc --enable-fontconfig --enable-frei0r --enable-gnutls --enable-gmp --enable-libgme --enable-gray --enable-libaom --enable-libfribidi --enable-libass --enable-libvmaf --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-librubberband --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libvorbis --enable-libopus --enable-libtheora --enable-libvidstab --enable-libvo-amrwbenc --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libdav1d --enable-libxvid --enable-libzvbi --enable-libzimg\n' +
' libavutil 59. 27.100 / 59. 27.100\n' +
' libavcodec 61. 9.100 / 61. 9.100\n' +
' libavformat 61. 4.100 / 61. 4.100\n' +
' libavdevice 61. 2.100 / 61. 2.100\n' +
' libavfilter 10. 2.102 / 10. 2.102\n' +
' libswscale 8. 2.100 / 8. 2.100\n' +
' libswresample 5. 2.100 / 5. 2.100\n' +
' libpostproc 58. 2.100 / 58. 2.100\n' +
"Input #0, mpegts, from '/tmp/90337846ced53a148c0392a4ca6fa1d8.ts':\n" +
' Duration: 00:01:55.18, start: 1.400000, bitrate: 431 kb/s\n' +
' Program 1 \n' +
' Metadata:\n' +
' service_name : Service01\n' +
' service_provider: FFmpeg\n' +
' Stream #0:0[0x100]: Audio: mp2 (mp3float) ([3][0][0][0] / 0x0003), 48000 Hz, stereo, fltp, 384 kb/s\n' +
'Stream mapping:\n' +
' Stream #0:0 -> #0:0 (mp2 (native) -> mp3 (libmp3lame))\n' +
'Press [q] to stop, [?] for help\n' +
"Output #0, mp3, to '/tmp/90337846ced53a148c0392a4ca6fa1d8.mp3':\n" +
' Metadata:\n' +
' TSSE : Lavf61.4.100\n' +
' Stream #0:0: Audio: mp3, 48000 Hz, stereo, s16p\n' +
' Metadata:\n' +
' encoder : Lavc61.9.100 libmp3lame\n' +
'size= 256KiB time=00:00:32.20 bitrate= 65.1kbits/s speed=64.4x \n' +
'[aost#0:0/libmp3lame @ 0x34009800] Error submitting a packet to the muxer: No space left on device\n' +
' Last message repeated 1 times\n' +
'[out#0/mp3 @ 0x340115c0] Error muxing a packet\n' +
'[out#0/mp3 @ 0x340115c0] Task finished with error code: -28 (No space left on device)\n' +
'[out#0/mp3 @ 0x340115c0] Terminating thread with return code -28 (No space left on device)\n' +
'[out#0/mp3 @ 0x340115c0] Error writing trailer: No space left on device\n' +
'[out#0/mp3 @ 0x340115c0] Error closing file: No space left on device\n' +
'[out#0/mp3 @ 0x340115c0] video:0KiB audio:512KiB subtitle:0KiB other streams:0KiB global headers:0KiB muxing overhead: unknown\n' +
'size= 256KiB time=00:00:32.76 bitrate= 64.0kbits/s speed= 63x \n' +
'Conversion failed!\n'
For what I could understand it was complaining because the file was too big and there was no space on the device. I just reduce the amount of files being combined from 20 to 15 and the error disappeared