mlt-devel Mailing List for MLT Multimedia Framework
Brought to you by:
ddennedy,
lilo_booter
You can subscribe to this list here.
2004 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
(2) |
Jul
(14) |
Aug
(44) |
Sep
(10) |
Oct
(1) |
Nov
(4) |
Dec
(3) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2005 |
Jan
(30) |
Feb
|
Mar
|
Apr
(1) |
May
|
Jun
(28) |
Jul
(66) |
Aug
(40) |
Sep
(28) |
Oct
(49) |
Nov
(56) |
Dec
(46) |
2006 |
Jan
(8) |
Feb
(24) |
Mar
(16) |
Apr
(9) |
May
(13) |
Jun
(5) |
Jul
(22) |
Aug
(12) |
Sep
(12) |
Oct
(35) |
Nov
(14) |
Dec
(12) |
2007 |
Jan
(13) |
Feb
(28) |
Mar
(57) |
Apr
(35) |
May
(19) |
Jun
(59) |
Jul
(43) |
Aug
(15) |
Sep
(8) |
Oct
(27) |
Nov
(9) |
Dec
(26) |
2008 |
Jan
(28) |
Feb
(70) |
Mar
(41) |
Apr
(12) |
May
(32) |
Jun
(39) |
Jul
(49) |
Aug
(16) |
Sep
(7) |
Oct
(83) |
Nov
(39) |
Dec
(76) |
2009 |
Jan
(67) |
Feb
(83) |
Mar
(37) |
Apr
(53) |
May
(86) |
Jun
(71) |
Jul
(64) |
Aug
(96) |
Sep
(142) |
Oct
(34) |
Nov
(82) |
Dec
(60) |
2010 |
Jan
(54) |
Feb
(50) |
Mar
(61) |
Apr
(33) |
May
(39) |
Jun
(49) |
Jul
(28) |
Aug
(71) |
Sep
(89) |
Oct
(51) |
Nov
(34) |
Dec
(67) |
2011 |
Jan
(94) |
Feb
(76) |
Mar
(110) |
Apr
(49) |
May
(178) |
Jun
(105) |
Jul
(137) |
Aug
(29) |
Sep
(151) |
Oct
(70) |
Nov
(50) |
Dec
(49) |
2012 |
Jan
(130) |
Feb
(159) |
Mar
(51) |
Apr
(51) |
May
(31) |
Jun
(41) |
Jul
(67) |
Aug
(63) |
Sep
(137) |
Oct
(81) |
Nov
(82) |
Dec
(89) |
2013 |
Jan
(65) |
Feb
(74) |
Mar
(52) |
Apr
(43) |
May
(64) |
Jun
(66) |
Jul
(48) |
Aug
(16) |
Sep
(20) |
Oct
(41) |
Nov
(20) |
Dec
(53) |
2014 |
Jan
(79) |
Feb
(51) |
Mar
(51) |
Apr
(62) |
May
(38) |
Jun
(85) |
Jul
(29) |
Aug
(34) |
Sep
(91) |
Oct
(56) |
Nov
(27) |
Dec
(33) |
2015 |
Jan
(50) |
Feb
(74) |
Mar
(41) |
Apr
(70) |
May
(26) |
Jun
(53) |
Jul
(28) |
Aug
(8) |
Sep
(36) |
Oct
(42) |
Nov
(35) |
Dec
(20) |
2016 |
Jan
(21) |
Feb
(57) |
Mar
(42) |
Apr
(57) |
May
(32) |
Jun
(43) |
Jul
(87) |
Aug
(11) |
Sep
(23) |
Oct
(76) |
Nov
(31) |
Dec
(20) |
2017 |
Jan
(41) |
Feb
(58) |
Mar
(32) |
Apr
(12) |
May
(7) |
Jun
(6) |
Jul
(9) |
Aug
(19) |
Sep
(26) |
Oct
(13) |
Nov
(15) |
Dec
(9) |
2018 |
Jan
(19) |
Feb
(40) |
Mar
(45) |
Apr
(19) |
May
(33) |
Jun
(33) |
Jul
(19) |
Aug
(37) |
Sep
(15) |
Oct
(22) |
Nov
(22) |
Dec
(29) |
2019 |
Jan
(9) |
Feb
(4) |
Mar
(3) |
Apr
(1) |
May
|
Jun
(4) |
Jul
|
Aug
(3) |
Sep
(11) |
Oct
(1) |
Nov
(8) |
Dec
(6) |
2020 |
Jan
(6) |
Feb
(6) |
Mar
|
Apr
(1) |
May
(11) |
Jun
|
Jul
(13) |
Aug
(3) |
Sep
(4) |
Oct
(11) |
Nov
(15) |
Dec
(4) |
2021 |
Jan
(3) |
Feb
(3) |
Mar
(2) |
Apr
(10) |
May
|
Jun
|
Jul
(2) |
Aug
(20) |
Sep
(1) |
Oct
(3) |
Nov
(14) |
Dec
(12) |
2022 |
Jan
(29) |
Feb
|
Mar
|
Apr
|
May
(8) |
Jun
(1) |
Jul
|
Aug
|
Sep
(7) |
Oct
|
Nov
(11) |
Dec
(1) |
2023 |
Jan
(6) |
Feb
(3) |
Mar
|
Apr
|
May
|
Jun
(9) |
Jul
(22) |
Aug
|
Sep
(3) |
Oct
(3) |
Nov
(5) |
Dec
|
2024 |
Jan
|
Feb
(1) |
Mar
|
Apr
|
May
|
Jun
|
Jul
(2) |
Aug
(14) |
Sep
(2) |
Oct
|
Nov
|
Dec
|
From: Dan D. <dde...@gm...> - 2024-09-09 22:02:02
|
Please post this to GitHub Issues and tag the committer @Tjoppen I think I will close this mailing list. On Mon, Sep 9, 2024 at 2:58 PM Jean-Baptiste Mardelle <jb...@kd...> wrote: > Hi all, > > We've had several reports these last days regarding playback issue in > Kdenlive , and traced some of the problems to 2 MLT commits that were > pushed on the 8th of July: > > 1. > https://github.com/mltframework/mlt/commit/1f0323d8aafa742216968f57c98f259328bb5bea > > and > > 2. https://github.com/mltframework/mlt/commit/ > > c868d5eef34e61cbbc61e43e5f7177e5b1f8b7cc > > With the first commit, playback is broken at least with the test file when > using the standard NTSC profiles. > > This bug report [https://bugs.kde.org/show_bug.cgi?id=492892] contains an > avi ntsc video file: https://we.tl/t-MqSoKFV6LQ > > Interestingly, playing this file with the automatic profile works: > > melt snip.avi, plays correctly > > But playing with an NTSC profile: > > melt -profile dv_ntsc snip.avi > > just plays a frozen first frame. > > The difference is in the profile's framerate: > > Automatic profile is 2997/100 > > DV_NTSC profile is 30000/1001 > > Reverting the first above commit fixes the playback feeeze. > > ---------------------------------------------------------------------- > > The second commit causes frozen frames on playback and render with MPEG 4 > files. Issue was reported in this bug report [ > https://bugs.kde.org/show_bug.cgi?id=492692], and we reproduced it > locally. > > Reverting this commit fixes the issue and playback is smooth again. > > I am not really familiar enough with avformat internals to propose a fix, > but > > am willing to help in any possible way. > > Thanks for your work and best regards > > Jean-Baptiste > > > > > > _______________________________________________ > Mlt-devel mailing list > Mlt...@li... > https://lists.sourceforge.net/lists/listinfo/mlt-devel > |
From: Jean-Baptiste M. <jb...@kd...> - 2024-09-09 21:55:21
|
Hi all, We've had several reports these last days regarding playback issue in Kdenlive , and traced some of the problems to 2 MLT commits that were pushed on the 8th of July: 1. https://github.com/mltframework/mlt/commit/ 1f0323d8aafa742216968f57c98f259328bb5bea and 2. https://github.com/mltframework/mlt/commit/ c868d5eef34e61cbbc61e43e5f7177e5b1f8b7cc With the first commit, playback is broken at least with the test file when using the standard NTSC profiles. This bug report [https://bugs.kde.org/show_bug.cgi?id=492892[1]] contains an avi ntsc video file: https://we.tl/t-MqSoKFV6LQ[2] Interestingly, playing this file with the automatic profile works: melt snip.avi, plays correctly But playing with an NTSC profile: melt -profile dv_ntsc snip.avi just plays a frozen first frame. The difference is in the profile's framerate: Automatic profile is 2997/100 DV_NTSC profile is 30000/1001 Reverting the first above commit fixes the playback feeeze. ---------------------------------------------------------------------- The second commit causes frozen frames on playback and render with MPEG 4 files. Issue was reported in this bug report [https://bugs.kde.org/show_bug.cgi? id=492692], and we reproduced it locally. Reverting this commit fixes the issue and playback is smooth again. I am not really familiar enough with avformat internals to propose a fix, but am willing to help in any possible way. Thanks for your work and best regards Jean-Baptiste -------- [1] https://bugs.kde.org/show_bug.cgi?id=492892 [2] https://we.tl/t-MqSoKFV6LQ |
From: Saniya T. <san...@gm...> - 2024-08-12 04:31:12
|
Hi, I've set up Melted and Melt on my system and successfully run a UDP stream. I can see NDI listed as producers and consumers using the command melt -query. I'm now trying to run NDI with Melted using a configuration file. My current melted.conf file includes: SET root=/home/saniya/videos UADD multi:/home/saniya/melted/src/melted/src/modules/ndi.yml However, I need guidance on the structure of the ndi.yml file to correctly stream NDI through it. Has anyone here successfully configured NDI with Melted using a YAML file? If so, could you please share the structure or any examples? Any suggestions or insights would be greatly appreciated! Thank you in advance. On Thu, 8 Aug 2024 at 15:35, Saniya Tyagi <san...@gm...> wrote: > Its an urgent need, if you can help. please do > > > On Thu, 8 Aug 2024 at 11:13, Saniya Tyagi <san...@gm...> > wrote: > >> Hi everyone, >> >> I've set up Melted and Melt on my system and successfully run a UDP >> stream. I can see NDI listed as producers and consumers using the command melt >> -query. >> >> I'm now trying to run NDI with Melted using a configuration file. My >> current melted.conf file includes: >> >> >> SET root=/home/saniya/videos >> UADD multi:/home/saniya/melted/src/melted/src/modules/ndi.yml >> >> However, I need guidance on the structure of the ndi.yml file to >> correctly stream NDI through it. Has anyone here successfully configured >> NDI with Melted using a YAML file? If so, could you please share the >> structure or any examples? >> >> Any suggestions or insights would be greatly appreciated! >> >> Thank you in advance. >> > |
From: Saniya T. <san...@gm...> - 2024-08-12 04:30:35
|
Hi again everyone, I've set up Melted and Melt on my system and successfully run a UDP stream. I can see NDI listed as producers and consumers using the command melt -query. I'm now trying to run NDI with Melted using a configuration file. My current melted.conf file includes: SET root=/home/saniya/videos UADD multi:/home/saniya/melted/src/melted/src/modules/ndi.yml However, I need guidance on the structure of the ndi.yml file to correctly stream NDI through it. Has anyone here successfully configured NDI with Melted using a YAML file? If so, could you please share the structure or any examples? Any suggestions or insights would be greatly appreciated! Thank you in advance. On Wed, 7 Aug 2024 at 16:19, kaixogamorra2 via Mlt-devel < mlt...@li...> wrote: > Hi! > I am trying to build a video editing tool for a local radio station, but > also going to open source it. It's a tool which automatically makes cuts to > always follow (focus) the camera to the person who is speaking. To do this > I need to divide the tracks in X-seconds samples, and calculate which > tracks have a higher volume per sample, and focus that camera in that > second. I have a deadline for the 11th of August. > Here are some example (propietary) applications that do this: > > - https://www.kapwing.com/ai/auto-speaker-focus > - https://www.autocut.com/en/autocutpodcast/ > - https://www.autopod.fm/ > > Because I don't know much of the API yet, this is my code in > metaprogramming. I hope the code is understandable. > https://pastebin.com/YVxBu95B > Any help appreciated. Thanks! > _______________________________________________ > Mlt-devel mailing list > Mlt...@li... > https://lists.sourceforge.net/lists/listinfo/mlt-devel > |
From: Saniya T. <san...@gm...> - 2024-08-09 04:25:09
|
Hi again everyone, I've set up Melted and Melt on my system and successfully run a UDP stream. I can see NDI listed as producers and consumers using the command melt -query. I'm now trying to run NDI with Melted using a configuration file. My current melted.conf file includes: SET root=/home/saniya/videos UADD multi:/home/saniya/melted/src/melted/src/modules/ndi.yml However, I need guidance on the structure of the ndi.yml file to correctly stream NDI through it. Has anyone here successfully configured NDI with Melted using a YAML file? If so, could you please share the structure or any examples? Any suggestions or insights would be greatly appreciated! Thank you in advance. On Thu, 8 Aug 2024 at 11:19, Saniya Tyagi <san...@gm...> wrote: > Hi everyone, > > I've set up Melted and Melt on my system and successfully run a UDP > stream. I can see NDI listed as producers and consumers using the command melt > -query. > > I'm now trying to run NDI with Melted using a configuration file. My > current melted.conf file includes: > > > SET root=/home/saniya/videos > UADD multi:/home/saniya/melted/src/melted/src/modules/ndi.yml > > However, I need guidance on the structure of the ndi.yml file to > correctly stream NDI through it. Has anyone here successfully configured > NDI with Melted using a YAML file? If so, could you please share the > structure or any examples? > > Any suggestions or insights would be greatly appreciated! > > Thank you in advance. > > On Thu, 8 Aug 2024 at 10:05, Abhishek Singh <abh...@gm...> > wrote: > >> Is it possible ndi broadcast by melted because melt cli is work but I am >> not understand from melted >> >> On Thu, 8 Aug, 2024, 01:36 kaixogamorra2 via Mlt-devel, < >> mlt...@li...> wrote: >> >>> My bad, it's Producer::cut. 🤦♂️ >>> El miércoles, 7 de agosto de 2024 a las 22:03, kaixogamorra2 < >>> kai...@pr...> escribió: >>> >>> hi, >>> is mlt capable of getting raw audio data and making video cuts? I >>> couldn't find which producer / consumer / filter / service is responsible >>> of this. >>> El miércoles, 7 de agosto de 2024 a las 12:48, kaixogamorra2 < >>> kai...@pr...> escribió: >>> >>> Hi! >>> I am trying to build a video editing tool for a local radio station, but >>> also going to open source it. It's a tool which automatically makes cuts to >>> always follow (focus) the camera to the person who is speaking. To do this >>> I need to divide the tracks in X-seconds samples, and calculate which >>> tracks have a higher volume per sample, and focus that camera in that >>> second. I have a deadline for the 11th of August. >>> Here are some example (propietary) applications that do this: >>> >>> - https://www.kapwing.com/ai/auto-speaker-focus >>> - https://www.autocut.com/en/autocutpodcast/ >>> - https://www.autopod.fm/ >>> >>> Because I don't know much of the API yet, this is my code in >>> metaprogramming. I hope the code is understandable. >>> https://pastebin.com/YVxBu95B >>> Any help appreciated. Thanks! >>> >>> >>> >>> _______________________________________________ >>> Mlt-devel mailing list >>> Mlt...@li... >>> https://lists.sourceforge.net/lists/listinfo/mlt-devel >>> >> _______________________________________________ >> Mlt-devel mailing list >> Mlt...@li... >> https://lists.sourceforge.net/lists/listinfo/mlt-devel >> > |
From: Saniya T. <san...@gm...> - 2024-08-08 10:05:47
|
Its an urgent need, if you can help. please do On Thu, 8 Aug 2024 at 11:13, Saniya Tyagi <san...@gm...> wrote: > Hi everyone, > > I've set up Melted and Melt on my system and successfully run a UDP > stream. I can see NDI listed as producers and consumers using the command melt > -query. > > I'm now trying to run NDI with Melted using a configuration file. My > current melted.conf file includes: > > > SET root=/home/saniya/videos > UADD multi:/home/saniya/melted/src/melted/src/modules/ndi.yml > > However, I need guidance on the structure of the ndi.yml file to > correctly stream NDI through it. Has anyone here successfully configured > NDI with Melted using a YAML file? If so, could you please share the > structure or any examples? > > Any suggestions or insights would be greatly appreciated! > > Thank you in advance. > |
From: Abhishek S. <abh...@gm...> - 2024-08-08 06:21:59
|
👍 Abhishek reacted via Gmail <https://www.google.com/gmail/about/?utm_source=gmail-in-product&utm_medium=et&utm_campaign=emojireactionemail#app> On Thu, 8 Aug, 2024, 11:19 Saniya Tyagi, <san...@gm...> wrote: > Hi everyone, > > I've set up Melted and Melt on my system and successfully run a UDP > stream. I can see NDI listed as producers and consumers using the command melt > -query. > > I'm now trying to run NDI with Melted using a configuration file. My > current melted.conf file includes: > > > SET root=/home/saniya/videos > UADD multi:/home/saniya/melted/src/melted/src/modules/ndi.yml > > However, I need guidance on the structure of the ndi.yml file to > correctly stream NDI through it. Has anyone here successfully configured > NDI with Melted using a YAML file? If so, could you please share the > structure or any examples? > > Any suggestions or insights would be greatly appreciated! > > Thank you in advance. > > On Thu, 8 Aug 2024 at 10:05, Abhishek Singh <abh...@gm...> > wrote: > >> Is it possible ndi broadcast by melted because melt cli is work but I am >> not understand from melted >> >> On Thu, 8 Aug, 2024, 01:36 kaixogamorra2 via Mlt-devel, < >> mlt...@li...> wrote: >> >>> My bad, it's Producer::cut. 🤦♂️ >>> El miércoles, 7 de agosto de 2024 a las 22:03, kaixogamorra2 < >>> kai...@pr...> escribió: >>> >>> hi, >>> is mlt capable of getting raw audio data and making video cuts? I >>> couldn't find which producer / consumer / filter / service is responsible >>> of this. >>> El miércoles, 7 de agosto de 2024 a las 12:48, kaixogamorra2 < >>> kai...@pr...> escribió: >>> >>> Hi! >>> I am trying to build a video editing tool for a local radio station, but >>> also going to open source it. It's a tool which automatically makes cuts to >>> always follow (focus) the camera to the person who is speaking. To do this >>> I need to divide the tracks in X-seconds samples, and calculate which >>> tracks have a higher volume per sample, and focus that camera in that >>> second. I have a deadline for the 11th of August. >>> Here are some example (propietary) applications that do this: >>> >>> - https://www.kapwing.com/ai/auto-speaker-focus >>> - https://www.autocut.com/en/autocutpodcast/ >>> - https://www.autopod.fm/ >>> >>> Because I don't know much of the API yet, this is my code in >>> metaprogramming. I hope the code is understandable. >>> https://pastebin.com/YVxBu95B >>> Any help appreciated. Thanks! >>> >>> >>> >>> _______________________________________________ >>> Mlt-devel mailing list >>> Mlt...@li... >>> https://lists.sourceforge.net/lists/listinfo/mlt-devel >>> >> _______________________________________________ >> Mlt-devel mailing list >> Mlt...@li... >> https://lists.sourceforge.net/lists/listinfo/mlt-devel >> > |
From: Saniya T. <san...@gm...> - 2024-08-08 05:49:51
|
Hi everyone, I've set up Melted and Melt on my system and successfully run a UDP stream. I can see NDI listed as producers and consumers using the command melt -query. I'm now trying to run NDI with Melted using a configuration file. My current melted.conf file includes: SET root=/home/saniya/videos UADD multi:/home/saniya/melted/src/melted/src/modules/ndi.yml However, I need guidance on the structure of the ndi.yml file to correctly stream NDI through it. Has anyone here successfully configured NDI with Melted using a YAML file? If so, could you please share the structure or any examples? Any suggestions or insights would be greatly appreciated! Thank you in advance. On Thu, 8 Aug 2024 at 10:05, Abhishek Singh <abh...@gm...> wrote: > Is it possible ndi broadcast by melted because melt cli is work but I am > not understand from melted > > On Thu, 8 Aug, 2024, 01:36 kaixogamorra2 via Mlt-devel, < > mlt...@li...> wrote: > >> My bad, it's Producer::cut. 🤦♂️ >> El miércoles, 7 de agosto de 2024 a las 22:03, kaixogamorra2 < >> kai...@pr...> escribió: >> >> hi, >> is mlt capable of getting raw audio data and making video cuts? I >> couldn't find which producer / consumer / filter / service is responsible >> of this. >> El miércoles, 7 de agosto de 2024 a las 12:48, kaixogamorra2 < >> kai...@pr...> escribió: >> >> Hi! >> I am trying to build a video editing tool for a local radio station, but >> also going to open source it. It's a tool which automatically makes cuts to >> always follow (focus) the camera to the person who is speaking. To do this >> I need to divide the tracks in X-seconds samples, and calculate which >> tracks have a higher volume per sample, and focus that camera in that >> second. I have a deadline for the 11th of August. >> Here are some example (propietary) applications that do this: >> >> - https://www.kapwing.com/ai/auto-speaker-focus >> - https://www.autocut.com/en/autocutpodcast/ >> - https://www.autopod.fm/ >> >> Because I don't know much of the API yet, this is my code in >> metaprogramming. I hope the code is understandable. >> https://pastebin.com/YVxBu95B >> Any help appreciated. Thanks! >> >> >> >> _______________________________________________ >> Mlt-devel mailing list >> Mlt...@li... >> https://lists.sourceforge.net/lists/listinfo/mlt-devel >> > _______________________________________________ > Mlt-devel mailing list > Mlt...@li... > https://lists.sourceforge.net/lists/listinfo/mlt-devel > |
From: Saniya T. <san...@gm...> - 2024-08-08 05:43:58
|
Hi everyone, I've set up Melted and Melt on my system and successfully run a UDP stream. I can see NDI listed as producers and consumers using the command melt -query. I'm now trying to run NDI with Melted using a configuration file. My current melted.conf file includes: SET root=/home/saniya/videos UADD multi:/home/saniya/melted/src/melted/src/modules/ndi.yml However, I need guidance on the structure of the ndi.yml file to correctly stream NDI through it. Has anyone here successfully configured NDI with Melted using a YAML file? If so, could you please share the structure or any examples? Any suggestions or insights would be greatly appreciated! Thank you in advance. |
From: Abhishek S. <abh...@gm...> - 2024-08-08 04:35:27
|
Is it possible ndi broadcast by melted because melt cli is work but I am not understand from melted On Thu, 8 Aug, 2024, 01:36 kaixogamorra2 via Mlt-devel, < mlt...@li...> wrote: > My bad, it's Producer::cut. 🤦♂️ > El miércoles, 7 de agosto de 2024 a las 22:03, kaixogamorra2 < > kai...@pr...> escribió: > > hi, > is mlt capable of getting raw audio data and making video cuts? I couldn't > find which producer / consumer / filter / service is responsible of this. > El miércoles, 7 de agosto de 2024 a las 12:48, kaixogamorra2 < > kai...@pr...> escribió: > > Hi! > I am trying to build a video editing tool for a local radio station, but > also going to open source it. It's a tool which automatically makes cuts to > always follow (focus) the camera to the person who is speaking. To do this > I need to divide the tracks in X-seconds samples, and calculate which > tracks have a higher volume per sample, and focus that camera in that > second. I have a deadline for the 11th of August. > Here are some example (propietary) applications that do this: > > - https://www.kapwing.com/ai/auto-speaker-focus > - https://www.autocut.com/en/autocutpodcast/ > - https://www.autopod.fm/ > > Because I don't know much of the API yet, this is my code in > metaprogramming. I hope the code is understandable. > https://pastebin.com/YVxBu95B > Any help appreciated. Thanks! > > > > _______________________________________________ > Mlt-devel mailing list > Mlt...@li... > https://lists.sourceforge.net/lists/listinfo/mlt-devel > |
From: kaixogamorra2 <kai...@pr...> - 2024-08-07 20:05:46
|
My bad, it's Producer::cut. 🤦♂️ El miércoles, 7 de agosto de 2024 a las 22:03, kaixogamorra2 <kai...@pr...> escribió: > hi, > is mlt capable of getting raw audio data and making video cuts? I couldn't find which producer / consumer / filter / service is responsible of this. > El miércoles, 7 de agosto de 2024 a las 12:48, kaixogamorra2 <kai...@pr...> escribió: > >> Hi! >> I am trying to build a video editing tool for a local radio station, but also going to open source it. It's a tool which automatically makes cuts to always follow (focus) the camera to the person who is speaking. To do this I need to divide the tracks in X-seconds samples, and calculate which tracks have a higher volume per sample, and focus that camera in that second. I have a deadline for the 11th of August. >> Here are some example (propietary) applications that do this: >> >> - https://www.kapwing.com/ai/auto-speaker-focus >> - https://www.autocut.com/en/autocutpodcast/ >> - https://www.autopod.fm/ >> >> Because I don't know much of the API yet, this is my code in metaprogramming. I hope the code is understandable. https://pastebin.com/YVxBu95B >> Any help appreciated. Thanks! |
From: kaixogamorra2 <kai...@pr...> - 2024-08-07 20:04:11
|
hi, is mlt capable of getting raw audio data and making video cuts? I couldn't find which producer / consumer / filter / service is responsible of this. El miércoles, 7 de agosto de 2024 a las 12:48, kaixogamorra2 <kai...@pr...> escribió: > Hi! > I am trying to build a video editing tool for a local radio station, but also going to open source it. It's a tool which automatically makes cuts to always follow (focus) the camera to the person who is speaking. To do this I need to divide the tracks in X-seconds samples, and calculate which tracks have a higher volume per sample, and focus that camera in that second. I have a deadline for the 11th of August. > Here are some example (propietary) applications that do this: > > - https://www.kapwing.com/ai/auto-speaker-focus > - https://www.autocut.com/en/autocutpodcast/ > - https://www.autopod.fm/ > > Because I don't know much of the API yet, this is my code in metaprogramming. I hope the code is understandable. https://pastebin.com/YVxBu95B > Any help appreciated. Thanks! |
From: Palmer D. <pa...@da...> - 2024-08-07 13:52:57
|
On Wed, 07 Aug 2024 00:54:19 PDT (-0700), jul...@kd... wrote: > Hi Palmer, > > I think it would make sense to send your patch for MLT as a pull request on GitHub as one can discuss the code better over there (Dan and Brian correct me if that's not what you prefer). Works for me. https://github.com/mltframework/mlt/pull/1011 . FWIW, the contributing page doesn't say to make a PR, it says The preferred way to receive code changes is by publishing your git repo and telling Main.DanDennedy or the mailing list whenever you have something new or have updated something worthy of notice. Otherwise, send patches to the mailing list. All patches must be in the unified diff format. Short patches can be in the body of the message. Long patches should be attached. Use your best judgment. I wasn't sure what that first option was, I guess technically that's what a PR is but it's kind of an odd way to say it. So I figured with the page mentioning mailing lists I'd just send the patch along. Maybe it's best to just say "send a PR on github" in there somewhere? That's generally a pretty well understood thing these days ;) > For Kdenlive also feel free to open a draft merge request with your changes even in an early state. https://invent.kde.org/multimedia/kdenlive/-/merge_requests/526 > > Cheers, > Julius (Kdenlive Team) > > 07.08.2024 08:35:11 Palmer Dabbelt <pa...@da...>: > >> This reads burned in timecodes from the headers of the two timecode >> flavors I have floating around (Tentacle and GoPro), and provides them >> to users. >> >> Signed-off-by: Palmer Dabbelt <pa...@da...> >> --- >> I'm very new to all this video editing stuff, but I'm trying to get >> multiple devices syced up via timecodes and I think I've mostly got it >> working. I'm using kdenlive and have a patch for that as well, but I >> think the MLT side of things is going to need some work as what I have >> here seems a bit clunky: >> >> * I don't think converting to milliseconds was actually the right thing >> to do, as I'm just converting everything to/from frames. >> * I'm not sure how cut clips are meant to work, but I don't have any >> code to handle timecode offsets either here or in kdenlive so I'm >> assuming they're going to be broken. >> * I'm just sort of guessing at this metadata based on reading some files >> with ffprobe, I didn't read any specs. So I have no idea if that >> pattern matching is going to be robust. >> >> That said, I figured I'd just send this for now so at least I could get >> it out on the list and see if anyone has a better idea... >> --- >> src/framework/mlt.vers | 6 +++ >> src/framework/mlt_producer.c | 75 ++++++++++++++++++++++++++++++++++++ >> src/framework/mlt_producer.h | 2 + >> src/mlt++/MltProducer.cpp | 11 ++++++ >> src/mlt++/MltProducer.h | 2 + >> src/mlt++/mlt++.vers | 10 +++++ >> 6 files changed, 106 insertions(+) >> >> diff --git a/src/framework/mlt.vers b/src/framework/mlt.vers >> index 1b99babb..85d70a6d 100644 >> --- a/src/framework/mlt.vers >> +++ b/src/framework/mlt.vers >> @@ -657,3 +657,9 @@ MLT_7.22.0 { >> mlt_property_is_numeric; >> mlt_property_is_rect; >> } MLT_7.18.0; >> + >> +MLT_7.226.0 { >> + global: >> + mlt_producer_set_timecode; >> + mlt_producer_get_timecode; >> +} MLT_7.22.0; >> diff --git a/src/framework/mlt_producer.c b/src/framework/mlt_producer.c >> index 904c9e02..fc9756c8 100644 >> --- a/src/framework/mlt_producer.c >> +++ b/src/framework/mlt_producer.c >> @@ -1284,6 +1284,81 @@ void mlt_producer_set_creation_time(mlt_producer self, int64_t creation_time) >> free(datestr); >> } >> >> +/** Get the timecode associated with the producer. >> + * >> + * \public \memberof mlt_producer_s >> + * \param self a producer >> + * \return The timecode for the given producer, in milliseconds. >> + */ >> +int64_t mlt_producer_get_timecode(mlt_producer self) >> +{ >> + mlt_producer producer = mlt_producer_cut_parent(self); >> + >> + char *str = mlt_properties_get(MLT_PRODUCER_PROPERTIES(producer), "timecode"); >> + if (str) { >> + int64_t ms; >> + char dummy; >> + int ret = sscanf(str, "%" SCNd64 "%c", &ms, &dummy); >> + if (ret != 1) >> + return -1; >> + return ms; >> + } >> + >> + // Check for a "time_reference" in the metadata, which is the timecode >> + // counted in samples. Convert that to milliseconds. This is an audio >> + // file, so just assume it's the first source. >> + str = mlt_properties_get(MLT_PRODUCER_PROPERTIES(producer), >> + "meta.attr.time_reference.markup"); >> + if (str) { >> + int64_t samples; >> + char dummy; >> + int ret = sscanf(str, "%" SCNd64 "%c", &samples, &dummy); >> + if (ret != 1) >> + return -1; >> + >> + str = mlt_properties_get(MLT_PRODUCER_PROPERTIES(producer), >> + "meta.media.0.codec.sample_rate"); >> + if (!str) >> + return -1; >> + int64_t sample_rate; >> + ret = sscanf(str, "%" SCNd64 "%c", &sample_rate, &dummy); >> + if (ret != 1) >> + return -1; >> + >> + return (samples * 1000) / sample_rate; >> + } >> + >> + // Check for a "timecode" in GoPro format, which is HH:MM:SS;FRAME. >> + str = mlt_properties_get(MLT_PRODUCER_PROPERTIES(producer), >> + "meta.attr.0.stream.timecode.markup"); >> + if (str) { >> + int hh, mm, ss, frame; >> + int ret = sscanf(str, "%02d:%02d:%02d;%02d", &hh, &mm, &ss, &frame); >> + if (ret != 4) >> + return -1; >> + return (frame * 1000 / mlt_producer_get_fps(producer)) + (ss + mm * 60 + hh * 3600) * 1000; >> + } >> + >> + return -1; >> +} >> + >> +/** Set the timecode for the producer >> + * >> + * This allows callers to override the timecode deceted by MLT for a producer. >> + * >> + * \public \memberof mlt_producer_s >> + * \praam self a producer >> + * \param timecode The timecode, in milliseconds, to set >> + */ >> + >> +void mlt_producer_set_timecode(mlt_producer self, int64_t timecode) >> +{ >> + char buf[32]; >> + mlt_producer parent = mlt_producer_cut_parent(self); >> + snprintf(buf, sizeof(buf), "%" PRId64, timecode); >> + mlt_properties_set(MLT_PRODUCER_PROPERTIES(parent), "timecode", buf); >> +} >> + >> /** Probe the producer to publish metadata properties. >> * >> * After this call the producer will publish meta.media properties >> diff --git a/src/framework/mlt_producer.h b/src/framework/mlt_producer.h >> index 9b7bcff7..a6c7acd6 100644 >> --- a/src/framework/mlt_producer.h >> +++ b/src/framework/mlt_producer.h >> @@ -144,6 +144,8 @@ extern int mlt_producer_optimise(mlt_producer self); >> extern void mlt_producer_close(mlt_producer self); >> int64_t mlt_producer_get_creation_time(mlt_producer self); >> void mlt_producer_set_creation_time(mlt_producer self, int64_t creation_time); >> +extern int64_t mlt_producer_get_timecode(mlt_producer self); >> +extern void mlt_producer_set_timecode(mlt_producer self, int64_t timecode); >> extern int mlt_producer_probe(mlt_producer self); >> >> #endif >> diff --git a/src/mlt++/MltProducer.cpp b/src/mlt++/MltProducer.cpp >> index a837194d..40f305ad 100644 >> --- a/src/mlt++/MltProducer.cpp >> +++ b/src/mlt++/MltProducer.cpp >> @@ -262,6 +262,17 @@ void Producer::set_creation_time(int64_t creation_time) >> mlt_producer_set_creation_time(get_producer(), creation_time); >> } >> >> +int64_t Producer::get_timecode() >> +{ >> + int64_t tc = mlt_producer_get_timecode(get_producer()); >> + return tc; >> +} >> + >> +void Producer::set_timecode(int64_t timecode) >> +{ >> + mlt_producer_set_timecode(get_producer(), timecode); >> +} >> + >> bool Producer::probe() >> { >> return mlt_producer_probe(get_producer()); >> diff --git a/src/mlt++/MltProducer.h b/src/mlt++/MltProducer.h >> index 7afefbc3..b1ef4d21 100644 >> --- a/src/mlt++/MltProducer.h >> +++ b/src/mlt++/MltProducer.h >> @@ -77,6 +77,8 @@ public: >> int clear(); >> int64_t get_creation_time(); >> void set_creation_time(int64_t creation_time); >> + int64_t get_timecode(); >> + void set_timecode(int64_t timecode); >> bool probe(); >> }; >> } // namespace Mlt >> diff --git a/src/mlt++/mlt++.vers b/src/mlt++/mlt++.vers >> index 1934decd..d9ff3764 100644 >> --- a/src/mlt++/mlt++.vers >> +++ b/src/mlt++/mlt++.vers >> @@ -710,5 +710,15 @@ MLT_7.14.0 { >> extern "C++" { >> "Mlt::Producer::probe()"; >> "Mlt::Chain::attach_normalizers()"; >> + "Mlt::Producer::get_timecode()"; >> + "Mlt::Producer::set_timecode(int64_t)"; >> }; >> } MLT_7.12.0; >> + >> +MLT_7.26.0 { >> + global: >> + extern "C++" { >> + "Mlt::Producer::get_timecode()"; >> + "Mlt::Producer::set_timecode(int64_t)"; >> + }; >> +} MLT_7.14.0; >> -- >> 2.45.2 >> >> >> >> _______________________________________________ >> Mlt-devel mailing list >> Mlt...@li... >> https://lists.sourceforge.net/lists/listinfo/mlt-devel |
From: kaixogamorra2 <kai...@pr...> - 2024-08-07 10:48:44
|
Hi! I am trying to build a video editing tool for a local radio station, but also going to open source it. It's a tool which automatically makes cuts to always follow (focus) the camera to the person who is speaking. To do this I need to divide the tracks in X-seconds samples, and calculate which tracks have a higher volume per sample, and focus that camera in that second. I have a deadline for the 11th of August. Here are some example (propietary) applications that do this: - https://www.kapwing.com/ai/auto-speaker-focus - https://www.autocut.com/en/autocutpodcast/ - https://www.autopod.fm/ Because I don't know much of the API yet, this is my code in metaprogramming. I hope the code is understandable. https://pastebin.com/YVxBu95B Any help appreciated. Thanks! |
From: Julius K. <jul...@kd...> - 2024-08-07 08:09:55
|
Hi Palmer, I think it would make sense to send your patch for MLT as a pull request on GitHub as one can discuss the code better over there (Dan and Brian correct me if that's not what you prefer). For Kdenlive also feel free to open a draft merge request with your changes even in an early state. Cheers, Julius (Kdenlive Team) 07.08.2024 08:35:11 Palmer Dabbelt <pa...@da...>: > This reads burned in timecodes from the headers of the two timecode > flavors I have floating around (Tentacle and GoPro), and provides them > to users. > > Signed-off-by: Palmer Dabbelt <pa...@da...> > --- > I'm very new to all this video editing stuff, but I'm trying to get > multiple devices syced up via timecodes and I think I've mostly got it > working. I'm using kdenlive and have a patch for that as well, but I > think the MLT side of things is going to need some work as what I have > here seems a bit clunky: > > * I don't think converting to milliseconds was actually the right thing > to do, as I'm just converting everything to/from frames. > * I'm not sure how cut clips are meant to work, but I don't have any > code to handle timecode offsets either here or in kdenlive so I'm > assuming they're going to be broken. > * I'm just sort of guessing at this metadata based on reading some files > with ffprobe, I didn't read any specs. So I have no idea if that > pattern matching is going to be robust. > > That said, I figured I'd just send this for now so at least I could get > it out on the list and see if anyone has a better idea... > --- > src/framework/mlt.vers | 6 +++ > src/framework/mlt_producer.c | 75 ++++++++++++++++++++++++++++++++++++ > src/framework/mlt_producer.h | 2 + > src/mlt++/MltProducer.cpp | 11 ++++++ > src/mlt++/MltProducer.h | 2 + > src/mlt++/mlt++.vers | 10 +++++ > 6 files changed, 106 insertions(+) > > diff --git a/src/framework/mlt.vers b/src/framework/mlt.vers > index 1b99babb..85d70a6d 100644 > --- a/src/framework/mlt.vers > +++ b/src/framework/mlt.vers > @@ -657,3 +657,9 @@ MLT_7.22.0 { > mlt_property_is_numeric; > mlt_property_is_rect; > } MLT_7.18.0; > + > +MLT_7.226.0 { > + global: > + mlt_producer_set_timecode; > + mlt_producer_get_timecode; > +} MLT_7.22.0; > diff --git a/src/framework/mlt_producer.c b/src/framework/mlt_producer.c > index 904c9e02..fc9756c8 100644 > --- a/src/framework/mlt_producer.c > +++ b/src/framework/mlt_producer.c > @@ -1284,6 +1284,81 @@ void mlt_producer_set_creation_time(mlt_producer self, int64_t creation_time) > free(datestr); > } > > +/** Get the timecode associated with the producer. > + * > + * \public \memberof mlt_producer_s > + * \param self a producer > + * \return The timecode for the given producer, in milliseconds. > + */ > +int64_t mlt_producer_get_timecode(mlt_producer self) > +{ > + mlt_producer producer = mlt_producer_cut_parent(self); > + > + char *str = mlt_properties_get(MLT_PRODUCER_PROPERTIES(producer), "timecode"); > + if (str) { > + int64_t ms; > + char dummy; > + int ret = sscanf(str, "%" SCNd64 "%c", &ms, &dummy); > + if (ret != 1) > + return -1; > + return ms; > + } > + > + // Check for a "time_reference" in the metadata, which is the timecode > + // counted in samples. Convert that to milliseconds. This is an audio > + // file, so just assume it's the first source. > + str = mlt_properties_get(MLT_PRODUCER_PROPERTIES(producer), > + "meta.attr.time_reference.markup"); > + if (str) { > + int64_t samples; > + char dummy; > + int ret = sscanf(str, "%" SCNd64 "%c", &samples, &dummy); > + if (ret != 1) > + return -1; > + > + str = mlt_properties_get(MLT_PRODUCER_PROPERTIES(producer), > + "meta.media.0.codec.sample_rate"); > + if (!str) > + return -1; > + int64_t sample_rate; > + ret = sscanf(str, "%" SCNd64 "%c", &sample_rate, &dummy); > + if (ret != 1) > + return -1; > + > + return (samples * 1000) / sample_rate; > + } > + > + // Check for a "timecode" in GoPro format, which is HH:MM:SS;FRAME. > + str = mlt_properties_get(MLT_PRODUCER_PROPERTIES(producer), > + "meta.attr.0.stream.timecode.markup"); > + if (str) { > + int hh, mm, ss, frame; > + int ret = sscanf(str, "%02d:%02d:%02d;%02d", &hh, &mm, &ss, &frame); > + if (ret != 4) > + return -1; > + return (frame * 1000 / mlt_producer_get_fps(producer)) + (ss + mm * 60 + hh * 3600) * 1000; > + } > + > + return -1; > +} > + > +/** Set the timecode for the producer > + * > + * This allows callers to override the timecode deceted by MLT for a producer. > + * > + * \public \memberof mlt_producer_s > + * \praam self a producer > + * \param timecode The timecode, in milliseconds, to set > + */ > + > +void mlt_producer_set_timecode(mlt_producer self, int64_t timecode) > +{ > + char buf[32]; > + mlt_producer parent = mlt_producer_cut_parent(self); > + snprintf(buf, sizeof(buf), "%" PRId64, timecode); > + mlt_properties_set(MLT_PRODUCER_PROPERTIES(parent), "timecode", buf); > +} > + > /** Probe the producer to publish metadata properties. > * > * After this call the producer will publish meta.media properties > diff --git a/src/framework/mlt_producer.h b/src/framework/mlt_producer.h > index 9b7bcff7..a6c7acd6 100644 > --- a/src/framework/mlt_producer.h > +++ b/src/framework/mlt_producer.h > @@ -144,6 +144,8 @@ extern int mlt_producer_optimise(mlt_producer self); > extern void mlt_producer_close(mlt_producer self); > int64_t mlt_producer_get_creation_time(mlt_producer self); > void mlt_producer_set_creation_time(mlt_producer self, int64_t creation_time); > +extern int64_t mlt_producer_get_timecode(mlt_producer self); > +extern void mlt_producer_set_timecode(mlt_producer self, int64_t timecode); > extern int mlt_producer_probe(mlt_producer self); > > #endif > diff --git a/src/mlt++/MltProducer.cpp b/src/mlt++/MltProducer.cpp > index a837194d..40f305ad 100644 > --- a/src/mlt++/MltProducer.cpp > +++ b/src/mlt++/MltProducer.cpp > @@ -262,6 +262,17 @@ void Producer::set_creation_time(int64_t creation_time) > mlt_producer_set_creation_time(get_producer(), creation_time); > } > > +int64_t Producer::get_timecode() > +{ > + int64_t tc = mlt_producer_get_timecode(get_producer()); > + return tc; > +} > + > +void Producer::set_timecode(int64_t timecode) > +{ > + mlt_producer_set_timecode(get_producer(), timecode); > +} > + > bool Producer::probe() > { > return mlt_producer_probe(get_producer()); > diff --git a/src/mlt++/MltProducer.h b/src/mlt++/MltProducer.h > index 7afefbc3..b1ef4d21 100644 > --- a/src/mlt++/MltProducer.h > +++ b/src/mlt++/MltProducer.h > @@ -77,6 +77,8 @@ public: > int clear(); > int64_t get_creation_time(); > void set_creation_time(int64_t creation_time); > + int64_t get_timecode(); > + void set_timecode(int64_t timecode); > bool probe(); > }; > } // namespace Mlt > diff --git a/src/mlt++/mlt++.vers b/src/mlt++/mlt++.vers > index 1934decd..d9ff3764 100644 > --- a/src/mlt++/mlt++.vers > +++ b/src/mlt++/mlt++.vers > @@ -710,5 +710,15 @@ MLT_7.14.0 { > extern "C++" { > "Mlt::Producer::probe()"; > "Mlt::Chain::attach_normalizers()"; > + "Mlt::Producer::get_timecode()"; > + "Mlt::Producer::set_timecode(int64_t)"; > }; > } MLT_7.12.0; > + > +MLT_7.26.0 { > + global: > + extern "C++" { > + "Mlt::Producer::get_timecode()"; > + "Mlt::Producer::set_timecode(int64_t)"; > + }; > +} MLT_7.14.0; > -- > 2.45.2 > > > > _______________________________________________ > Mlt-devel mailing list > Mlt...@li... > https://lists.sourceforge.net/lists/listinfo/mlt-devel |
From: Palmer D. <pa...@da...> - 2024-08-07 06:34:52
|
This reads burned in timecodes from the headers of the two timecode flavors I have floating around (Tentacle and GoPro), and provides them to users. Signed-off-by: Palmer Dabbelt <pa...@da...> --- I'm very new to all this video editing stuff, but I'm trying to get multiple devices syced up via timecodes and I think I've mostly got it working. I'm using kdenlive and have a patch for that as well, but I think the MLT side of things is going to need some work as what I have here seems a bit clunky: * I don't think converting to milliseconds was actually the right thing to do, as I'm just converting everything to/from frames. * I'm not sure how cut clips are meant to work, but I don't have any code to handle timecode offsets either here or in kdenlive so I'm assuming they're going to be broken. * I'm just sort of guessing at this metadata based on reading some files with ffprobe, I didn't read any specs. So I have no idea if that pattern matching is going to be robust. That said, I figured I'd just send this for now so at least I could get it out on the list and see if anyone has a better idea... --- src/framework/mlt.vers | 6 +++ src/framework/mlt_producer.c | 75 ++++++++++++++++++++++++++++++++++++ src/framework/mlt_producer.h | 2 + src/mlt++/MltProducer.cpp | 11 ++++++ src/mlt++/MltProducer.h | 2 + src/mlt++/mlt++.vers | 10 +++++ 6 files changed, 106 insertions(+) diff --git a/src/framework/mlt.vers b/src/framework/mlt.vers index 1b99babb..85d70a6d 100644 --- a/src/framework/mlt.vers +++ b/src/framework/mlt.vers @@ -657,3 +657,9 @@ MLT_7.22.0 { mlt_property_is_numeric; mlt_property_is_rect; } MLT_7.18.0; + +MLT_7.226.0 { + global: + mlt_producer_set_timecode; + mlt_producer_get_timecode; +} MLT_7.22.0; diff --git a/src/framework/mlt_producer.c b/src/framework/mlt_producer.c index 904c9e02..fc9756c8 100644 --- a/src/framework/mlt_producer.c +++ b/src/framework/mlt_producer.c @@ -1284,6 +1284,81 @@ void mlt_producer_set_creation_time(mlt_producer self, int64_t creation_time) free(datestr); } +/** Get the timecode associated with the producer. + * + * \public \memberof mlt_producer_s + * \param self a producer + * \return The timecode for the given producer, in milliseconds. + */ +int64_t mlt_producer_get_timecode(mlt_producer self) +{ + mlt_producer producer = mlt_producer_cut_parent(self); + + char *str = mlt_properties_get(MLT_PRODUCER_PROPERTIES(producer), "timecode"); + if (str) { + int64_t ms; + char dummy; + int ret = sscanf(str, "%" SCNd64 "%c", &ms, &dummy); + if (ret != 1) + return -1; + return ms; + } + + // Check for a "time_reference" in the metadata, which is the timecode + // counted in samples. Convert that to milliseconds. This is an audio + // file, so just assume it's the first source. + str = mlt_properties_get(MLT_PRODUCER_PROPERTIES(producer), + "meta.attr.time_reference.markup"); + if (str) { + int64_t samples; + char dummy; + int ret = sscanf(str, "%" SCNd64 "%c", &samples, &dummy); + if (ret != 1) + return -1; + + str = mlt_properties_get(MLT_PRODUCER_PROPERTIES(producer), + "meta.media.0.codec.sample_rate"); + if (!str) + return -1; + int64_t sample_rate; + ret = sscanf(str, "%" SCNd64 "%c", &sample_rate, &dummy); + if (ret != 1) + return -1; + + return (samples * 1000) / sample_rate; + } + + // Check for a "timecode" in GoPro format, which is HH:MM:SS;FRAME. + str = mlt_properties_get(MLT_PRODUCER_PROPERTIES(producer), + "meta.attr.0.stream.timecode.markup"); + if (str) { + int hh, mm, ss, frame; + int ret = sscanf(str, "%02d:%02d:%02d;%02d", &hh, &mm, &ss, &frame); + if (ret != 4) + return -1; + return (frame * 1000 / mlt_producer_get_fps(producer)) + (ss + mm * 60 + hh * 3600) * 1000; + } + + return -1; +} + +/** Set the timecode for the producer + * + * This allows callers to override the timecode deceted by MLT for a producer. + * + * \public \memberof mlt_producer_s + * \praam self a producer + * \param timecode The timecode, in milliseconds, to set + */ + +void mlt_producer_set_timecode(mlt_producer self, int64_t timecode) +{ + char buf[32]; + mlt_producer parent = mlt_producer_cut_parent(self); + snprintf(buf, sizeof(buf), "%" PRId64, timecode); + mlt_properties_set(MLT_PRODUCER_PROPERTIES(parent), "timecode", buf); +} + /** Probe the producer to publish metadata properties. * * After this call the producer will publish meta.media properties diff --git a/src/framework/mlt_producer.h b/src/framework/mlt_producer.h index 9b7bcff7..a6c7acd6 100644 --- a/src/framework/mlt_producer.h +++ b/src/framework/mlt_producer.h @@ -144,6 +144,8 @@ extern int mlt_producer_optimise(mlt_producer self); extern void mlt_producer_close(mlt_producer self); int64_t mlt_producer_get_creation_time(mlt_producer self); void mlt_producer_set_creation_time(mlt_producer self, int64_t creation_time); +extern int64_t mlt_producer_get_timecode(mlt_producer self); +extern void mlt_producer_set_timecode(mlt_producer self, int64_t timecode); extern int mlt_producer_probe(mlt_producer self); #endif diff --git a/src/mlt++/MltProducer.cpp b/src/mlt++/MltProducer.cpp index a837194d..40f305ad 100644 --- a/src/mlt++/MltProducer.cpp +++ b/src/mlt++/MltProducer.cpp @@ -262,6 +262,17 @@ void Producer::set_creation_time(int64_t creation_time) mlt_producer_set_creation_time(get_producer(), creation_time); } +int64_t Producer::get_timecode() +{ + int64_t tc = mlt_producer_get_timecode(get_producer()); + return tc; +} + +void Producer::set_timecode(int64_t timecode) +{ + mlt_producer_set_timecode(get_producer(), timecode); +} + bool Producer::probe() { return mlt_producer_probe(get_producer()); diff --git a/src/mlt++/MltProducer.h b/src/mlt++/MltProducer.h index 7afefbc3..b1ef4d21 100644 --- a/src/mlt++/MltProducer.h +++ b/src/mlt++/MltProducer.h @@ -77,6 +77,8 @@ public: int clear(); int64_t get_creation_time(); void set_creation_time(int64_t creation_time); + int64_t get_timecode(); + void set_timecode(int64_t timecode); bool probe(); }; } // namespace Mlt diff --git a/src/mlt++/mlt++.vers b/src/mlt++/mlt++.vers index 1934decd..d9ff3764 100644 --- a/src/mlt++/mlt++.vers +++ b/src/mlt++/mlt++.vers @@ -710,5 +710,15 @@ MLT_7.14.0 { extern "C++" { "Mlt::Producer::probe()"; "Mlt::Chain::attach_normalizers()"; + "Mlt::Producer::get_timecode()"; + "Mlt::Producer::set_timecode(int64_t)"; }; } MLT_7.12.0; + +MLT_7.26.0 { + global: + extern "C++" { + "Mlt::Producer::get_timecode()"; + "Mlt::Producer::set_timecode(int64_t)"; + }; +} MLT_7.14.0; -- 2.45.2 |
From: Brian M. <bri...@ya...> - 2024-07-06 02:26:24
|
I guess this was answered on the frei0r mailing list. But you can see the list here: https://www.mltframework.org/plugins/PluginsTransitions/ On Thursday, July 4, 2024 at 11:25:34 AM CDT, Erik Beck <ba...@ta...> wrote: Hi all, What frei0r plugin types are usable in mlt? Just filters (one input, one output) like ffmpeg, or can mixers (two or three inputs, one output) be used as well? Thanks, Erik _______________________________________________ Mlt-devel mailing list Mlt...@li... https://lists.sourceforge.net/lists/listinfo/mlt-devel |
From: Erik B. <ba...@ta...> - 2024-07-04 16:25:17
|
Hi all, What frei0r plugin types are usable in mlt? Just filters (one input, one output) like ffmpeg, or can mixers (two or three inputs, one output) be used as well? Thanks, Erik |
From: Amit K. <ami...@gm...> - 2024-02-16 10:00:43
|
Hello, I need to compile MLT in Windows 11, using Visual Studio. Is there any resource guide available? The current link: https://www.mltframework.org/docs/windowsbuild/ does not help much. Regards, Amit. Y. Khobragade. Cell: +91-9820898484. |
From: Iza i T. <iza...@gm...> - 2023-11-29 17:43:54
|
Thanks for all your remarks. For some reason, I (falsely) assumed that all the consumers used the profile saved in my dv_custom file. After specifying the proper framerate in profile (in XML file), the audio played by the SDL consumer became correct. The only thing that seems weird to me, is the fact that the framerate is "guessed" by the first entry in the playlist (when no profile is provided). When it's an image, the framerate will be guessed to be 25, even when there are further videos in the same playlist, with framerate of 30. As for the docs, I'd love to contribute. (Although my time is rather limited: I either work on my videos, or on the docs, and neither of them is paid...) I was thinking about writing a comprehensive tutorial, targeted at melt users (not developers), but I still find my knowledge too lacking. Besides, I'd be able to teach others what I do with melt, and I suppose my usage of melt is also limited (I don't make any cinematic, very dynamic videos). wt., 28 lis 2023 o 22:26 Dan Dennedy <dde...@gm...> napisał(a): > > > On Tue, Nov 28, 2023 at 12:48 PM Iza i Tomek <iza...@gm...> wrote: > >> I use melt 7.4.0, which came with my Linux Mint. >> >> I'm not sure whether I found a bug, a feature ;-) but I found it >> very strange. >> >> I use MLT with XML (mlt) files, and some presents in dv_custom file. >> > > What exactly is "dv_custom" file? If presets, for what? If a "profile" in > the manner in which MLT uses that terminology, how are you supplying it? > > >> >> Let's assume I'd like to make a movie with an image and an audio. I >> have two separate files: one PNG, and one m4a (audio). Here's my XML >> file: >> >> <mlt> >> > > This XML is missing a <profile> element. > > >> <producer id="audio" resource="file.m4a" /> >> <producer id="img" resource="file.png" /> >> >> <playlist id="clip-video"> >> <entry producer="img" in="0" out="500" /> >> </playlist> >> >> <playlist id="clip-audio"> >> <entry producer="audio" in="10000" out="10500" /> >> > > These time values are frame counts. But actual time depends on the frame > rate in the consumer or profile. > > >> </playlist> >> >> <tractor id="track"> >> <multitrack> >> <track producer="clip-video" /> >> <track producer="clip-audio" /> >> </multitrack> >> </tractor> >> >> </mlt> >> >> It can be rendered to mp4 with the command: >> >> melt file.xml -consumer avformat:"video.mp4" acodec=aac vcodec=libx265 \ >> width=1280 height=720 frame_rate_num=30 frame_rate_den=1 >> frequency=48000 \ >> > > OK, here is your explicit frame rate: 30 fps. > > >> progressive=1 display_aspect_num=16 display_aspect_den=9 \ >> sample_aspect_num=1 sample_aspect_den=1 >> >> And the produced video.mp4 file is fine. >> >> When I use SDL consumer, though: >> >> melt file.xml >> > > You have not provided a profile or consumer frame rate properties. Thus, > melt tries to guess. But since none of your media has a frame rate (video > does), it falls back to using the 25 fps in the dv_pal profile. > > >> >> the audio is out-of-sync with the clip-audio specified in the XML file. >> >> > Be careful with the term "sync" as that implies the relative timing of > multiple things such as audio and video. How do you know there is a > synchronization problem between audio and a still image? Maybe you mean the > "timing" for the audio producer is incorrect. Remember, frame units depend > on frame rate. > > >> I have found a weird workaround for that problem, though. When I make >> a short video sequence from the PNG file: >> >> melt file.png out=30 -consumer avformat:"file.mp4" vcodec=libx265 \ >> width=1280 height=720 frame_rate_num=30 frame_rate_den=1 \ >> progressive=1 display_aspect_num=16 display_aspect_den=9 \ >> sample_aspect_num=1 sample_aspect_den=1 >> >> and use a single frame from this video in XML file, instead of PNG >> file producer: >> >> <mlt> >> <producer id="audio" resource="file.m4a" /> >> <producer id="frame-workaround" mlt_service="hold" resource="file.mp4" >> frame="1" /> >> >> <playlist id="clip-video"> >> <entry producer="frame-workaround" in="0" out="500" /> >> </playlist> >> >> <playlist id="clip-audio"> >> <entry producer="audio" in="10000" out="10500" /> >> </playlist> >> >> <tractor id="track"> >> <multitrack> >> <track producer="clip-video" /> >> <track producer="clip-audio" /> >> </multitrack> >> </tractor> >> >> </mlt> >> >> everything is fine in both rendered video.mp4, and in the SDL >> preview/consumer. >> >> Now, the melt command line utility has a video with a frame rate to guess > that the sdl(2) consumer should run at 30 fps and timing information in the > XML that uses frame values is based on 30 fps. > > >> Is it a problem with SDL consumer, or am I doing something wrong? >> > > Put a named "profile" attribute in the <mlt> element or place a <profile> > element as the first child of the <mlt> element. > I am sorry that our documentation is a little weak in this area by not > mentioning XML on the profiles page or profile on the XML page. However, if > you use any tool that uses MLT and generates XML (including `melt -consumer > xml ...` or Shotcut), then you would have seen that. > |
From: Dan D. <dde...@gm...> - 2023-11-28 21:27:02
|
On Tue, Nov 28, 2023 at 12:48 PM Iza i Tomek <iza...@gm...> wrote: > I use melt 7.4.0, which came with my Linux Mint. > > I'm not sure whether I found a bug, a feature ;-) but I found it > very strange. > > I use MLT with XML (mlt) files, and some presents in dv_custom file. > What exactly is "dv_custom" file? If presets, for what? If a "profile" in the manner in which MLT uses that terminology, how are you supplying it? > > Let's assume I'd like to make a movie with an image and an audio. I > have two separate files: one PNG, and one m4a (audio). Here's my XML > file: > > <mlt> > This XML is missing a <profile> element. > <producer id="audio" resource="file.m4a" /> > <producer id="img" resource="file.png" /> > > <playlist id="clip-video"> > <entry producer="img" in="0" out="500" /> > </playlist> > > <playlist id="clip-audio"> > <entry producer="audio" in="10000" out="10500" /> > These time values are frame counts. But actual time depends on the frame rate in the consumer or profile. > </playlist> > > <tractor id="track"> > <multitrack> > <track producer="clip-video" /> > <track producer="clip-audio" /> > </multitrack> > </tractor> > > </mlt> > > It can be rendered to mp4 with the command: > > melt file.xml -consumer avformat:"video.mp4" acodec=aac vcodec=libx265 \ > width=1280 height=720 frame_rate_num=30 frame_rate_den=1 frequency=48000 > \ > OK, here is your explicit frame rate: 30 fps. > progressive=1 display_aspect_num=16 display_aspect_den=9 \ > sample_aspect_num=1 sample_aspect_den=1 > > And the produced video.mp4 file is fine. > > When I use SDL consumer, though: > > melt file.xml > You have not provided a profile or consumer frame rate properties. Thus, melt tries to guess. But since none of your media has a frame rate (video does), it falls back to using the 25 fps in the dv_pal profile. > > the audio is out-of-sync with the clip-audio specified in the XML file. > > Be careful with the term "sync" as that implies the relative timing of multiple things such as audio and video. How do you know there is a synchronization problem between audio and a still image? Maybe you mean the "timing" for the audio producer is incorrect. Remember, frame units depend on frame rate. > I have found a weird workaround for that problem, though. When I make > a short video sequence from the PNG file: > > melt file.png out=30 -consumer avformat:"file.mp4" vcodec=libx265 \ > width=1280 height=720 frame_rate_num=30 frame_rate_den=1 \ > progressive=1 display_aspect_num=16 display_aspect_den=9 \ > sample_aspect_num=1 sample_aspect_den=1 > > and use a single frame from this video in XML file, instead of PNG > file producer: > > <mlt> > <producer id="audio" resource="file.m4a" /> > <producer id="frame-workaround" mlt_service="hold" resource="file.mp4" > frame="1" /> > > <playlist id="clip-video"> > <entry producer="frame-workaround" in="0" out="500" /> > </playlist> > > <playlist id="clip-audio"> > <entry producer="audio" in="10000" out="10500" /> > </playlist> > > <tractor id="track"> > <multitrack> > <track producer="clip-video" /> > <track producer="clip-audio" /> > </multitrack> > </tractor> > > </mlt> > > everything is fine in both rendered video.mp4, and in the SDL > preview/consumer. > > Now, the melt command line utility has a video with a frame rate to guess that the sdl(2) consumer should run at 30 fps and timing information in the XML that uses frame values is based on 30 fps. > Is it a problem with SDL consumer, or am I doing something wrong? > Put a named "profile" attribute in the <mlt> element or place a <profile> element as the first child of the <mlt> element. I am sorry that our documentation is a little weak in this area by not mentioning XML on the profiles page or profile on the XML page. However, if you use any tool that uses MLT and generates XML (including `melt -consumer xml ...` or Shotcut), then you would have seen that. |
From: Iza i T. <iza...@gm...> - 2023-11-28 20:01:40
|
I use melt 7.4.0, which came with my Linux Mint. I'm not sure whether I found a bug, a feature ;-) but I found it very strange. I use MLT with XML (mlt) files, and some presents in dv_custom file. Let's assume I'd like to make a movie with an image and an audio. I have two separate files: one PNG, and one m4a (audio). Here's my XML file: <mlt> <producer id="audio" resource="file.m4a" /> <producer id="img" resource="file.png" /> <playlist id="clip-video"> <entry producer="img" in="0" out="500" /> </playlist> <playlist id="clip-audio"> <entry producer="audio" in="10000" out="10500" /> </playlist> <tractor id="track"> <multitrack> <track producer="clip-video" /> <track producer="clip-audio" /> </multitrack> </tractor> </mlt> It can be rendered to mp4 with the command: melt file.xml -consumer avformat:"video.mp4" acodec=aac vcodec=libx265 \ width=1280 height=720 frame_rate_num=30 frame_rate_den=1 frequency=48000 \ progressive=1 display_aspect_num=16 display_aspect_den=9 \ sample_aspect_num=1 sample_aspect_den=1 And the produced video.mp4 file is fine. When I use SDL consumer, though: melt file.xml the audio is out-of-sync with the clip-audio specified in the XML file. I have found a weird workaround for that problem, though. When I make a short video sequence from the PNG file: melt file.png out=30 -consumer avformat:"file.mp4" vcodec=libx265 \ width=1280 height=720 frame_rate_num=30 frame_rate_den=1 \ progressive=1 display_aspect_num=16 display_aspect_den=9 \ sample_aspect_num=1 sample_aspect_den=1 and use a single frame from this video in XML file, instead of PNG file producer: <mlt> <producer id="audio" resource="file.m4a" /> <producer id="frame-workaround" mlt_service="hold" resource="file.mp4" frame="1" /> <playlist id="clip-video"> <entry producer="frame-workaround" in="0" out="500" /> </playlist> <playlist id="clip-audio"> <entry producer="audio" in="10000" out="10500" /> </playlist> <tractor id="track"> <multitrack> <track producer="clip-video" /> <track producer="clip-audio" /> </multitrack> </tractor> </mlt> everything is fine in both rendered video.mp4, and in the SDL preview/consumer. Is it a problem with SDL consumer, or am I doing something wrong? |
From: Dan D. <dde...@gm...> - 2023-11-22 15:28:59
|
On Wed, Nov 22, 2023 at 7:45 AM Paweł Mruzek <soc...@gm...> wrote: > Hello, > I was wondering, if it's possible to perform video > editing programmatically with mlt++ without the need for tools > like xvfb-run to run the app? I believe melt can be built without the qt > plugins, that seem to be causing the need for x11, but I still > Only certain modules like Qt or old WebVfx require X11. > can't seem to understand if it's possible to get the c++ library to work > without such tools. I tried to build it with cmake to play around, but I'm > also stuck on building the `producer_avformat.c.o`: > > ``` > [ 50%] Building C object > src/modules/avformat/CMakeFiles/mltavformat.dir/producer_avformat.c.o > > mlt/src/modules/avformat/producer_avformat.c:1523:42: error: ‘struct > producer_avformat_s’ has no member named ‘vfilter_graph’ > Do not use git master of FFmpeg as they may have broken their API since the last release. We have daily tests that build with versions 6.0 and 6.1. > 1523 | avfilter_graph_free(&self->vfilter_graph); > > mlt/src/modules/avformat/producer_avformat.c:1524:21: error: ‘struct > producer_avformat_s’ has no member named ‘vfilter_out’ > 1524 | self->vfilter_out = NULL; > ``` > It might be due to some unmet dependencies, but I felt, that I still > needed to ask this question if it's possible before going further. > > Sorry if my question is not asked well, and thanks for any help in > advance. > > > _______________________________________________ > Mlt-devel mailing list > Mlt...@li... > https://lists.sourceforge.net/lists/listinfo/mlt-devel > |
From: Paweł M. <soc...@gm...> - 2023-11-22 12:45:06
|
Hello, I was wondering, if it's possible to perform video editing programmatically with mlt++ without the need for tools like xvfb-run to run the app? I believe melt can be built without the qt plugins, that seem to be causing the need for x11, but I still can't seem to understand if it's possible to get the c++ library to work without such tools. I tried to build it with cmake to play around, but I'm also stuck on building the `producer_avformat.c.o`: ``` [ 50%] Building C object src/modules/avformat/CMakeFiles/mltavformat.dir/producer_avformat.c.o mlt/src/modules/avformat/producer_avformat.c:1523:42: error: ‘struct producer_avformat_s’ has no member named ‘vfilter_graph’ 1523 | avfilter_graph_free(&self->vfilter_graph); mlt/src/modules/avformat/producer_avformat.c:1524:21: error: ‘struct producer_avformat_s’ has no member named ‘vfilter_out’ 1524 | self->vfilter_out = NULL; ``` It might be due to some unmet dependencies, but I felt, that I still needed to ask this question if it's possible before going further. Sorry if my question is not asked well, and thanks for any help in advance. |
From: Thomas E. <ei...@me...> - 2023-10-31 13:37:20
|
Hi all, i trying to generate an MLT XML File, which contains a https://www.mltframework.org/plugins/ProducerQtext producer element. My tries didn't show any output. Has anyone a small example of such a file, this would be very helpful to me, thanks, Thomas |