[Bug]: Quick Embed does not check to see if file is open in external player through a SMB share and reports successful embedding #2975

Open
opened 2026-04-25 00:12:35 +02:00 by adam · 0 comments
Owner

Originally created by @ZLoth on GitHub (Aug 28, 2025).

What happened?

I am cleaning up the chapters in my audiobook collection. I am usually opening that file from the SMB share on my TrueNAS server to my Windows 11 computer using MPC-HC (64 bit) or VLC (64-bit) which "locks" the file from modification from other programs. This is so that I can find the appropriate time stamps for missing sections such as "Opening Credits", "Dedicaton", "Epigraph", and so on. Once I find those time stamps, I use ABS → Tools → Quick Embed to upload the modified chapter data back into the M4B file. If I forget to close the external player, the data isn't updated.

What did you expect to happen?

There needs to be a check to see if the file is in use before attempting to embed the data. If so, a error should be thrown.

Steps to reproduce the issue

STEPS TO REPLICATE:

  1. Open the M4B File in a external player (e.g. /audiobooks/Audiobooks/Non-Fiction/Horologicon - A Day's Jaunt Through the Lost Words of the English Language/Horologicon - A Day's Jaunt Through the Lost Words of the English Language.m4b)
  2. In ABS, use Tools → Quick Embed.
  3. ABS will ffmpeg to create temporary file /audiobooks/Audiobooks/Non-Fiction/Horologicon - A Day's Jaunt Through the Lost Words of the English Language/Horologicon - A Day's Jaunt Through the Lost Words of the English Language.tmp.m4b
  4. ABS will then rename the temporary file to /audiobooks/Audiobooks/Non-Fiction/Horologicon - A Day's Jaunt Through the Lost Words of the English Language/Horologicon - A Day's Jaunt Through the Lost Words of the English Language.m4b
  5. Log file will report that the copy was successful.

HOWEVER, the copy actually failed. Here is the log extract:

{"timestamp":"2025-08-28 14:41:06.276","source":"ffmpegHelpers.js:363","message":"[ffmpegHelpers] Moving temp file to audio file path: \"/audiobooks/Audiobooks/Non-Fiction/Horologicon - A Day's Jaunt Through the Lost Words of the English Language/Horologicon - A Day's Jaunt Through the Lost Words of the English Language.tmp.m4b\" -> \"/audiobooks/Audiobooks/Non-Fiction/Horologicon - A Day's Jaunt Through the Lost Words of the English Language/Horologicon - A Day's Jaunt Through the Lost Words of the English Language.m4b\"","levelName":"DEBUG","level":1}
{"timestamp":"2025-08-28 14:41:06.472","source":"fileUtils.js:558","message":"[copyToExisting] Successfully copied file from /audiobooks/Audiobooks/Non-Fiction/Horologicon - A Day's Jaunt Through the Lost Words of the English Language/Horologicon - A Day's Jaunt Through the Lost Words of the English Language.tmp.m4b to /audiobooks/Audiobooks/Non-Fiction/Horologicon - A Day's Jaunt Through the Lost Words of the English Language/Horologicon - A Day's Jaunt Through the Lost Words of the English Language.m4b","levelName":"DEBUG","level":1}
{"timestamp":"2025-08-28 14:41:06.474","source":"AudioMetadataManager.js:235","message":"[AudioMetadataManager] Successfully tagged audio file \"/audiobooks/Audiobooks/Non-Fiction/Horologicon - A Day's Jaunt Through the Lost Words of the English Language/Horologicon - A Day's Jaunt Through the Lost Words of the English Language.m4b\"","levelName":"INFO","level":2}
{"timestamp":"2025-08-28 14:41:06.475","source":"AudioMetadataManager.js:285","message":"[AudioMetadataManager] Task finished and no tasks remain in queue","levelName":"DEBUG","level":1}

When I closed the player and tried again, the embed was successful:

{"timestamp":"2025-08-28 14:41:28.647","source":"ffmpegHelpers.js:363","message":"[ffmpegHelpers] Moving temp file to audio file path: \"/audiobooks/Audiobooks/Non-Fiction/Horologicon - A Day's Jaunt Through the Lost Words of the English Language/Horologicon - A Day's Jaunt Through the Lost Words of the English Language.tmp.m4b\" -> \"/audiobooks/Audiobooks/Non-Fiction/Horologicon - A Day's Jaunt Through the Lost Words of the English Language/Horologicon - A Day's Jaunt Through the Lost Words of the English Language.m4b\"","levelName":"DEBUG","level":1}
{"timestamp":"2025-08-28 14:41:28.839","source":"fileUtils.js:558","message":"[copyToExisting] Successfully copied file from /audiobooks/Audiobooks/Non-Fiction/Horologicon - A Day's Jaunt Through the Lost Words of the English Language/Horologicon - A Day's Jaunt Through the Lost Words of the English Language.tmp.m4b to /audiobooks/Audiobooks/Non-Fiction/Horologicon - A Day's Jaunt Through the Lost Words of the English Language/Horologicon - A Day's Jaunt Through the Lost Words of the English Language.m4b","levelName":"DEBUG","level":1}
{"timestamp":"2025-08-28 14:41:28.841","source":"AudioMetadataManager.js:235","message":"[AudioMetadataManager] Successfully tagged audio file \"/audiobooks/Audiobooks/Non-Fiction/Horologicon - A Day's Jaunt Through the Lost Words of the English Language/Horologicon - A Day's Jaunt Through the Lost Words of the English Language.m4b\"","levelName":"INFO","level":2}
{"timestamp":"2025-08-28 14:41:28.842","source":"AudioMetadataManager.js:285","message":"[AudioMetadataManager] Task finished and no tasks remain in queue","levelName":"DEBUG","level":1}

Here is the recording of the issue:

https://github.com/user-attachments/assets/bba2e4c0-3093-4716-af63-8a2b391bd286

Audiobookshelf version

2.29.0, also earlier versions

How are you running audiobookshelf?

Docker

What OS is your Audiobookshelf server hosted from?

Other (list in "Additional Notes" box)

If the issue is being seen in the UI, what browsers are you seeing the problem on?

None

Logs

