Closed jack-dvd-ripper closed 2 years ago
I was under the impression that inserting the disc would cause the disc-detection file to launch the docker image
This is correct. Check the following things, one after the other, from top to bottom.
cat /etc/udev/rules.d/disc-detection.rules
output the content of disc-detection.rules?docker ps -a | grep marvyn-rip-disc
outputs a list of all relevant containers.sudo sh -c 'udevadm control --reload-rules && udevadm trigger'
sudo journalctl -f
rip-disc
manually with the command ID_CDROM_MEDIA_DVD=1 sudo /opt/docker/marvyn/bin/rip-disc /dev/sr0
? This command is called under the hood and should create a container./opt/docker/marvyn/etc/rip-disc.yml
match your environment (device names, group)?Thanks for the quick reply!
I went through your list to check and here is what I have as results:
I think there is as problem with udev because
i. Yes, the output is:
ACTION=="change", SUBSYSTEMS=="block", KERNEL=="sr[0-9]*", ENV{ID_CDROM}=="?*", RUN+="/opt/docker/marvyn/bin/rip-disc '/dev/%k'"
which is exactly the same as the disc-detection.rules
ii. docker ps -a | grep marvyn-rip-disc
returned:
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/containers/json?all=1": dial unix /var/run/docker.sock: connect: permission denied
So I ran sudo docker ps -a | grep marvyn-rip-disc
which returned no result in the terminal regardless of what disk I inserted
iii. If I run this while a disk is in the drive, it will spin up as if I had just inserted it, but still no output from sudo docker ps -a | grep marvyn-rip-disc
iv. Same results :(
v. This gave the results:
-- Logs begin at Sat 2022-02-12 17:46:46 CST. --
Mar 05 16:50:43 Ripper NetworkManager[665]: <info> [1646520643.6443] device (wlx984827e16ced): supplicant interface state: scanning -> associating
Mar 05 16:50:43 Ripper wpa_supplicant[707]: wlx984827e16ced: Associated with 04:d9:f5:b1:9a:60
Mar 05 16:50:43 Ripper wpa_supplicant[707]: wlx984827e16ced: CTRL-EVENT-SUBNET-STATUS-UPDATE status=0
Mar 05 16:50:43 Ripper NetworkManager[665]: <info> [1646520643.7967] device (wlx984827e16ced): supplicant interface state: associating -> 4-way handshake
Mar 05 16:50:45 Ripper wpa_supplicant[707]: wlx984827e16ced: WPA: Key negotiation completed with 04:d9:f5:b1:9a:60 [PTK=CCMP GTK=CCMP]
Mar 05 16:50:45 Ripper wpa_supplicant[707]: wlx984827e16ced: CTRL-EVENT-CONNECTED - Connection to 04:d9:f5:b1:9a:60 completed [id=0 id_str=]
Mar 05 16:50:45 Ripper wpa_supplicant[707]: bgscan simple: Failed to enable signal strength monitoring
Mar 05 16:50:45 Ripper NetworkManager[665]: <info> [1646520645.1532] device (wlx984827e16ced): supplicant interface state: 4-way handshake -> completed
Mar 05 16:50:58 Ripper sudo[7151]: jack : TTY=pts/1 ; PWD=/home/jack ; USER=root ; COMMAND=/usr/bin/journalctl -f
Mar 05 16:50:58 Ripper sudo[7151]: pam_unix(sudo:session): session opened for user root by (uid=0)
Mar 05 16:51:00 Ripper dockerd[984]: time="2022-03-05T16:51:00.164784450-06:00" level=error msg="Not continuing with pull after error: errors:\ndenied: requested access to the resource is denied\nunauthorized: authentication required\n"
Mar 05 16:51:00 Ripper dockerd[984]: time="2022-03-05T16:51:00.164942989-06:00" level=info msg="Ignoring extra error returned from registry: unauthorized: authentication required"
Mar 05 16:51:00 Ripper systemd-udevd[7134]: sr0: Process '/opt/docker/marvyn/bin/rip-disc '/dev/sr0'' failed with exit code 1.
Mar 05 16:51:00 Ripper kernel: VFS: busy inodes on changed media sr0
Mar 05 16:51:08 Ripper dockerd[984]: time="2022-03-05T16:51:08.215913325-06:00" level=error msg="Not continuing with pull after error: errors:\ndenied: requested access to the resource is denied\nunauthorized: authentication required\n"
Mar 05 16:51:08 Ripper dockerd[984]: time="2022-03-05T16:51:08.216047736-06:00" level=info msg="Ignoring extra error returned from registry: unauthorized: authentication required"
Mar 05 16:51:08 Ripper systemd-udevd[7134]: sr0: Process '/opt/docker/marvyn/bin/rip-disc '/dev/sr0'' failed with exit code 1.
Mar 05 16:51:08 Ripper systemd[1]: Unmounting /media/jack/CHARLIE_WILSONS_WAR...
Mar 05 16:51:08 Ripper systemd[880]: media-jack-CHARLIE_WILSONS_WAR.mount: Succeeded.
Mar 05 16:51:08 Ripper udisksd[706]: Cleaning up mount point /media/jack/CHARLIE_WILSONS_WAR (device 11:0 is not mounted)
Mar 05 16:51:08 Ripper dbus-daemon[930]: [session uid=1000 pid=930] Activating via systemd: service name='org.freedesktop.Tracker1' unit='tracker-store.service' requested by ':1.1' (uid=1000 pid=892 comm="/usr/libexec/tracker-miner-fs " label="unconfined")
Mar 05 16:51:08 Ripper systemd[880]: Starting Tracker metadata database store and lookup manager...
Mar 05 16:51:08 Ripper dbus-daemon[930]: [session uid=1000 pid=930] Successfully activated service 'org.freedesktop.Tracker1'
Mar 05 16:51:08 Ripper systemd[880]: Started Tracker metadata database store and lookup manager.
Mar 05 16:51:08 Ripper systemd[1]: media-jack-CHARLIE_WILSONS_WAR.mount: Succeeded.
Mar 05 16:51:08 Ripper systemd[1]: Unmounted /media/jack/CHARLIE_WILSONS_WAR.
Mar 05 16:51:08 Ripper systemd[1]: Stopping Clean the /media/jack/CHARLIE_WILSONS_WAR mount point...
Mar 05 16:51:08 Ripper systemd[1]: clean-mount-point@media-jack-CHARLIE_WILSONS_WAR.service: Succeeded.
Mar 05 16:51:08 Ripper systemd[1]: Stopped Clean the /media/jack/CHARLIE_WILSONS_WAR mount point.
Mar 05 16:51:15 Ripper kernel: sr 2:0:0:0: [sr0] tag#7 FAILED Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE cmd_age=0s
Mar 05 16:51:15 Ripper kernel: sr 2:0:0:0: [sr0] tag#7 Sense Key : Illegal Request [current]
Mar 05 16:51:15 Ripper kernel: sr 2:0:0:0: [sr0] tag#7 Add. Sense: Read of scrambled sector without authentication
Mar 05 16:51:15 Ripper kernel: sr 2:0:0:0: [sr0] tag#7 CDB: Read(10) 28 00 00 3b 81 80 00 00 40 00
Mar 05 16:51:15 Ripper kernel: blk_update_request: I/O error, dev sr0, sector 15599104 op 0x0:(READ) flags 0x80700 phys_seg 31 prio class 0
Mar 05 16:51:15 Ripper kernel: sr 2:0:0:0: [sr0] tag#4 FAILED Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE cmd_age=0s
Mar 05 16:51:15 Ripper kernel: sr 2:0:0:0: [sr0] tag#4 Sense Key : Illegal Request [current]
Mar 05 16:51:15 Ripper kernel: sr 2:0:0:0: [sr0] tag#4 Add. Sense: Read of scrambled sector without authentication
Mar 05 16:51:15 Ripper kernel: sr 2:0:0:0: [sr0] tag#4 CDB: Read(10) 28 00 00 3b 81 9f 00 00 01 00
Mar 05 16:51:15 Ripper kernel: blk_update_request: I/O error, dev sr0, sector 15599228 op 0x0:(READ) flags 0x0 phys_seg 1 prio class 0
Mar 05 16:51:15 Ripper kernel: Buffer I/O error on dev sr0, logical block 3899807, async page read
Mar 05 16:51:23 Ripper dockerd[984]: time="2022-03-05T16:51:23.195796601-06:00" level=error msg="Not continuing with pull after error: errors:\ndenied: requested access to the resource is denied\nunauthorized: authentication required\n"
Mar 05 16:51:23 Ripper dockerd[984]: time="2022-03-05T16:51:23.195905397-06:00" level=info msg="Ignoring extra error returned from registry: unauthorized: authentication required"
Mar 05 16:51:23 Ripper systemd-udevd[7190]: sr0: Process '/opt/docker/marvyn/bin/rip-disc '/dev/sr0'' failed with exit code 1.
Mar 05 16:51:24 Ripper kernel: UDF-fs: INFO Mounting volume 'CHARLIE_WILSONS_WAR', timestamp 2008/02/11 21:18 (1000)
Mar 05 16:51:24 Ripper systemd[1]: Finished Clean the /media/jack/CHARLIE_WILSONS_WAR mount point.
Mar 05 16:51:24 Ripper udisksd[706]: Mounted /dev/sr0 at /media/jack/CHARLIE_WILSONS_WAR on behalf of uid 1000
Mar 05 16:51:54 Ripper tracker-store[7179]: OK
Mar 05 16:51:54 Ripper systemd[880]: tracker-store.service: Succeeded.
Mar 05 16:52:11 Ripper wpa_supplicant[707]: wlx984827e16ced: CTRL-EVENT-DISCONNECTED bssid=04:d9:f5:b1:9a:60 reason=0
Mar 05 16:52:11 Ripper wpa_supplicant[707]: wlx984827e16ced: CTRL-EVENT-ASSOC-REJECT status_code=1
I think you are on to something here. It seems that the docker doesn't have authorization to take control of the disk drive?
Pulling marvyn-rip-disc (ckware/marvyn:)...
ERROR: pull access denied for ckware/marvyn, repository does not exist or may require 'docker login': denied: requested access to the resource is denied
lsscsi -g
[0:0:0:0] disk ATA ST9500325AS HPM1 /dev/sda /dev/sg0
[2:0:0:0] cd/dvd hp DVD RW AD-7740H 1.80 /dev/sr0 /dev/sg1
I thought these matched the defaults in my /opt/docker/marvyn/etc/rip-disc.yml
file:
---
version: "2.2"
services:
marvyn-rip-disc:
extends:
file: base.yml
service: marvyn-base
hostname: marvyn
env_file:
- mail.env
environment:
- ID_CDROM_MEDIA_CD
- ID_CDROM_MEDIA_CD_R
- ID_CDROM_MEDIA_DVD
- ID_CDROM_MEDIA_BD
- ID_FS_LABEL
- MARVYN_CD_TITLE_DEPTH=3
- MARVYN_EJECT_DISC=yes
devices:
- /dev/cdrom:/dev/cdrom
- /dev/dvd:/dev/dvd
- /dev/sg1:/dev/sg1
- /dev/sr0:/dev/sr0
group_add:
- cdrom
cap_add:
- SYS_RAWIO
But maybe I need to check something else?
Some other things I noticed. I cannot copy an files from the DVD on to the desktop. I try, but nothing happens. VLC also cannot play the files directly from the DVD. It responds with: Your input can't be opened: VLC is unable to open the MRL 'file:///media/jack/NON-STOP/VIDEO_TS/VTS_07_0.VOB'. Check the log for details.
Which I have attached
VLCLogs.txt
ERROR: pull access denied for ckware/marvyn, repository does not exist or may require 'docker login': denied: requested access to the resource is denied
Docker tries to pull the image from an external registry, which means that it does not exist locally. Check if the image exists on your machine:
$ sudo docker images | grep marvyn
ckware/marvyn latest 6122e7e20ac3 2 months ago 818MB
If it doesn't, you probably did not run all of the installation steps, especially /opt/docker/marvyn/image/build
.
The only useful information that I find in the VLC log are read errors.
Side note: If you'd like to run docker
commands without sudo
, your user has to be member of the docker
group. See Manage Docker as a non-root user for instructions and be sure to understand the security implications.
You were right, the image was not built. I am not sure how I messed that up. It was there, but must have been corrupted. Perhaps the laptop lost power while building the image. The computer I've made into my ripping machine is a bit slow, so it takes nearly 2 hours to build the image. Now that it is built, it does start a docker as soon as I put a disk in the drive. docker ps -a | grep marvyn-rip-disc
gives me
7f5a602a0970 ckware/marvyn "/bin/sh -c 'exec ni…" 11 seconds ago Up 8 seconds marvyn-rip-disc-20220306-093503
78620e733343 ckware/marvyn "/bin/sh -c 'exec ni…" 54 seconds ago Exited (1) 51 seconds ago marvyn-rip-disc-20220306-093420
f66868b14dc1 ckware/marvyn "/bin/sh -c 'exec ni…" 58 seconds ago Created
However, I am only ripping movies at the moment, so how to I get the transcoding to start as soon as the DVD is ripped? For example, after insterting the disc, the drive will spin up and run for about 15 minutes, then spin down and I will have this nice output:
jack@Ripper:/opt/docker/marvyn/output/DVD/CHARLIE_WILSONS_WAR/VIDEO_TS$ ls
VIDEO_TS.BUP VTS_01_0.IFO VTS_01_3.VOB VTS_01_7.VOB VTS_02_1.VOB VTS_03_1.VOB VTS_04_1.VOB VTS_05_1.VOB VTS_06_1.VOB
VIDEO_TS.IFO VTS_01_0.VOB VTS_01_4.VOB VTS_02_0.BUP VTS_03_0.BUP VTS_04_0.BUP VTS_05_0.BUP VTS_06_0.BUP
VIDEO_TS.VOB VTS_01_1.VOB VTS_01_5.VOB VTS_02_0.IFO VTS_03_0.IFO VTS_04_0.IFO VTS_05_0.IFO VTS_06_0.IFO
VTS_01_0.BUP VTS_01_2.VOB VTS_01_6.VOB VTS_02_0.VOB VTS_03_0.VOB VTS_04_0.VOB VTS_05_0.VOB VTS_06_0.VOB
How would I then make the transcoding start immediately after without the need for any input from me?
Cheers, Jack
Glad to hear that your problem is solved. Please close this issue, we can continute the conversation anyway.
How would I then make the transcoding start immediately after without the need for any input from me?
MARVYN's autorip feature covers lossless ripping and decrypting only. Transcoding is supposed to run separately, either for a single video (Video Disc Conversion) or for a bunch of videos (Video Series Conversion). See Examples for the syntax.
Your options to combine autorip with transcoding, ordered by complexity & comfort:
video-series-conversion
on the output root directory.disc-detection.rules
to run this script instead of rip-disc
. The shell script simply contains commands for ripping and transcoding. Easiest would be to start rip-disc
and then video-series-conversion
on the root output directory for DVDs (I think video-disc-conversion
is not an option because you'd have to know the disc directory before ripping).Thank you very much!
Continuing the discussion, though. When I run
jack@Ripper:~$ bin/transcode-disc-directory /opt/docker/marvyn/output/DVD/CHARLIE_WILSONS_WAR/
I don't seem to get any output. My transcode-disc-directory.yml is the default, I think:
version: "2.2"
services:
marvyn-transcode-disc-directory:
extends:
file: vaapi-transcode.yml
service: marvyn-vaapi-transcode
environment:
- MARVYN_CLEANUP
volumes:
- ../work:/work
But no temporary files are loaded in the work directory nor are there any additional file in the output directory. I think I will use the first solution you proposed since it is the easiest.
Thanks again!
I don't seem to get any output
When you you run a command, the container id is printed to screen. Using this id, you can view the container log (documented under Management tasks):
$ /opt/docker/marvyn/bin/transcode-disc-directory /media/movies/my-movie/
95b1000eb9ee508230c451a56ae7150bf783bd1cf9f2ebdfcc4824ded54086f4
$ docker logs 95b1000eb9ee508230c451a56ae7150bf783bd1cf9f2ebdfcc4824ded54086f4
app_Key = *************************
MakeMKV v1.16.7 linux(x64-release) started
The program can't find any usable optical drives.
Opening files on harddrive at file:///input/my-movie/VIDEO_TS
Opening files on harddrive at file:///input/my-movie/VIDEO_TS
Calculated BUP offset for VTS #1 does not match one in IFO header.
Calculated BUP offset for VTS #2 does not match one in IFO header.
Title #1 has length of 81 seconds which is less than minimum title length of 120 seconds and was therefore skipped
Cells 9-end were skipped due to cell commands (structure protection?)
Title #2 was added (8 cell(s), 0:48:08)
Operation successfully completed
Saving 1 titles into directory file:///work/my-movie
...
When something goes wrong, you should see a message about it in the log.
When the id is not printed, have a look into your journal. Maybe you have a permission issue.
You can also view the log of terminated containers:
$ docker ps -a | grep marvyn-transcode-disc-directory
95b1000eb9ee ckware/marvyn "/bin/sh -c 'exec ni…" 17 minutes ago Exited (143) 17 minutes ago marvyn-transcode-disc-directory-20220312-090135
$ docker logs 95b1000eb9ee
Again, thank you for your patients and quick replies. I believe I have a permissions issue, and I think I resolved it, though maybe I did not use the best method.
jack@Ripper:~$ docker logs marvyn-transcode-disc-directory-20220309-152752
mkdir: cannot create directory '/output/CHARLIE_WILSONS_WAR': Permission denied
I used sudo chmod -R 777 docker/
to change the permissions. Maybe you know a better way than to changed the entire directory to 777? My linux knowledge is very limited, so this is the only method I know.
After changing permissions I ran the transcode again:
jack@Ripper:/opt/docker/marvyn$ bin/transcode-disc-directory /opt/docker/marvyn/output/DVD/CHARLIE_WILSONS_WAR/
marvyn-transcode-disc-directory-20220312-083817
I let it run until it was finished:
jack@Ripper:/opt/docker/marvyn$ docker ps -a | grep marvyn-transcode-disc-directory
bc0c3beb309f ckware/marvyn "/bin/sh -c 'exec ni…" 6 minutes ago Exited (1) About a minute ago marvyn-transcode-disc-directory-20220312-083817
I then checked the logs:
jack@Ripper:/opt/docker/marvyn$ docker logs marvyn-transcode-disc-directory-20220312-083817
MakeMKV v1.16.7 linux(x64-release) started
Automatic checking for updates is enabled, you may disable it in preferences if you don't want MakeMKV to contact web server.
The program can't find any usable optical drives.
Opening files on harddrive at file:///input/CHARLIE_WILSONS_WAR/VIDEO_TS
Opening files on harddrive at file:///input/CHARLIE_WILSONS_WAR/VIDEO_TS
Calculated BUP offset for VTS #1 does not match one in IFO header.
Calculated BUP offset for VTS #2 does not match one in IFO header.
Calculated BUP offset for VTS #3 does not match one in IFO header.
Calculated BUP offset for VTS #4 does not match one in IFO header.
Calculated BUP offset for VTS #5 does not match one in IFO header.
Calculated BUP offset for VTS #6 does not match one in IFO header.
Cells 22-end were skipped due to cell commands (structure protection?)
Title #1 was added (21 cell(s), 1:41:41)
Title #1/0/1 has length of 1 seconds which is less than minimum title length of 120 seconds and was therefore skipped
Cells 2-end were skipped due to cell commands (structure protection?)
Title #2 was added (1 cell(s), 0:03:17)
Title #2/0/1 has length of 1 seconds which is less than minimum title length of 120 seconds and was therefore skipped
Cells 2-end were skipped due to cell commands (structure protection?)
Title #3 was added (1 cell(s), 0:17:09)
Title #3/0/1 has length of 1 seconds which is less than minimum title length of 120 seconds and was therefore skipped
Cells 2-end were skipped due to cell commands (structure protection?)
Title #4 was added (1 cell(s), 0:12:21)
Title #4/0/1 has length of 1 seconds which is less than minimum title length of 120 seconds and was therefore skipped
Title #5 has length of 24 seconds which is less than minimum title length of 120 seconds and was therefore skipped
Title #6 has length of 14 seconds which is less than minimum title length of 120 seconds and was therefore skipped
Operation successfully completed
Saving 4 titles into directory file:///work/CHARLIE_WILSONS_WAR
4 titles saved
Copy complete. 4 titles saved.
Selected language: eng
[AVHWDeviceContext @ 0x5587867e8d00] No VA display found for device /dev/dri/renderD128.
Device creation failed: -22.
Failed to set value 'vaapi=foo:/dev/dri/renderD128' for option 'init_hw_device': Invalid argument
Error parsing global options: Invalid argument...
Again, I corrected this by changing the permissions on /dev/dri/renderD128
and ran it again and this time it work quite well. My next questions are:
Thanks again! Jack
/opt/docker/marvyn/output
I used
sudo chmod -R 777 docker/
to change the permissions.
This should not be required when you follow the first command of the installation instructions, which gives write permission on /opt/docker
to group users
. 777 means that anyone may do anything. I recommend to give 775 and add your user to the group of the output directory.
/dev/dri/renderD128
Again, I corrected this by changing the permissions on
/dev/dri/renderD128
I do not recommend changing the permissions on a file under /dev
. I guess the change is lost after a reboot. Instead, give the required permissions to your user. This can be done in 2 steps:
$ ls -n /dev/dri/renderD128
crw-rw---- 1 0 118 226, 128 Mär 10 07:35 /dev/dri/renderD128
That means: users of group 118
have write permission on the device.
group_add
section in etc/vaapi-transcode.yml
:
services:
marvyn-vaapi-transcode:
[...]
group_add:
- video
- 118
The group id should be in numeric format because the group name may not be known within within the Docker container.
Where can I set the minimum length to be transcoded? I'd like to set it to be more than 120 seconds.
The minimum length is a MakeMKV configuration parameter. These parameters may be configured in the MakeMKV settings file /opt/docker/marvyn/data/.MakeMKV/settings.conf
. To set the minimum length to 180 seconds, add the following line to the file:
dvd_MinimumTitleLength = "180"
I found the parameter name in the thread Documentation for settings.conf?. Please use the MakeMKV support forum for questions on MakeMKV.
The quality of the transcoded files are a bit low. What parameter do I change to increase their quality?
A list of supported parameters can be found in the video transcoding documentation. Add the parameter to either transcode-disc-directory.yml or vaapi-transcode.yml. See vaapi-transcode.yml as an example for the syntax. If you need anything that is not available as parameter, you can customize the ffmpeg call in the service script vaapi-transcode.
Hello Christian and other contributors,
This is more of a question than an issue, but I am just learning to use github because I wanted to build an automatic ripper for audio, movies, and tv series discs. I webstackexchange suggested to submit an issue if the author's contact information isn't available. So here I am. I am running Ubuntu on an old laptop with internal dvd drive. Here are the specs: Ubuntu 20.04.3 HP Pavillion g series 8GB ram 500GB HD Intel i5-2430M, 2.4Ghz x 4 AMD Caicos/Intel HD Graphics 3000 lsscsi -g results: cd/dvd hp DVD RW AD-7740H 1.80 /dev/sr0 /dev/sg1
I followed the readme.md file very closely, but when I insert the DVD (Shrek 2 DVD, not Blu-ray) it would appear the auto-ripping doesn't start. I don't even think the default /output and /work directories were created. Do I need to start up an image in docker first? Sorry for such a rudimentary question, but I was under the impression that inserting the disc would cause the disc-detection file to launch the docker image.
Thanks for making this and I hope I can get it working. Cheers, Jack