TL/DR: Re-encoding some mkv and mp4 videos on a VM using ffmpeg via a Dolphin service menu, The source and target file locations were on a NFS server connected to a Kubuntu26.04 VM using QEMU/KVM. The encoding completed successfully, but the VM (via kdialog) never acknowledged the task was finished even though the resulting output files were "closed" successfully. I'm kinda curious where the "break" occurred.
The setup: My desktop PC running KDEneon. A QEMU/KVM virtual machine on the desktop re-encoding files using ffmpeg. Both the PC and VM are accessing the files on my server via NFS v4.2.
The reason: I'm trying to re-encoding several hundred mp4 files and convert a few dozen other mkv to mp4 - primarily to reduce storage usage. ffmpeg keeps crashing on KDEneon if I try to process more than 2-3 files at a time. while also using Handbrake. I decided to try a newer version of ffmpeg to see if that worked better. KDEneon has a much older version of ffmpeg than Kubuntu 26.04 (6.1.1-3ubuntu5 vs. 8.0.1-2ubuntu2 ) but I didn't want to mess about trying to upgrade ffmpeg on KDEneon. So I decided to try using Kubuntu 26.04 in a VM. All of this was additionally complicated as I was simultaneously using Handbrake to also help complete this task on y PC (but not on the VM - yet
). I have enough CPU and RAM to encode more than one file at a time but Handbrake only does one at a time. So I thought I might speed things up by having ffmpeg directly re-encoding the files that were simple enough not to need special settings.
What I did: I already had an updated Kubuntu 26.04 VM so I added my Dolphin Service Menu that I wrote to make this task easier to the VM. I then mounted the NFS file system from the server on the VM. This enabled me to operate in the VM just as I has been on my desktop. I selected a few files and launched ffmpeg. The kdialog progress box popped open and encoding commenced as expected.
The results: The files on both machines (real and virtual) were encoded as expected, but for some reason - only on the VM - the kdialog box never closed as it does on the desktop machine. I verified the output files were viewable and thus "closed" my ffmpeg, but the dialog remained open on the VM as though the files were still being processed.
The question: What causes kdailog to not receive the signal that ffmpeg is done when using it on the VM? Is it the ffmpeg version difference, a difference in how NFS is mounted, or some other wrench in the works?
More detail:
Here's the Dolphin service menu contents:
This allows me to select a video file and either convert it to mp4 (action "g-copy"), re-encode it using the .H265 rate of "24" ( action "g-rate24" - smaller than default), or re-encode it using the .H265 rate of "28" (action "g-rate28 - much smaller than default). All 3 options work as I desire.
The main PC has the NFS shared mounted via fstab. The VM is manually mounted because I didn't need it to access the NFS server all the time.
The only difference - other than the KDEneon version of ffmpeg crashing randomly - is the kdialog on the native KDEneon system closes when the file is done and messages me when each file is complete. The VM does not acknowledge that the file encoding is done. I have to manually verify the destination file is OK by launching it VLC, then "cancel" the action on the VM using the kdialog box.
Mount options on server:
Mount options on VM:
The above almost Identical.
Currently testing the VM running six simultaneous conversions at once.
The setup: My desktop PC running KDEneon. A QEMU/KVM virtual machine on the desktop re-encoding files using ffmpeg. Both the PC and VM are accessing the files on my server via NFS v4.2.
The reason: I'm trying to re-encoding several hundred mp4 files and convert a few dozen other mkv to mp4 - primarily to reduce storage usage. ffmpeg keeps crashing on KDEneon if I try to process more than 2-3 files at a time. while also using Handbrake. I decided to try a newer version of ffmpeg to see if that worked better. KDEneon has a much older version of ffmpeg than Kubuntu 26.04 (6.1.1-3ubuntu5 vs. 8.0.1-2ubuntu2 ) but I didn't want to mess about trying to upgrade ffmpeg on KDEneon. So I decided to try using Kubuntu 26.04 in a VM. All of this was additionally complicated as I was simultaneously using Handbrake to also help complete this task on y PC (but not on the VM - yet
). I have enough CPU and RAM to encode more than one file at a time but Handbrake only does one at a time. So I thought I might speed things up by having ffmpeg directly re-encoding the files that were simple enough not to need special settings.What I did: I already had an updated Kubuntu 26.04 VM so I added my Dolphin Service Menu that I wrote to make this task easier to the VM. I then mounted the NFS file system from the server on the VM. This enabled me to operate in the VM just as I has been on my desktop. I selected a few files and launched ffmpeg. The kdialog progress box popped open and encoding commenced as expected.
The results: The files on both machines (real and virtual) were encoded as expected, but for some reason - only on the VM - the kdialog box never closed as it does on the desktop machine. I verified the output files were viewable and thus "closed" my ffmpeg, but the dialog remained open on the VM as though the files were still being processed.
The question: What causes kdailog to not receive the signal that ffmpeg is done when using it on the VM? Is it the ffmpeg version difference, a difference in how NFS is mounted, or some other wrench in the works?
More detail:
Here's the Dolphin service menu contents:
Code:
[Desktop Entry]
Type=Service
Icon="/usr/share/icons/breeze/mimetypes/32/video-mp4.svg"
X-KDE-ServiceTypes=KonqPopupMenu/Plugin
MimeType=video/*;
Actions=g-copy;g-rate24;g-rate28;
Encoding=UTF-8
[Desktop Action g-copy]
Name=Re-encode Video
Icon=/usr/share/icons/breeze/mimetypes/32/video-mp4.svg
Exec=dbusRef=$(kdialog --icon "/usr/share/icons/breeze/actions/24/convert.svg" --title="Conversion ffmpeg" --progressbar " Converting $(basename %f) " 0); fn=%u; ffmpeg -i %u -y -vcodec libx265 "${fn%.*}"-conv.mp4; qdbus $dbusRef close; kdialog --title "Conversion complete" --passivepopup "$(basename %f) converted to MP4";
[Desktop Action g-rate24]
Name=Re-encode w/rate 24
Icon=/usr/share/icons/breeze/mimetypes/32/video-mp4.svg
Exec=dbusRef=$(kdialog --icon "convert.svg" --title="Conversion ffmpeg" --progressbar " Converting $(basename %f) " 0); fn=%u; ffmpeg -i %u -y -vcodec libx265 -crf 24 "${fn%.*}-24".mp4; qdbus $dbusRef close; kdialog --title "Conversion complete" --passivepopup "$(basename %f) converted to MP4";
[Desktop Action g-rate28]
Name=Re-encode w/rate 28
Icon=/usr/share/icons/breeze/mimetypes/32/video-mp4.svg
Exec=dbusRef=$(kdialog --icon "convert.svg" --title="Conversion ffmpeg" --progressbar " Converting $(basename %f) " 0); fn=%u; ffmpeg -i %u -y -vcodec libx265 -crf 28 "${fn%.*}-28".mp4; qdbus $dbusRef close; kdialog --title "Conversion complete" --passivepopup "$(basename %f) converted to MP4";
The main PC has the NFS shared mounted via fstab. The VM is manually mounted because I didn't need it to access the NFS server all the time.
The only difference - other than the KDEneon version of ffmpeg crashing randomly - is the kdialog on the native KDEneon system closes when the file is done and messages me when each file is complete. The VM does not acknowledge that the file encoding is done. I have to manually verify the destination file is OK by launching it VLC, then "cancel" the action on the VM using the kdialog box.
Mount options on server:
Code:
server:/Videos on /shared/Videos type nfs4 (rw,noatime,nodiratime,vers=4.2,rsize=1048576,wsize=1048576,namlen=255,soft,fatal_neterrors=none,proto=tcp,nconnect=16,timeo=20,retrans=5,sec=sys,clientaddr=192.168.1.199,local_lock=none,addr=192.168.1.250)
Code:
server:/Videos on /shared/Videos type nfs4 (rw,noatime,nodiratime,vers=4.2,rsize=1048576,wsize=1048576,namlen=255,hard,fatal_neterrors=none,proto=tcp,nconnect=16,timeo=600,retrans=2,sec=sys,clientaddr=192.168.1.199,local_lock=none,addr=192.168.1.250)
Currently testing the VM running six simultaneous conversions at once.