{"timestamp":"2025-08-28 14:33:10.853","source":"LibraryItem.js:297","message":"Loaded 77 of 1137 items for libary page in 0.15s","levelName":"DEBUG","level":1}
{"timestamp":"2025-08-28 14:33:10.854","source":"ApiCacheManager.js:59","message":"[ApiCacheManager] Cache miss: {\"user\":\"Mark Holtz\",\"url\":\"/libraries/a210cdb5-cb8d-4ff1-bd87-34eaefffd218/items?sort=media.metadata.title&desc=0&collapseseries=1&limit=77&page=6&minified=1&include=rssfeed,numEpisodesIncomplete,share\"}","levelName":"DEBUG","level":1}
{"timestamp":"2025-08-28 14:34:57.673","source":"ApiCacheManager.js:20","message":"[ApiCacheManager] book.afterUpdate: Clearing cache","levelName":"DEBUG","level":1}
{"timestamp":"2025-08-28 14:34:57.704","source":"ApiCacheManager.js:20","message":"[ApiCacheManager] libraryItem.afterUpdate: Clearing cache","levelName":"DEBUG","level":1}
{"timestamp":"2025-08-28 14:34:57.704","source":"LibraryItem.js:650","message":"[LibraryItem] Saved metadata for \"The Horologicon\" file to \"/audiobooks/Audiobooks/Non-Fiction/Horologicon - A Day's Jaunt Through the Lost Words of the English Language/metadata.json\"","levelName":"DEBUG","level":1}
{"timestamp":"2025-08-28 14:36:27.759","source":"ApiCacheManager.js:20","message":"[ApiCacheManager] book.afterUpdate: Clearing cache","levelName":"DEBUG","level":1}
{"timestamp":"2025-08-28 14:36:27.796","source":"ApiCacheManager.js:20","message":"[ApiCacheManager] libraryItem.afterUpdate: Clearing cache","levelName":"DEBUG","level":1}
{"timestamp":"2025-08-28 14:36:27.797","source":"LibraryItem.js:650","message":"[LibraryItem] Saved metadata for \"The Horologicon\" file to \"/audiobooks/Audiobooks/Non-Fiction/Horologicon - A Day's Jaunt Through the Lost Words of the English Language/metadata.json\"","levelName":"DEBUG","level":1}
{"timestamp":"2025-08-28 14:37:52.867","source":"ApiCacheManager.js:20","message":"[ApiCacheManager] book.afterUpdate: Clearing cache","levelName":"DEBUG","level":1}
{"timestamp":"2025-08-28 14:37:52.894","source":"ApiCacheManager.js:20","message":"[ApiCacheManager] libraryItem.afterUpdate: Clearing cache","levelName":"DEBUG","level":1}
{"timestamp":"2025-08-28 14:37:52.895","source":"LibraryItem.js:650","message":"[LibraryItem] Saved metadata for \"The Horologicon\" file to \"/audiobooks/Audiobooks/Non-Fiction/Horologicon - A Day's Jaunt Through the Lost Words of the English Language/metadata.json\"","levelName":"DEBUG","level":1}
{"timestamp":"2025-08-28 14:41:05.043","source":"AudioMetadataManager.js:137","message":"[AudioMetadataManager] Starting metadata embed task Embedding metadata in audiobook \"The Horologicon\".","levelName":"INFO","level":2}
{"timestamp":"2025-08-28 14:41:05.045","source":"AudioMetadataManager.js:141","message":"[AudioMetadataManager] Target directory /audiobooks/Audiobooks/Non-Fiction/Horologicon - A Day's Jaunt Through the Lost Words of the English Language writable: true","levelName":"DEBUG","level":1}
{"timestamp":"2025-08-28 14:41:05.045","source":"ffmpegHelpers.js:274","message":"[ffmpegHelpers] Wrote /metadata/cache/items/de0f6cc5-09f0-4184-b80d-579979f4e194/ffmetadata.txt","levelName":"DEBUG","level":1}
{"timestamp":"2025-08-28 14:41:05.048","source":"ffmpegHelpers.js:353","message":"[ffmpegHelpers] Spawned Ffmpeg with command: ffmpeg -i /audiobooks/Audiobooks/Non-Fiction/Horologicon - A Day's Jaunt Through the Lost Words of the English Language/Horologicon - A Day's Jaunt Through the Lost Words of the English Language.m4b -i /metadata/cache/items/de0f6cc5-09f0-4184-b80d-579979f4e194/ffmetadata.txt -i /audiobooks/Audiobooks/Non-Fiction/Horologicon - A Day's Jaunt Through the Lost Words of the English Language/cover.jpg -y -map 0:a -map_metadata 1 -map_metadata 0 -map_chapters 1 -c copy -metadata track=1 -f mp4 -map 2:v -disposition:v:0 attached_pic -metadata:s:v title=Cover -metadata:s:v comment=Cover /audiobooks/Audiobooks/Non-Fiction/Horologicon - A Day's Jaunt Through the Lost Words of the English Language/Horologicon - A Day's Jaunt Through the Lost Words of the English Language.tmp.m4b","levelName":"DEBUG","level":1}
{"timestamp":"2025-08-28 14:41:05.645","source":"ffmpegHelpers.js:357","message":"[ffmpegHelpers] Progress: 44.03756409527676%","levelName":"DEBUG","level":1}
{"timestamp":"2025-08-28 14:41:06.146","source":"ffmpegHelpers.js:357","message":"[ffmpegHelpers] Progress: 89.69658880175649%","levelName":"DEBUG","level":1}
{"timestamp":"2025-08-28 14:41:06.273","source":"ffmpegHelpers.js:357","message":"[ffmpegHelpers] Progress: 99.99978088370118%","levelName":"DEBUG","level":1}
{"timestamp":"2025-08-28 14:41:06.276","source":"ffmpegHelpers.js:361","message":"[ffmpegHelpers] ffmpeg stdout: ","levelName":"DEBUG","level":1}
{"timestamp":"2025-08-28 14:41:06.276","source":"ffmpegHelpers.js:362","message":"[ffmpegHelpers] ffmpeg stderr:     copyright       : Gildan Media, LLC\n    publisher       : Gildan Media, LLC\n    TRACKTOTAL      : 1\n    major_brand     : isom\n    minor_version   : 512\n    compatible_brands: isomiso2mp41\n    track           : 1\n    encoder         : Lavf60.16.100\n  Chapters:\n    Chapter #0:0: start 0.000000, end 28.000000\n      Metadata:\n        title           : Opening Credits\n    Chapter #0:1: start 28.000000, end 598.471000\n      Metadata:\n        title           : Preambulation\n    Chapter #0:2: start 598.471000, end 1741.310000\n      Metadata:\n        title           : 6 AM - Dawn\n    Chapter #0:3: start 1741.310000, end 3018.593000\n      Metadata:\n        title           : 7 AM - Waking and Washing\n    Chapter #0:4: start 3018.593000, end 4053.274000\n      Metadata:\n        title           : 8 AM - Dressing and Breakfast\n    Chapter #0:5: start 4053.274000, end 5229.179000\n      Metadata:\n        title           : 9 AM - Commute\n    Chapter #0:6: start 5229.179000, end 6451.661000\n      Metadata:\n        title           : 10 AM - The Morning Meeting\n    Chapter #0:7: start 6451.661000, end 7698.200000\n      Metadata:\n        title           : 11 AM - Taking a Break\n    Chapter #0:8: start 7698.200000, end 8563.978000\n      Metadata:\n        title           : Noon - Looking as Though You're Working\n    Chapter #0:9: start 8563.978000, end 9922.111000\n      Metadata:\n        title           : 1 PM - Lunch\n    Chapter #0:10: start 9922.111000, end 10932.177000\n      Metadata:\n        title           : 2 PM - Returning to Work\n    Chapter #0:11: start 10932.177000, end 12078.776000\n      Metadata:\n        title           : 3 PM - Trying to Make Others Work\n    Chapter #0:12: start 12078.776000, end 12818.004000\n      Metadata:\n        title           : 4 PM - Tea\n    Chapter #0:13: start 12818.004000, end 13783.208000\n      Metadata:\n        title           : 5 PM - Actually Doing Some Work\n    Chapter #0:14: start 13783.208000, end 14831.911000\n      Metadata:\n        title           : 6 PM - After Work\n    Chapter #0:15: start 14831.911000, end 15323.056000\n      Metadata:\n        title           : 7 PM - Shopping\n    Chapter #0:16: start 15323.056000, end 16668.928000\n      Metadata:\n        title           : 8 PM - Supper\n    Chapter #0:17: start 16668.928000, end 18424.817000\n      Metadata:\n        title           : 9 PM - Drinking\n    Chapter #0:18: start 18424.817000, end 20835.323000\n      Metadata:\n        title           : 10 PM - Wooing\n    Chapter #0:19: start 20835.323000, end 21661.160000\n      Metadata:\n        title           : 11 PM - Stumbling Home\n    Chapter #0:20: start 21661.160000, end 22679.909000\n      Metadata:\n        title           : Midnight - Nostos\n    Chapter #0:21: start 22679.909000, end 22809.008000\n      Metadata:\n        title           : Epilogue\n    Chapter #0:22: start 22809.008000, end 23219.000000\n      Metadata:\n        title           : Appendix\n    Chapter #0:23: start 23219.000000, end 23275.311000\n      Metadata:\n        title           : Closing Credits\n  Stream #0:0(eng): Audio: aac (LC) (mp4a / 0x6134706D), 22050 Hz, stereo, fltp, 62 kb/s (default)\n    Metadata:\n      handler_name    : ?Apple Sound Media Handler\n      vendor_id       : [0][0][0][0]\n  Stream #0:1: Video: mjpeg (Baseline) (mp4v / 0x7634706D), yuvj420p(pc, bt470bg/unknown/unknown), 2400x2400 [SAR 1:1 DAR 1:1], q=2-31, 25 fps, 25 tbr, 12800 tbn (attached pic)\n    Metadata:\n      title           : Cover\n      comment         : Cover\nStream mapping:\n  Stream #0:0 -> #0:0 (copy)\n  Stream #2:0 -> #0:1 (copy)\nPress [q] to stop, [?] for help\nsize=       0kB time=00:00:00.00 bitrate=N/A speed=N/A    \nsize=   78337kB time=02:50:49.88 bitrate=  62.6kbits/s speed=2.05e+04x    \nsize=  159745kB time=05:47:57.16 bitrate=  62.7kbits/s speed=2.09e+04x    \n[out#0/mp4 @ 0x7f7a6f9280c0] video:303kB audio:178406kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 1.099269%\nsize=  180673kB time=06:27:55.26 bitrate=  63.6kbits/s speed=2.06e+04x    \n","levelName":"DEBUG","level":1}
{"timestamp":"2025-08-28 14:41:06.276","source":"ffmpegHelpers.js:363","message":"[ffmpegHelpers] Moving temp file to audio file path: \"/audiobooks/Audiobooks/Non-Fiction/Horologicon - A Day's Jaunt Through the Lost Words of the English Language/Horologicon - A Day's Jaunt Through the Lost Words of the English Language.tmp.m4b\" -> \"/audiobooks/Audiobooks/Non-Fiction/Horologicon - A Day's Jaunt Through the Lost Words of the English Language/Horologicon - A Day's Jaunt Through the Lost Words of the English Language.m4b\"","levelName":"DEBUG","level":1}
{"timestamp":"2025-08-28 14:41:06.472","source":"fileUtils.js:558","message":"[copyToExisting] Successfully copied file from /audiobooks/Audiobooks/Non-Fiction/Horologicon - A Day's Jaunt Through the Lost Words of the English Language/Horologicon - A Day's Jaunt Through the Lost Words of the English Language.tmp.m4b to /audiobooks/Audiobooks/Non-Fiction/Horologicon - A Day's Jaunt Through the Lost Words of the English Language/Horologicon - A Day's Jaunt Through the Lost Words of the English Language.m4b","levelName":"DEBUG","level":1}
{"timestamp":"2025-08-28 14:41:06.474","source":"AudioMetadataManager.js:235","message":"[AudioMetadataManager] Successfully tagged audio file \"/audiobooks/Audiobooks/Non-Fiction/Horologicon - A Day's Jaunt Through the Lost Words of the English Language/Horologicon - A Day's Jaunt Through the Lost Words of the English Language.m4b\"","levelName":"INFO","level":2}
{"timestamp":"2025-08-28 14:41:06.475","source":"AudioMetadataManager.js:285","message":"[AudioMetadataManager] Task finished and no tasks remain in queue","levelName":"DEBUG","level":1}
{"timestamp":"2025-08-28 14:41:27.498","source":"AudioMetadataManager.js:137","message":"[AudioMetadataManager] Starting metadata embed task Embedding metadata in audiobook \"The Horologicon\".","levelName":"INFO","level":2}
{"timestamp":"2025-08-28 14:41:27.499","source":"AudioMetadataManager.js:141","message":"[AudioMetadataManager] Target directory /audiobooks/Audiobooks/Non-Fiction/Horologicon - A Day's Jaunt Through the Lost Words of the English Language writable: true","levelName":"DEBUG","level":1}
{"timestamp":"2025-08-28 14:41:27.500","source":"ffmpegHelpers.js:274","message":"[ffmpegHelpers] Wrote /metadata/cache/items/de0f6cc5-09f0-4184-b80d-579979f4e194/ffmetadata.txt","levelName":"DEBUG","level":1}
{"timestamp":"2025-08-28 14:41:27.502","source":"ffmpegHelpers.js:353","message":"[ffmpegHelpers] Spawned Ffmpeg with command: ffmpeg -i /audiobooks/Audiobooks/Non-Fiction/Horologicon - A Day's Jaunt Through the Lost Words of the English Language/Horologicon - A Day's Jaunt Through the Lost Words of the English Language.m4b -i /metadata/cache/items/de0f6cc5-09f0-4184-b80d-579979f4e194/ffmetadata.txt -i /audiobooks/Audiobooks/Non-Fiction/Horologicon - A Day's Jaunt Through the Lost Words of the English Language/cover.jpg -y -map 0:a -map_metadata 1 -map_metadata 0 -map_chapters 1 -c copy -metadata track=1 -f mp4 -map 2:v -disposition:v:0 attached_pic -metadata:s:v title=Cover -metadata:s:v comment=Cover /audiobooks/Audiobooks/Non-Fiction/Horologicon - A Day's Jaunt Through the Lost Words of the English Language/Horologicon - A Day's Jaunt Through the Lost Words of the English Language.tmp.m4b","levelName":"DEBUG","level":1}
{"timestamp":"2025-08-28 14:41:28.048","source":"ffmpegHelpers.js:357","message":"[ffmpegHelpers] Progress: 46.557358567625585%","levelName":"DEBUG","level":1}
{"timestamp":"2025-08-28 14:41:28.547","source":"ffmpegHelpers.js:357","message":"[ffmpegHelpers] Progress: 92.39296523255908%","levelName":"DEBUG","level":1}
{"timestamp":"2025-08-28 14:41:28.643","source":"ffmpegHelpers.js:357","message":"[ffmpegHelpers] Progress: 99.99978088370118%","levelName":"DEBUG","level":1}
{"timestamp":"2025-08-28 14:41:28.647","source":"ffmpegHelpers.js:361","message":"[ffmpegHelpers] ffmpeg stdout: ","levelName":"DEBUG","level":1}
{"timestamp":"2025-08-28 14:41:28.647","source":"ffmpegHelpers.js:362","message":"[ffmpegHelpers] ffmpeg stderr:     copyright       : Gildan Media, LLC\n    publisher       : Gildan Media, LLC\n    TRACKTOTAL      : 1\n    major_brand     : isom\n    minor_version   : 512\n    compatible_brands: isomiso2mp41\n    track           : 1\n    encoder         : Lavf60.16.100\n  Chapters:\n    Chapter #0:0: start 0.000000, end 28.000000\n      Metadata:\n        title           : Opening Credits\n    Chapter #0:1: start 28.000000, end 598.471000\n      Metadata:\n        title           : Preambulation\n    Chapter #0:2: start 598.471000, end 1741.310000\n      Metadata:\n        title           : 6 AM - Dawn\n    Chapter #0:3: start 1741.310000, end 3018.593000\n      Metadata:\n        title           : 7 AM - Waking and Washing\n    Chapter #0:4: start 3018.593000, end 4053.274000\n      Metadata:\n        title           : 8 AM - Dressing and Breakfast\n    Chapter #0:5: start 4053.274000, end 5229.179000\n      Metadata:\n        title           : 9 AM - Commute\n    Chapter #0:6: start 5229.179000, end 6451.661000\n      Metadata:\n        title           : 10 AM - The Morning Meeting\n    Chapter #0:7: start 6451.661000, end 7698.200000\n      Metadata:\n        title           : 11 AM - Taking a Break\n    Chapter #0:8: start 7698.200000, end 8563.978000\n      Metadata:\n        title           : Noon - Looking as Though You're Working\n    Chapter #0:9: start 8563.978000, end 9922.111000\n      Metadata:\n        title           : 1 PM - Lunch\n    Chapter #0:10: start 9922.111000, end 10932.177000\n      Metadata:\n        title           : 2 PM - Returning to Work\n    Chapter #0:11: start 10932.177000, end 12078.776000\n      Metadata:\n        title           : 3 PM - Trying to Make Others Work\n    Chapter #0:12: start 12078.776000, end 12818.004000\n      Metadata:\n        title           : 4 PM - Tea\n    Chapter #0:13: start 12818.004000, end 13783.208000\n      Metadata:\n        title           : 5 PM - Actually Doing Some Work\n    Chapter #0:14: start 13783.208000, end 14831.911000\n      Metadata:\n        title           : 6 PM - After Work\n    Chapter #0:15: start 14831.911000, end 15323.056000\n      Metadata:\n        title           : 7 PM - Shopping\n    Chapter #0:16: start 15323.056000, end 16668.928000\n      Metadata:\n        title           : 8 PM - Supper\n    Chapter #0:17: start 16668.928000, end 18424.817000\n      Metadata:\n        title           : 9 PM - Drinking\n    Chapter #0:18: start 18424.817000, end 20835.323000\n      Metadata:\n        title           : 10 PM - Wooing\n    Chapter #0:19: start 20835.323000, end 21661.160000\n      Metadata:\n        title           : 11 PM - Stumbling Home\n    Chapter #0:20: start 21661.160000, end 22679.909000\n      Metadata:\n        title           : Midnight - Nostos\n    Chapter #0:21: start 22679.909000, end 22809.008000\n      Metadata:\n        title           : Epilogue\n    Chapter #0:22: start 22809.008000, end 23219.000000\n      Metadata:\n        title           : Appendix\n    Chapter #0:23: start 23219.000000, end 23275.311000\n      Metadata:\n        title           : Closing Credits\n  Stream #0:0(eng): Audio: aac (LC) (mp4a / 0x6134706D), 22050 Hz, stereo, fltp, 62 kb/s (default)\n    Metadata:\n      handler_name    : ?Apple Sound Media Handler\n      vendor_id       : [0][0][0][0]\n  Stream #0:1: Video: mjpeg (Baseline) (mp4v / 0x7634706D), yuvj420p(pc, bt470bg/unknown/unknown), 2400x2400 [SAR 1:1 DAR 1:1], q=2-31, 25 fps, 25 tbr, 12800 tbn (attached pic)\n    Metadata:\n      title           : Cover\n      comment         : Cover\nStream mapping:\n  Stream #0:0 -> #0:0 (copy)\n  Stream #2:0 -> #0:1 (copy)\nPress [q] to stop, [?] for help\nsize=       0kB time=00:00:00.00 bitrate=N/A speed=N/A    \nsize=   82945kB time=03:00:36.37 bitrate=  62.7kbits/s speed=2.17e+04x    \nsize=  164609kB time=05:58:24.75 bitrate=  62.7kbits/s speed=2.15e+04x    \n[out#0/mp4 @ 0x7ff472fbe040] video:303kB audio:178406kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 1.099269%\nsize=  180673kB time=06:27:55.26 bitrate=  63.6kbits/s speed=2.12e+04x    \n","levelName":"DEBUG","level":1}
{"timestamp":"2025-08-28 14:41:28.647","source":"ffmpegHelpers.js:363","message":"[ffmpegHelpers] Moving temp file to audio file path: \"/audiobooks/Audiobooks/Non-Fiction/Horologicon - A Day's Jaunt Through the Lost Words of the English Language/Horologicon - A Day's Jaunt Through the Lost Words of the English Language.tmp.m4b\" -> \"/audiobooks/Audiobooks/Non-Fiction/Horologicon - A Day's Jaunt Through the Lost Words of the English Language/Horologicon - A Day's Jaunt Through the Lost Words of the English Language.m4b\"","levelName":"DEBUG","level":1}
{"timestamp":"2025-08-28 14:41:28.839","source":"fileUtils.js:558","message":"[copyToExisting] Successfully copied file from /audiobooks/Audiobooks/Non-Fiction/Horologicon - A Day's Jaunt Through the Lost Words of the English Language/Horologicon - A Day's Jaunt Through the Lost Words of the English Language.tmp.m4b to /audiobooks/Audiobooks/Non-Fiction/Horologicon - A Day's Jaunt Through the Lost Words of the English Language/Horologicon - A Day's Jaunt Through the Lost Words of the English Language.m4b","levelName":"DEBUG","level":1}
{"timestamp":"2025-08-28 14:41:28.841","source":"AudioMetadataManager.js:235","message":"[AudioMetadataManager] Successfully tagged audio file \"/audiobooks/Audiobooks/Non-Fiction/Horologicon - A Day's Jaunt Through the Lost Words of the English Language/Horologicon - A Day's Jaunt Through the Lost Words of the English Language.m4b\"","levelName":"INFO","level":2}
{"timestamp":"2025-08-28 14:41:28.842","source":"AudioMetadataManager.js:285","message":"[AudioMetadataManager] Task finished and no tasks remain in queue","levelName":"DEBUG","level":1}

