a-tze / fuse-ts Goto Github PK
View Code? Open in Web Editor NEWLicense: GNU General Public License v3.0
License: GNU General Public License v3.0
I have a very mysterious problem, whereby two identical fuse-ts binaries running on the same system accessing the same segments produce different uncut.ts files:
# same invocation
voc 694852 0.0 0.0 299160 2220 ? Ssl Nov15 0:27 /usr/bin/fuse-ts p=eventspace- c=/video/obs st=2022-11-15_15-45-00 numfiles=29 totalframes=126000 fps=30 -oallow_other,use_ino /video/fuse/einzelaufnahmen/einzelaufnahmen/eventspace/24
voc 1047543 1.0 0.0 151424 1496 ? Ssl 11:47 0:05 /usr/bin/fuse-ts p=eventspace- c=/video/obs st=2022-11-15_15-45-00 numfiles=29 totalframes=126000 fps=30 -oallow_other,use_ino /video/fuse/einzelaufnahmen/einzelaufnahmen/eventspace/24-new
# same cmdline except for mount path
[wi-5.video.encoder-eventspace][pkoerner@~] > diff /video/fuse/einzelaufnahmen/einzelaufnahmen/eventspace/24/cmdlineopts /video/fuse/einzelaufnahmen/einzelaufnahmen/eventspace/24-new/cmdlineopts
1c1
< fuse-ts c=/video/obs st=2022-11-15_15-45-00 ob=0 numfiles=29 totalframes=126000 if=7179 of=109364 p=eventspace- fps=30 height=1080 -oallow_other,use_ino /video/fuse/einzelaufnahmen/einzelaufnahmen/eventspace/24
---
> fuse-ts c=/video/obs st=2022-11-15_15-45-00 ob=0 numfiles=29 totalframes=126000 if=7179 of=109364 p=eventspace- fps=30 height=1080 -oallow_other,use_ino /video/fuse/einzelaufnahmen/einzelaufnahmen/eventspace/24-new
# same filelist
[wi-5.video.encoder-eventspace][pkoerner@~] > diff /video/fuse/einzelaufnahmen/einzelaufnahmen/eventspace/24/filelist /video/fuse/einzelaufnahmen/einzelaufnahmen/eventspace/24-new/filelist
# same exe
[wi-5.video.encoder-eventspace][pkoerner@~] > sudo sha1sum /proc/$(cat /video/fuse/einzelaufnahmen/einzelaufnahmen/eventspace/24/pid)/exe
a731036d4b9fbc7fefbeab89fbfd3a646ab82790 /proc/694852/exe
[wi-5.video.encoder-eventspace][pkoerner@~] > sudo sha1sum /proc/$(cat /video/fuse/einzelaufnahmen/einzelaufnahmen/eventspace/24-new/pid)/exe
a731036d4b9fbc7fefbeab89fbfd3a646ab82790 /proc/1047543/exe
# uncut.ts has same size
[wi-5.video.encoder-eventspace][pkoerner@/video/obs] > ls -la /video/fuse/einzelaufnahmen/einzelaufnahmen/eventspace/24/uncut.ts
-r--r--r-- 1 root root 4897138116 Nov 15 18:27 /video/fuse/einzelaufnahmen/einzelaufnahmen/eventspace/24/uncut.ts
[wi-5.video.encoder-eventspace][pkoerner@/video/obs] > ls -la /video/fuse/einzelaufnahmen/einzelaufnahmen/eventspace/24-new/uncut.ts
-r--r--r-- 1 root root 4897138116 Nov 16 11:47 /video/fuse/einzelaufnahmen/einzelaufnahmen/eventspace/24-new/uncut.ts
# shasums differ
# bad
[wi-5.video.encoder-eventspace][pkoerner@~] > sha1sum /video/fuse/einzelaufnahmen/einzelaufnahmen/eventspace/24/uncut.ts
05e48b34051f58c901eb28e1ee02cf9808298661 /video/fuse/einzelaufnahmen/einzelaufnahmen/eventspace/24/uncut.ts
# good
[wi-5.video.encoder-eventspace][pkoerner@~] > sha1sum /video/fuse/einzelaufnahmen/einzelaufnahmen/eventspace/24-new/uncut.ts
ccbf312be8bbacca348de56e926187f50f9877c9 /video/fuse/einzelaufnahmen/einzelaufnahmen/eventspace/24-new/uncut.ts
I ran shasum, hexdump, rsync and lots of different tools on the mount and kept getting consistent results. I also had 2 of 2 mounts from yesterday evening broken this way, that, upon re-invocation today are now fine.
After installing latest Shotcut 18.09.16 on OSX, I discovered that inside the project, I cannot see the full timeline I was able to see when checking the uncut.ts
file.
Checking with previous Shotcut versions, I could narrow it down to any version after 18.08.14 who has this issue.
This is the original XML file created by fuse-ts
<?xml version="1.0" encoding="utf-8"?>
<mlt LC_NUMERIC="C" version="0.9.9" title="FUSE-TS" parent="producer0" in="7197" out="24687">
<profile description="automatic" />
<producer id="producer0" title="Source Clip" in="7197" out="24687">
<property name="mlt_type">mlt_producer</property>
<property name="length">49500</property>
<property name="eof">pause</property>
<property name="resource">uncut.ts</property>
<property name="seekable">1</property>
<property name="aspect_ratio">1</property>
<property name="audio_index">1</property>
<property name="video_index">0</property>
<property name="mute_on_pause">0</property>
<property name="mlt_service">avformat-novalidate</property>
<property name="ignore_points">0</property>
<property name="global_feed">1</property>
</producer>
<!--
7197 => inframe, 49500 => frames, 49499 => frames - 1
0 => filesize, uncut.ts => filename without path
24687 => outframe 0 => blanklen
-->
</mlt>
Opening the uncut.ts in Shotcut, and saving it to XML gives this:
<?xml version="1.0" encoding="utf-8"?>
<mlt LC_NUMERIC="en_US" version="6.11.0" title="Shotcut version 18.09.16" parent="producer0" in="00:00:00.000" out="00:36:00.000">
<profile description="automatic" width="1920" height="1080" progressive="1" sample_aspect_num="1" sample_aspect_den="1" display_aspect_num="1920" display_aspect_den="1080" frame_rate_num="25" frame_rate_den="1" colorspace="709"/>
<producer id="producer0" title="Shotcut version 18.09.16" in="00:00:00.000" out="00:36:00.000">
<property name="length">00:36:00:01</property>
<property name="eof">pause</property>
<property name="resource">/Volumes/fuse/geekend2018/CCCB/1/uncut.ts</property>
<property name="seekable">1</property>
<property name="aspect_ratio">1</property>
<property name="audio_index">2</property>
<property name="video_index">0</property>
<property name="mute_on_pause">0</property>
<property name="mlt_service">avformat-novalidate</property>
<property name="shotcut:hash">2044c93f3f52d5256643a411fcfd7c55</property>
<property name="ignore_points">0</property>
<property name="shotcut:caption">uncut.ts</property>
<property name="shotcut:detail">/Volumes/fuse/geekend2018/CCCB/1/uncut.ts</property>
<property name="shotcut:skipConvert">1</property>
<property name="shotcut:projectAudioChannels">2</property>
<property name="global_feed">1</property>
</producer>
</mlt>
To get it to work with the fuse-ts created XML, I had to modify it like this:
<?xml version="1.0" encoding="utf-8"?>
<mlt LC_NUMERIC="C" version="0.9.9" title="FUSE-TS" parent="producer0" in="7197" out="24687">
<profile description="automatic" width="1920" height="1080" progressive="1" sample_aspect_num="1" sample_aspect_den="1" display_aspect_num="1920" display_aspect_den="1080" frame_rate_num="25" frame_rate_den="1" colorspace="709"/>
<producer id="producer0" title="Source Clip" in="7197" out="24687">
<property name="mlt_type">mlt_producer</property>
<property name="length">49500</property>
<property name="eof">pause</property>
<property name="resource">uncut.ts</property>
<property name="seekable">1</property>
<property name="aspect_ratio">1</property>
<property name="audio_index">1</property>
<property name="video_index">0</property>
<property name="mute_on_pause">0</property>
<property name="mlt_service">avformat-novalidate</property>
<property name="ignore_points">0</property>
<property name="global_feed">1</property>
</producer>
<!--
7197 => inframe, 49500 => frames, 49499 => frames - 1
0 => filesize, uncut.ts => filename without path
24687 => outframe 0 => blanklen
-->
</mlt>
With the added details to profile description it was able to show me the full timeline of the uncut.ts
For certain integrations and also debuggung it is adorable to read out the filelist that has been determined.
[wi-5.video.encoder-eventspace][voc@/video/fuse/einzelaufnahmen/eventspace] > echo 900 > 21/inframe
[wi-5.video.encoder-eventspace][voc@/video/fuse/einzelaufnahmen/eventspace] > cat 21/inframe
900
[wi-5.video.encoder-eventspace][voc@/video/fuse/einzelaufnahmen/eventspace] > echo -n 900 > 21/inframe
[wi-5.video.encoder-eventspace][voc@/video/fuse/einzelaufnahmen/eventspace] > cat 21/inframe
900[wi-5.video.encoder-eventspace][voc@/video/fuse/einzelaufnahmen/eventspace] >
I guess that's an accident and it should be consistent either way. Does not hurt anything, though.
The software has always been quite quiet, which makes debugging hard as well as getting some info into other connected systems. Use circular buffer and provide content as file.
KDenlive version 15.08.3-1 cannot succesfully open the virtual project file. It wants to convert and (of course) it fails while saving.
I'm current working on getting fuse-ts compatible with the most recent Shotcut 22.10.25.
The fixes for supporting Tempfiles don't seem to be enough for 22.10.25.
I attached two SMB Captures which only contain the Save-Process. One (fuse-ts-negative-original.pcapng.zip) goes towards the current fuse-ts 2022.09.25.1 and exibits the failed writes to new and additional tempfiles.
The other one (fuse-ts-positive.pcapng.zip) goes towards a normal directory and shows, what a successful write looks like.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.