Additional Notes

This is running in a Docker Contain running TrueNAS 25.04.2.1. I am connected via a Windows 11 system using a SMB share on my TrueNAS Server.

Log File.zip

Originally created by @ZLoth on GitHub (Aug 28, 2025). ### What happened? I am cleaning up the chapters in my audiobook collection. I am usually opening that file from the SMB share on my TrueNAS server to my Windows 11 computer using MPC-HC (64 bit) or VLC (64-bit) which "locks" the file from modification from other programs. This is so that I can find the appropriate time stamps for missing sections such as "Opening Credits", "Dedicaton", "Epigraph", and so on. Once I find those time stamps, I use ABS → Tools → Quick Embed to upload the modified chapter data back into the M4B file. If I forget to close the external player, the data isn't updated. ### What did you expect to happen? There needs to be a check to see if the file is in use before attempting to embed the data. If so, a error should be thrown. ### Steps to reproduce the issue STEPS TO REPLICATE: 1. Open the M4B File in a external player (e.g. `/audiobooks/Audiobooks/Non-Fiction/Horologicon - A Day's Jaunt Through the Lost Words of the English Language/Horologicon - A Day's Jaunt Through the Lost Words of the English Language.m4b`) 2. In ABS, use Tools → Quick Embed. 3. ABS will ffmpeg to create temporary file `/audiobooks/Audiobooks/Non-Fiction/Horologicon - A Day's Jaunt Through the Lost Words of the English Language/Horologicon - A Day's Jaunt Through the Lost Words of the English Language.tmp.m4b` 4. ABS will then rename the temporary file to `/audiobooks/Audiobooks/Non-Fiction/Horologicon - A Day's Jaunt Through the Lost Words of the English Language/Horologicon - A Day's Jaunt Through the Lost Words of the English Language.m4b` 5. Log file will report that the copy was successful. HOWEVER, the copy actually failed. Here is the log extract: ``` {"timestamp":"2025-08-28 14:41:06.276","source":"ffmpegHelpers.js:363","message":"[ffmpegHelpers] Moving temp file to audio file path: \"/audiobooks/Audiobooks/Non-Fiction/Horologicon - A Day's Jaunt Through the Lost Words of the English Language/Horologicon - A Day's Jaunt Through the Lost Words of the English Language.tmp.m4b\" -> \"/audiobooks/Audiobooks/Non-Fiction/Horologicon - A Day's Jaunt Through the Lost Words of the English Language/Horologicon - A Day's Jaunt Through the Lost Words of the English Language.m4b\"","levelName":"DEBUG","level":1} {"timestamp":"2025-08-28 14:41:06.472","source":"fileUtils.js:558","message":"[copyToExisting] Successfully copied file from /audiobooks/Audiobooks/Non-Fiction/Horologicon - A Day's Jaunt Through the Lost Words of the English Language/Horologicon - A Day's Jaunt Through the Lost Words of the English Language.tmp.m4b to /audiobooks/Audiobooks/Non-Fiction/Horologicon - A Day's Jaunt Through the Lost Words of the English Language/Horologicon - A Day's Jaunt Through the Lost Words of the English Language.m4b","levelName":"DEBUG","level":1} {"timestamp":"2025-08-28 14:41:06.474","source":"AudioMetadataManager.js:235","message":"[AudioMetadataManager] Successfully tagged audio file \"/audiobooks/Audiobooks/Non-Fiction/Horologicon - A Day's Jaunt Through the Lost Words of the English Language/Horologicon - A Day's Jaunt Through the Lost Words of the English Language.m4b\"","levelName":"INFO","level":2} {"timestamp":"2025-08-28 14:41:06.475","source":"AudioMetadataManager.js:285","message":"[AudioMetadataManager] Task finished and no tasks remain in queue","levelName":"DEBUG","level":1} ``` When I closed the player and tried again, the embed was successful: ``` {"timestamp":"2025-08-28 14:41:28.647","source":"ffmpegHelpers.js:363","message":"[ffmpegHelpers] Moving temp file to audio file path: \"/audiobooks/Audiobooks/Non-Fiction/Horologicon - A Day's Jaunt Through the Lost Words of the English Language/Horologicon - A Day's Jaunt Through the Lost Words of the English Language.tmp.m4b\" -> \"/audiobooks/Audiobooks/Non-Fiction/Horologicon - A Day's Jaunt Through the Lost Words of the English Language/Horologicon - A Day's Jaunt Through the Lost Words of the English Language.m4b\"","levelName":"DEBUG","level":1} {"timestamp":"2025-08-28 14:41:28.839","source":"fileUtils.js:558","message":"[copyToExisting] Successfully copied file from /audiobooks/Audiobooks/Non-Fiction/Horologicon - A Day's Jaunt Through the Lost Words of the English Language/Horologicon - A Day's Jaunt Through the Lost Words of the English Language.tmp.m4b to /audiobooks/Audiobooks/Non-Fiction/Horologicon - A Day's Jaunt Through the Lost Words of the English Language/Horologicon - A Day's Jaunt Through the Lost Words of the English Language.m4b","levelName":"DEBUG","level":1} {"timestamp":"2025-08-28 14:41:28.841","source":"AudioMetadataManager.js:235","message":"[AudioMetadataManager] Successfully tagged audio file \"/audiobooks/Audiobooks/Non-Fiction/Horologicon - A Day's Jaunt Through the Lost Words of the English Language/Horologicon - A Day's Jaunt Through the Lost Words of the English Language.m4b\"","levelName":"INFO","level":2} {"timestamp":"2025-08-28 14:41:28.842","source":"AudioMetadataManager.js:285","message":"[AudioMetadataManager] Task finished and no tasks remain in queue","levelName":"DEBUG","level":1} ``` Here is the recording of the issue: https://github.com/user-attachments/assets/bba2e4c0-3093-4716-af63-8a2b391bd286 ### Audiobookshelf version 2.29.0, also earlier versions ### How are you running audiobookshelf? Docker ### What OS is your Audiobookshelf server hosted from? Other (list in "Additional Notes" box) ### If the issue is being seen in the UI, what browsers are you seeing the problem on? None ### Logs ```shell {"timestamp":"2025-08-28 14:33:10.853","source":"LibraryItem.js:297","message":"Loaded 77 of 1137 items for libary page in 0.15s","levelName":"DEBUG","level":1} {"timestamp":"2025-08-28 14:33:10.854","source":"ApiCacheManager.js:59","message":"[ApiCacheManager] Cache miss: {\"user\":\"Mark Holtz\",\"url\":\"/libraries/a210cdb5-cb8d-4ff1-bd87-34eaefffd218/items?sort=media.metadata.title&desc=0&collapseseries=1&limit=77&page=6&minified=1&include=rssfeed,numEpisodesIncomplete,share\"}","levelName":"DEBUG","level":1} {"timestamp":"2025-08-28 14:34:57.673","source":"ApiCacheManager.js:20","message":"[ApiCacheManager] book.afterUpdate: Clearing cache","levelName":"DEBUG","level":1} {"timestamp":"2025-08-28 14:34:57.704","source":"ApiCacheManager.js:20","message":"[ApiCacheManager] libraryItem.afterUpdate: Clearing cache","levelName":"DEBUG","level":1} {"timestamp":"2025-08-28 14:34:57.704","source":"LibraryItem.js:650","message":"[LibraryItem] Saved metadata for \"The Horologicon\" file to \"/audiobooks/Audiobooks/Non-Fiction/Horologicon - A Day's Jaunt Through the Lost Words of the English Language/metadata.json\"","levelName":"DEBUG","level":1} {"timestamp":"2025-08-28 14:36:27.759","source":"ApiCacheManager.js:20","message":"[ApiCacheManager] book.afterUpdate: Clearing cache","levelName":"DEBUG","level":1} {"timestamp":"2025-08-28 14:36:27.796","source":"ApiCacheManager.js:20","message":"[ApiCacheManager] libraryItem.afterUpdate: Clearing cache","levelName":"DEBUG","level":1} {"timestamp":"2025-08-28 14:36:27.797","source":"LibraryItem.js:650","message":"[LibraryItem] Saved metadata for \"The Horologicon\" file to \"/audiobooks/Audiobooks/Non-Fiction/Horologicon - A Day's Jaunt Through the Lost Words of the English Language/metadata.json\"","levelName":"DEBUG","level":1} {"timestamp":"2025-08-28 14:37:52.867","source":"ApiCacheManager.js:20","message":"[ApiCacheManager] book.afterUpdate: Clearing cache","levelName":"DEBUG","level":1} {"timestamp":"2025-08-28 14:37:52.894","source":"ApiCacheManager.js:20","message":"[ApiCacheManager] libraryItem.afterUpdate: Clearing cache","levelName":"DEBUG","level":1} {"timestamp":"2025-08-28 14:37:52.895","source":"LibraryItem.js:650","message":"[LibraryItem] Saved metadata for \"The Horologicon\" file to \"/audiobooks/Audiobooks/Non-Fiction/Horologicon - A Day's Jaunt Through the Lost Words of the English Language/metadata.json\"","levelName":"DEBUG","level":1} {"timestamp":"2025-08-28 14:41:05.043","source":"AudioMetadataManager.js:137","message":"[AudioMetadataManager] Starting metadata embed task Embedding metadata in audiobook \"The Horologicon\".","levelName":"INFO","level":2} {"timestamp":"2025-08-28 14:41:05.045","source":"AudioMetadataManager.js:141","message":"[AudioMetadataManager] Target directory /audiobooks/Audiobooks/Non-Fiction/Horologicon - A Day's Jaunt Through the Lost Words of the English Language writable: true","levelName":"DEBUG","level":1} {"timestamp":"2025-08-28 14:41:05.045","source":"ffmpegHelpers.js:274","message":"[ffmpegHelpers] Wrote /metadata/cache/items/de0f6cc5-09f0-4184-b80d-579979f4e194/ffmetadata.txt","levelName":"DEBUG","level":1} {"timestamp":"2025-08-28 14:41:05.048","source":"ffmpegHelpers.js:353","message":"[ffmpegHelpers] Spawned Ffmpeg with command: ffmpeg -i /audiobooks/Audiobooks/Non-Fiction/Horologicon - A Day's Jaunt Through the Lost Words of the English Language/Horologicon - A Day's Jaunt Through the Lost Words of the English Language.m4b -i /metadata/cache/items/de0f6cc5-09f0-4184-b80d-579979f4e194/ffmetadata.txt -i /audiobooks/Audiobooks/Non-Fiction/Horologicon - A Day's Jaunt Through the Lost Words of the English Language/cover.jpg -y -map 0:a -map_metadata 1 -map_metadata 0 -map_chapters 1 -c copy -metadata track=1 -f mp4 -map 2:v -disposition:v:0 attached_pic -metadata:s:v title=Cover -metadata:s:v comment=Cover /audiobooks/Audiobooks/Non-Fiction/Horologicon - A Day's Jaunt Through the Lost Words of the English Language/Horologicon - A Day's Jaunt Through the Lost Words of the English Language.tmp.m4b","levelName":"DEBUG","level":1} {"timestamp":"2025-08-28 14:41:05.645","source":"ffmpegHelpers.js:357","message":"[ffmpegHelpers] Progress: 44.03756409527676%","levelName":"DEBUG","level":1} {"timestamp":"2025-08-28 14:41:06.146","source":"ffmpegHelpers.js:357","message":"[ffmpegHelpers] Progress: 89.69658880175649%","levelName":"DEBUG","level":1} {"timestamp":"2025-08-28 14:41:06.273","source":"ffmpegHelpers.js:357","message":"[ffmpegHelpers] Progress: 99.99978088370118%","levelName":"DEBUG","level":1} {"timestamp":"2025-08-28 14:41:06.276","source":"ffmpegHelpers.js:361","message":"[ffmpegHelpers] ffmpeg stdout: ","levelName":"DEBUG","level":1} {"timestamp":"2025-08-28 14:41:06.276","source":"ffmpegHelpers.js:362","message":"[ffmpegHelpers] ffmpeg stderr: copyright : Gildan Media, LLC\n publisher : Gildan Media, LLC\n TRACKTOTAL : 1\n major_brand : isom\n minor_version : 512\n compatible_brands: isomiso2mp41\n track : 1\n encoder : Lavf60.16.100\n Chapters:\n Chapter #0:0: start 0.000000, end 28.000000\n Metadata:\n title : Opening Credits\n Chapter #0:1: start 28.000000, end 598.471000\n Metadata:\n title : Preambulation\n Chapter #0:2: start 598.471000, end 1741.310000\n Metadata:\n title : 6 AM - Dawn\n Chapter #0:3: start 1741.310000, end 3018.593000\n Metadata:\n title : 7 AM - Waking and Washing\n Chapter #0:4: start 3018.593000, end 4053.274000\n Metadata:\n title : 8 AM - Dressing and Breakfast\n Chapter #0:5: start 4053.274000, end 5229.179000\n Metadata:\n title : 9 AM - Commute\n Chapter #0:6: start 5229.179000, end 6451.661000\n Metadata:\n title : 10 AM - The Morning Meeting\n Chapter #0:7: start 6451.661000, end 7698.200000\n Metadata:\n title : 11 AM - Taking a Break\n Chapter #0:8: start 7698.200000, end 8563.978000\n Metadata:\n title : Noon - Looking as Though You're Working\n Chapter #0:9: start 8563.978000, end 9922.111000\n Metadata:\n title : 1 PM - Lunch\n Chapter #0:10: start 9922.111000, end 10932.177000\n Metadata:\n title : 2 PM - Returning to Work\n Chapter #0:11: start 10932.177000, end 12078.776000\n Metadata:\n title : 3 PM - Trying to Make Others Work\n Chapter #0:12: start 12078.776000, end 12818.004000\n Metadata:\n title : 4 PM - Tea\n Chapter #0:13: start 12818.004000, end 13783.208000\n Metadata:\n title : 5 PM - Actually Doing Some Work\n Chapter #0:14: start 13783.208000, end 14831.911000\n Metadata:\n title : 6 PM - After Work\n Chapter #0:15: start 14831.911000, end 15323.056000\n Metadata:\n title : 7 PM - Shopping\n Chapter #0:16: start 15323.056000, end 16668.928000\n Metadata:\n title : 8 PM - Supper\n Chapter #0:17: start 16668.928000, end 18424.817000\n Metadata:\n title : 9 PM - Drinking\n Chapter #0:18: start 18424.817000, end 20835.323000\n Metadata:\n title : 10 PM - Wooing\n Chapter #0:19: start 20835.323000, end 21661.160000\n Metadata:\n title : 11 PM - Stumbling Home\n Chapter #0:20: start 21661.160000, end 22679.909000\n Metadata:\n title : Midnight - Nostos\n Chapter #0:21: start 22679.909000, end 22809.008000\n Metadata:\n title : Epilogue\n Chapter #0:22: start 22809.008000, end 23219.000000\n Metadata:\n title : Appendix\n Chapter #0:23: start 23219.000000, end 23275.311000\n Metadata:\n title : Closing Credits\n Stream #0:0(eng): Audio: aac (LC) (mp4a / 0x6134706D), 22050 Hz, stereo, fltp, 62 kb/s (default)\n Metadata:\n handler_name : ?Apple Sound Media Handler\n vendor_id : [0][0][0][0]\n Stream #0:1: Video: mjpeg (Baseline) (mp4v / 0x7634706D), yuvj420p(pc, bt470bg/unknown/unknown), 2400x2400 [SAR 1:1 DAR 1:1], q=2-31, 25 fps, 25 tbr, 12800 tbn (attached pic)\n Metadata:\n title : Cover\n comment : Cover\nStream mapping:\n Stream #0:0 -> #0:0 (copy)\n Stream #2:0 -> #0:1 (copy)\nPress [q] to stop, [?] for help\nsize= 0kB time=00:00:00.00 bitrate=N/A speed=N/A \nsize= 78337kB time=02:50:49.88 bitrate= 62.6kbits/s speed=2.05e+04x \nsize= 159745kB time=05:47:57.16 bitrate= 62.7kbits/s speed=2.09e+04x \n[out#0/mp4 @ 0x7f7a6f9280c0] video:303kB audio:178406kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 1.099269%\nsize= 180673kB time=06:27:55.26 bitrate= 63.6kbits/s speed=2.06e+04x \n","levelName":"DEBUG","level":1} {"timestamp":"2025-08-28 14:41:06.276","source":"ffmpegHelpers.js:363","message":"[ffmpegHelpers] Moving temp file to audio file path: \"/audiobooks/Audiobooks/Non-Fiction/Horologicon - A Day's Jaunt Through the Lost Words of the English Language/Horologicon - A Day's Jaunt Through the Lost Words of the English Language.tmp.m4b\" -> \"/audiobooks/Audiobooks/Non-Fiction/Horologicon - A Day's Jaunt Through the Lost Words of the English Language/Horologicon - A Day's Jaunt Through the Lost Words of the English Language.m4b\"","levelName":"DEBUG","level":1} {"timestamp":"2025-08-28 14:41:06.472","source":"fileUtils.js:558","message":"[copyToExisting] Successfully copied file from /audiobooks/Audiobooks/Non-Fiction/Horologicon - A Day's Jaunt Through the Lost Words of the English Language/Horologicon - A Day's Jaunt Through the Lost Words of the English Language.tmp.m4b to /audiobooks/Audiobooks/Non-Fiction/Horologicon - A Day's Jaunt Through the Lost Words of the English Language/Horologicon - A Day's Jaunt Through the Lost Words of the English Language.m4b","levelName":"DEBUG","level":1} {"timestamp":"2025-08-28 14:41:06.474","source":"AudioMetadataManager.js:235","message":"[AudioMetadataManager] Successfully tagged audio file \"/audiobooks/Audiobooks/Non-Fiction/Horologicon - A Day's Jaunt Through the Lost Words of the English Language/Horologicon - A Day's Jaunt Through the Lost Words of the English Language.m4b\"","levelName":"INFO","level":2} {"timestamp":"2025-08-28 14:41:06.475","source":"AudioMetadataManager.js:285","message":"[AudioMetadataManager] Task finished and no tasks remain in queue","levelName":"DEBUG","level":1} {"timestamp":"2025-08-28 14:41:27.498","source":"AudioMetadataManager.js:137","message":"[AudioMetadataManager] Starting metadata embed task Embedding metadata in audiobook \"The Horologicon\".","levelName":"INFO","level":2} {"timestamp":"2025-08-28 14:41:27.499","source":"AudioMetadataManager.js:141","message":"[AudioMetadataManager] Target directory /audiobooks/Audiobooks/Non-Fiction/Horologicon - A Day's Jaunt Through the Lost Words of the English Language writable: true","levelName":"DEBUG","level":1} {"timestamp":"2025-08-28 14:41:27.500","source":"ffmpegHelpers.js:274","message":"[ffmpegHelpers] Wrote /metadata/cache/items/de0f6cc5-09f0-4184-b80d-579979f4e194/ffmetadata.txt","levelName":"DEBUG","level":1} {"timestamp":"2025-08-28 14:41:27.502","source":"ffmpegHelpers.js:353","message":"[ffmpegHelpers] Spawned Ffmpeg with command: ffmpeg -i /audiobooks/Audiobooks/Non-Fiction/Horologicon - A Day's Jaunt Through the Lost Words of the English Language/Horologicon - A Day's Jaunt Through the Lost Words of the English Language.m4b -i /metadata/cache/items/de0f6cc5-09f0-4184-b80d-579979f4e194/ffmetadata.txt -i /audiobooks/Audiobooks/Non-Fiction/Horologicon - A Day's Jaunt Through the Lost Words of the English Language/cover.jpg -y -map 0:a -map_metadata 1 -map_metadata 0 -map_chapters 1 -c copy -metadata track=1 -f mp4 -map 2:v -disposition:v:0 attached_pic -metadata:s:v title=Cover -metadata:s:v comment=Cover /audiobooks/Audiobooks/Non-Fiction/Horologicon - A Day's Jaunt Through the Lost Words of the English Language/Horologicon - A Day's Jaunt Through the Lost Words of the English Language.tmp.m4b","levelName":"DEBUG","level":1} {"timestamp":"2025-08-28 14:41:28.048","source":"ffmpegHelpers.js:357","message":"[ffmpegHelpers] Progress: 46.557358567625585%","levelName":"DEBUG","level":1} {"timestamp":"2025-08-28 14:41:28.547","source":"ffmpegHelpers.js:357","message":"[ffmpegHelpers] Progress: 92.39296523255908%","levelName":"DEBUG","level":1} {"timestamp":"2025-08-28 14:41:28.643","source":"ffmpegHelpers.js:357","message":"[ffmpegHelpers] Progress: 99.99978088370118%","levelName":"DEBUG","level":1} {"timestamp":"2025-08-28 14:41:28.647","source":"ffmpegHelpers.js:361","message":"[ffmpegHelpers] ffmpeg stdout: ","levelName":"DEBUG","level":1} {"timestamp":"2025-08-28 14:41:28.647","source":"ffmpegHelpers.js:362","message":"[ffmpegHelpers] ffmpeg stderr: copyright : Gildan Media, LLC\n publisher : Gildan Media, LLC\n TRACKTOTAL : 1\n major_brand : isom\n minor_version : 512\n compatible_brands: isomiso2mp41\n track : 1\n encoder : Lavf60.16.100\n Chapters:\n Chapter #0:0: start 0.000000, end 28.000000\n Metadata:\n title : Opening Credits\n Chapter #0:1: start 28.000000, end 598.471000\n Metadata:\n title : Preambulation\n Chapter #0:2: start 598.471000, end 1741.310000\n Metadata:\n title : 6 AM - Dawn\n Chapter #0:3: start 1741.310000, end 3018.593000\n Metadata:\n title : 7 AM - Waking and Washing\n Chapter #0:4: start 3018.593000, end 4053.274000\n Metadata:\n title : 8 AM - Dressing and Breakfast\n Chapter #0:5: start 4053.274000, end 5229.179000\n Metadata:\n title : 9 AM - Commute\n Chapter #0:6: start 5229.179000, end 6451.661000\n Metadata:\n title : 10 AM - The Morning Meeting\n Chapter #0:7: start 6451.661000, end 7698.200000\n Metadata:\n title : 11 AM - Taking a Break\n Chapter #0:8: start 7698.200000, end 8563.978000\n Metadata:\n title : Noon - Looking as Though You're Working\n Chapter #0:9: start 8563.978000, end 9922.111000\n Metadata:\n title : 1 PM - Lunch\n Chapter #0:10: start 9922.111000, end 10932.177000\n Metadata:\n title : 2 PM - Returning to Work\n Chapter #0:11: start 10932.177000, end 12078.776000\n Metadata:\n title : 3 PM - Trying to Make Others Work\n Chapter #0:12: start 12078.776000, end 12818.004000\n Metadata:\n title : 4 PM - Tea\n Chapter #0:13: start 12818.004000, end 13783.208000\n Metadata:\n title : 5 PM - Actually Doing Some Work\n Chapter #0:14: start 13783.208000, end 14831.911000\n Metadata:\n title : 6 PM - After Work\n Chapter #0:15: start 14831.911000, end 15323.056000\n Metadata:\n title : 7 PM - Shopping\n Chapter #0:16: start 15323.056000, end 16668.928000\n Metadata:\n title : 8 PM - Supper\n Chapter #0:17: start 16668.928000, end 18424.817000\n Metadata:\n title : 9 PM - Drinking\n Chapter #0:18: start 18424.817000, end 20835.323000\n Metadata:\n title : 10 PM - Wooing\n Chapter #0:19: start 20835.323000, end 21661.160000\n Metadata:\n title : 11 PM - Stumbling Home\n Chapter #0:20: start 21661.160000, end 22679.909000\n Metadata:\n title : Midnight - Nostos\n Chapter #0:21: start 22679.909000, end 22809.008000\n Metadata:\n title : Epilogue\n Chapter #0:22: start 22809.008000, end 23219.000000\n Metadata:\n title : Appendix\n Chapter #0:23: start 23219.000000, end 23275.311000\n Metadata:\n title : Closing Credits\n Stream #0:0(eng): Audio: aac (LC) (mp4a / 0x6134706D), 22050 Hz, stereo, fltp, 62 kb/s (default)\n Metadata:\n handler_name : ?Apple Sound Media Handler\n vendor_id : [0][0][0][0]\n Stream #0:1: Video: mjpeg (Baseline) (mp4v / 0x7634706D), yuvj420p(pc, bt470bg/unknown/unknown), 2400x2400 [SAR 1:1 DAR 1:1], q=2-31, 25 fps, 25 tbr, 12800 tbn (attached pic)\n Metadata:\n title : Cover\n comment : Cover\nStream mapping:\n Stream #0:0 -> #0:0 (copy)\n Stream #2:0 -> #0:1 (copy)\nPress [q] to stop, [?] for help\nsize= 0kB time=00:00:00.00 bitrate=N/A speed=N/A \nsize= 82945kB time=03:00:36.37 bitrate= 62.7kbits/s speed=2.17e+04x \nsize= 164609kB time=05:58:24.75 bitrate= 62.7kbits/s speed=2.15e+04x \n[out#0/mp4 @ 0x7ff472fbe040] video:303kB audio:178406kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 1.099269%\nsize= 180673kB time=06:27:55.26 bitrate= 63.6kbits/s speed=2.12e+04x \n","levelName":"DEBUG","level":1} {"timestamp":"2025-08-28 14:41:28.647","source":"ffmpegHelpers.js:363","message":"[ffmpegHelpers] Moving temp file to audio file path: \"/audiobooks/Audiobooks/Non-Fiction/Horologicon - A Day's Jaunt Through the Lost Words of the English Language/Horologicon - A Day's Jaunt Through the Lost Words of the English Language.tmp.m4b\" -> \"/audiobooks/Audiobooks/Non-Fiction/Horologicon - A Day's Jaunt Through the Lost Words of the English Language/Horologicon - A Day's Jaunt Through the Lost Words of the English Language.m4b\"","levelName":"DEBUG","level":1} {"timestamp":"2025-08-28 14:41:28.839","source":"fileUtils.js:558","message":"[copyToExisting] Successfully copied file from /audiobooks/Audiobooks/Non-Fiction/Horologicon - A Day's Jaunt Through the Lost Words of the English Language/Horologicon - A Day's Jaunt Through the Lost Words of the English Language.tmp.m4b to /audiobooks/Audiobooks/Non-Fiction/Horologicon - A Day's Jaunt Through the Lost Words of the English Language/Horologicon - A Day's Jaunt Through the Lost Words of the English Language.m4b","levelName":"DEBUG","level":1} {"timestamp":"2025-08-28 14:41:28.841","source":"AudioMetadataManager.js:235","message":"[AudioMetadataManager] Successfully tagged audio file \"/audiobooks/Audiobooks/Non-Fiction/Horologicon - A Day's Jaunt Through the Lost Words of the English Language/Horologicon - A Day's Jaunt Through the Lost Words of the English Language.m4b\"","levelName":"INFO","level":2} {"timestamp":"2025-08-28 14:41:28.842","source":"AudioMetadataManager.js:285","message":"[AudioMetadataManager] Task finished and no tasks remain in queue","levelName":"DEBUG","level":1} ``` ### Additional Notes This is running in a Docker Contain running TrueNAS 25.04.2.1. I am connected via a Windows 11 system using a SMB share on my TrueNAS Server. [Log File.zip](https://github.com/user-attachments/files/22032787/Log.File.zip)
adam added the bug label 2026-04-25 00:12:35 +02:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/audiobookshelf#2975