MP3 bestanden samenvoegen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Mendix Developer

Functie Wat ga je doen als Mendix Developer? We leven in een wereld die snel ontwikkelt en veranderd, ook nemen bedrijfsbelangen toe en blijken risico’s moeilijker in te schatten, daarom wij op zoek naar Junior, Medior en Senior Developers die bedrijven kunnen helpen met hun screeningproces en zorgen dat deze efficiënt en 100 procent AVG compliant is. Het concept achter Mendix is duidelijk. De klant heeft een vraag/probleem. Dit kunnen we door middel van slimme software oplossen. In plaats van te werken met de nieuwste technieken en tools, wordt er gekozen voor het implementeren en maken van software dat op

Bekijk vacature »

Machine Software Developer

Bij een bedrijf in de machinebouw, regio Roosendaal, zijn we op zoek naar een: Machine Software Developer Waar ga je werken? Onze opdrachtgever is gespecialiseerd in de grondverzetmachines. Al meer dan 50 jaar leveren ze zowel nationaal als internationaal diverse machines. Het is een familiebedrijf met een informele werksfeer. Wat ga je doen? Als Machine Software Developer ben je verantwoordelijk voor: - Je ontwerpt, ontwikkelt en debugt software voor machinebesturingssystemen en complexe landbouwmachines; - Je stelt gebruikersinterfaces op (cabinedisplays); - Op termijn ga je softwareprojecten leiden voor specifieke machines; - Inclusief planning, documentatie en validatie; - Om specificaties te verifiëren

Bekijk vacature »

Teamlead PHP Developer

Functieomschrijving Voor een gewaardeerde werkgever in de buurt van Middelburg zijn wij op zoek naar een gemotiveerde teamlead PHP developer met affiniteit met Symfony/Laravel. Een enthousiast persoon die het ontwikkelteam komt versterken met het aanpakken van uitdagende projecten. Ben jij op zoek naar een uitdaging waar je de tijd en ruimte krijgt jezelf te ontwikkelen en je eigen IT-team aan te sturen? Lees dan snel verder! Die ga je doen: Bijdragen aan de implementatie van aanpassingen, verbeteringen en aanvullingen in de PHP based applicaties; Ontwikkeling en beheer van de serviceportal in Symfony en de webshops in de tweede versie van

Bekijk vacature »

Junior Front end developer Onderwijssoftware

Functie Als Junior front end developer kom jij terecht in een klein, maar hecht team bestaande uit 5 andere developers (waarvan 2 senioren, 2 medior en 1 junior). Met de gezamenlijke missie om “ieder kind te helpen met onze software” wordt er dagelijks gepassioneerd en hard gewerkt aan ons in-house ontwikkeld platform. Deze software is gebaseerd is op AI, machine Learning en wetenschappelijke inzichten. Dagelijks zul jij werken met onze high traffic webapplicatie. We hebben ruim 300.00 gebruikers en meer dan 2 miljard records waar je te maken mee krijgt! Verder zul jij je bezighouden met: – Het ontwikkelen van

Bekijk vacature »

Software developer

Functie Momenteel zijn ze op zoek naar een Software developer die, veelal fullstack, mee gaat werken aan de ontwikkeling van de producten en zo helpt aan de uitvoering van hun ontwikkelprojecten. Je komt te werken binnen hun development team bestaande uit 6 ontwikkelaars. Ze staan zowel open voor meer junior als medior/senior developers. Je kunt snel veel verantwoordelijkheid krijgen en doorgroeien binnen het bedrijf. Bovendien ben je betrokken bij het bepalen van de product roadmap en de inbreng van (nieuwe) technologieën. De applicaties waaraan je werk worden gebruikt op onderwijsinstellingen door heel Nederland. De tech-stack bestaat voornamelijk uit Laravel (PHP),

Bekijk vacature »

Front-end developer (Vue.js) gezocht!

Functie Als Front-end developer is het jouw doel om efficiënte en effectieve frontend code te ontwerpen, ontwikkelen en onderhouden die goed aansluit bij de functionele behoefte vanuit de klant. Je zorgt voor optimale SEO-resultaten, sitespeed en frontend security. You build it, you run it, you own it! Je maakt deel uit van een DevOps Scrum team en werkt samen met back-end developers, test-engineers, interaction designers en een projectmanager. Er zijn verschillende groepen Scrum teams. Een roadmap team is jouw ‘’thuisbasis’’, daar wordt gewerkt aan doorontwikkeling van bestaande omgevingen voor een aantal klanten. Hiernaast zijn er projectteams waar nieuwe omgevingen worden

Bekijk vacature »

Python developer Consultancy

Functie Als Python developer bij deze organisatie werk je voor verschillende klanten. Doordat de oprichter een groot netwerk heeft kun je zelf voorkeuren uitspreken in het type projecten dat je wilt gaan doen. Zo zijn er bijvoorbeeld langdurige of juist korte projecten, maar is ook het type klant, of project bespreekbaar. Werk jij bijvoorbeeld graag aan een nieuw, state-of-the-art web portaal of ben je liever betrokken bij een migratietraject van een bestaande applicatie? Wij gaan voor jou aan de slag! Eisen • Je bent een gedreven developer met sterke voorkeur voor Python • Je bent meer dan een codeklopper •

Bekijk vacature »

Medior Java developer (fullstack)

Wat je gaat doen: Of beter nog, wat wil jij doen? Binnen DPA GEOS zijn we dan ook op zoek naar enthousiaste Java developers om ons development team te versterken. Als Java developer werk je in Agile/Scrum teams bij onze klanten en daarbij kun je eventueel ook andere ontwikkelaars begeleiden in het softwareontwikkelproces. Verder draag je positief bij aan de teamgeest binnen een projectteam en je kijkt verder dan je eigen rol. Je gaat software maken voor verschillende opdrachtgevers in jouw regio. Je bent een professional die het IT-vak serieus neemt en kwaliteit levert. Je leert snel vanwege je diepgaande

Bekijk vacature »

Implementatie specialist

Standplaats: Honselersdijk Aantal uren: 32 – 40 uur Opleidingsniveau: HBO werk- en denkniveau Ben jij de implementatie expert die onze klanten helpt bij het integreren van de Greencommerce software? Ben jij daarnaast communicatief sterk, denk jij graag in verbeteringen en heb je ervaring met ICT? Lees dan snel verder! Bedrijfsinformatie Jem-id is een grote speler op het gebied van software ontwikkeling. Zo zijn wij continu bezig met het ontwikkelen van de meest innovatieve software voor de AGF- en sierteeltsector. We creëren oplossingen die er toe doen en verbinden klanten niet alleen op technisch vlak, maar zoeken ook de verbinding in

Bekijk vacature »

Senior Full Stack developer

Bedrijfsomschrijving tbd Functieomschrijving Full Stack Java Development bij Randstad Groep Nederland (HQ) Er is een vacature in het Corporate Client Solutions (CCS) team. Dit team is met een ander team net begonnen aan het project ‘Grip op Inhuur’. Het doel van dit project is de tevredenheid van onze leveranciers te verhogen en de efficiëntie van onze administratie te verbeteren. Onderdeel daarvan is een ‘Mijn-omgeving’ voor ZZP’ers en leveranciers. Naast dit nieuwe project werkt het team ook aan het onderhoud en verbeteren van een digitaal vacature management systeem waarmee dagelijks vele vacatures worden voorzien. Het team ontwikkelt zo veel mogelijk zelf

Bekijk vacature »

Lead Webdeveloper

As Lead Web Developer at KUBUS you are responsible for the implementation design of requirements and the software architecture of the web application and services of BIMcollab. In your role as lead developer you will naturally search for the optimum between the required implementation time, the performance of the application and a fast go-to-market of features, in line with our automated test and release train. Together with the other senior developers in your team you monitor the architecture of the application and you advise the product owner about necessary refactoring to improve the maintainability of the platform. Our development team

Bekijk vacature »

.NET developer WO niveau voor predictive software

Bedrijfsomschrijving Dit bedrijf uit Den Bosch is om precies te zijn 15 medewerkers groot en ze ontwikkelen (predicitve) planning software. Dit doen zij voor allerlei mooie en bekende organisaties (bierbrouwerijen, gemeentes, oliemaatschappijen en diverse multinationals). Wegens meer en grotere vraag vanuit de klanten komen er nu posities vrij voor onder andere een .NET developer. Het bedrijf is goed met openbaar vervoer te bereiken. Functieomschrijving Je komt hier te werken in een team van 3 .NET developers en bent betrokken bij het gehele ontwikkelproces. Dus van idee naar ontwerp en van ontwikkeling tot testen en implementatie. Bij voorkeur ben je niet

Bekijk vacature »

Lead javascript developer Node.js React

Functie Als fullstack JavaScript developer vind jij het uitdagend om op basis van concrete klantvragen nieuwe functionaliteiten te ontwikkelen. Bij voorkeur worden deze functionaliteiten op een bepaalde manier geprogrammeerd, zodat ze door meerdere klanten te gebruiken zijn. Je hebt dus vaak te maken met abstracte vraagstukken. Om dit te kunnen realiseren sta je nauw in contact met de product owner en/of klant. Je bent niet alleen onderdeel van het development team, maar hebt ook vaak contact met de product-owner en/of klanten om daardoor inzichten te verzamelen die leiden tot productverbeteringen. • Inzichten verzamelen bij de klant en/of product owner •

Bekijk vacature »

Traineeship Full Stack .NET Developer

Dit ga je doen Start op 7 augustus 2023 bij de Experis Academy en ontwikkel jezelf tot een gewilde Full Stack .NET Developer. Maar hoe ziet het traineeship eruit en wat kun je verwachten? Periode 1 De eerste 3 maanden volg je fulltime, vanuit huis, een op maat gemaakte training in teamverband. Je leert belangrijke theorie en krijgt kennis van de benodigde vaardigheden en competenties die nodig zijn om de IT-arbeidsmarkt te betreden. Zowel zelfstandig als in teamverband voer je praktijkopdrachten op het gebied van front- en backend development uit. Wat er per week op het programma staat kun je

Bekijk vacature »

Back-end Developer

Functieomschrijving Heb jij kort geleden jouw HBO ICT diploma in ontvangst mogen nemen? Of ben je toe aan een nieuwe stap? Voor een softwarebedrijf in regio Oosterhout zijn wij op zoek naar een back-end developer met kennis of ervaring met C# en SQL. Je draagt bij aan de implementatie van aanpassingen, verbeteringen en aanvullingen in de C# based applicaties; Je test de software en ontwikkelt deze door; Je brengt de aanpassingssuggesties van klanten in kaart, om ze vervolgens te analyseren en daarna te concluderen of de aanpassing een verbetering is; Je houdt je bezig met het ontwikkelen van nieuwe functionaliteiten;

Bekijk vacature »
Jolly Janssen

Jolly Janssen

08/11/2023 21:38:37
Quote Anchor link
Beste,

Ik heb online een stukje code gevonden

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
file_put_contents('combined.mp3',
    file_get_contents('file1.mp3') .
    file_get_contents('file2.mp3'));


Dit werkt, echter de bestandsnamen die ik wil gebruiken staan bij mij in een database.

Nu heb ik iets in elkaar gezet waar ik al van weet dat het niet gaat werken, maar wat is de oplossing?

Quote:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?PHP

    include("connect.php");

    file_put_contents('test.mp3',

    $query13 = "select * from nieuwsbulletin_items WHERE nieuwsbulletin = '1'";                                            
        if ($result13 = mysqli_query($con, $query13)) {                                                
            while ($row13 = $result13->fetch_assoc()) {


    
        file_get_contents(''.$row13["bestand"].'') .

    
    
        }
    
    }

    
    file_get_contents('6 Slot.mp3')
    
    );

    
?>
 
PHP hulp

PHP hulp

10/05/2024 13:14:50
 
- Ariën  -
Beheerder

- Ariën -

08/11/2023 21:52:03
Quote Anchor link
Ik heb nooit geweten dat je MP3's met file_put_contents() kon combineren. Ik dacht dat je te maken zou hebben met indexen, en checksums. :-)

Maar als de bestandsnamen in de database staan, dan kan je die toch in een variabele plaatsen?
Daarnaast is een while() loop niet nodig als je één record krijgt. En verder ga je ooit eens de mist in met je genummerde variabelen.

Het achterelkaar plakken van een MP3 heeft wel een nadeel. Het tijdspoor klopt dan niet.
Dus een nette manier is het niet. De beste oplossing is met ffmpeg:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
ffmpeg -i "bestand1.mp3" -i "bestand2.mp3" -i "bestand3.mp3" -filter_complex "concat=n=3:v=0:a=1" -y "uitvoer.mp3"

Dit commando heb ik uit ChatGPT, dus het is even proberen.
Gewijzigd op 08/11/2023 22:13:23 door - Ariën -
 
Jolly Janssen

Jolly Janssen

09/11/2023 09:09:34
Quote Anchor link
Hallo Arien,

Het stukje code dat ik gebruikte werkte gewoon goed.
De while is nodig omdat er meer resultaten zijn.

Met het stukje code van jou blijft mijn vraag dus het zelfde. Hoe krijg ik die resultaten op die plek.
Soms zijn het 6 bestanden, soms zijn het 4 bestanden.
 
- Ariën  -
Beheerder

- Ariën -

09/11/2023 09:10:40
Quote Anchor link
Waarom zou je geen ffmpeg gebruiken? Dan weet je dat je 100% goed zit. Met file_put_contents() zit je bij wijze van spreken als een holbewoner mp3's aan elkaar te knopen. Indexen kloppen niet meer, en de kans op corruptie is aanwezig.
Gewijzigd op 09/11/2023 09:14:23 door - Ariën -
 
E vH

E vH

09/11/2023 09:28:16
Quote Anchor link
Quote:
Nu heb ik iets in elkaar gezet waar ik al van weet dat het niet gaat werken, maar wat is de oplossing?


Maar wat is de vraagstelling?

Als ik even snel naar je eerste voorbeeld kijk en die vergelijk met je scriptje.. dan zou ik denken dat de werking hetzelfde zou zijn...

Het enige wat ik kan bedenken is dat de volgorde misschien niet klopt.. dan zou je wellicht je query moeten aanpassen?

Zoals ik al zei; wat is de vraagstelling. Wat gaat er goed/fout?
 
Jolly Janssen

Jolly Janssen

09/11/2023 09:29:45
Quote Anchor link
Beste,

De vraag blijft het zelfde;
Hoe krijg ik in de While het ffmpeg of file_get_contents
 
- Ariën  -
Beheerder

- Ariën -

09/11/2023 09:38:43
Quote Anchor link
Kijk eens naar de assignment operator van PHP:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
$text
= "Hallo ";
$text .= "daar!";

echo $text;
?>


Dus eerst moet je de bestandsnamen ophalen, en dus je $text uitbreiden, en die variabele verwerk je in je opdracht.

Dus bij ffmpeg moet je dus steeds dit uit je while() krijgen. Zoiets dus in het kort:

-i "$row['file']"
En dan de rest van het commando erachteraan, en die met system() uitvoeren. Let erop dat je ffmpeg wel geïnstalleerd hebt.
Gewijzigd op 09/11/2023 09:43:23 door - Ariën -
 
Jolly Janssen

Jolly Janssen

09/11/2023 09:44:42
Quote Anchor link
Beste,

Wij gebruiken gewoon hosting online, dus ik weet niet of daar ffmpeg op staat.
 
- Ariën  -
Beheerder

- Ariën -

09/11/2023 09:47:18
Quote Anchor link
Soms wel, soms niet.
Probeer het eens met system() of shell_exec(), en dan weet je het.
Gewijzigd op 09/11/2023 09:49:33 door - Ariën -
 
E vH

E vH

09/11/2023 09:52:41
Quote Anchor link
En als je nou zoiets probeert:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5

// handmatige test
$var  = file_put_contents('combined.mp3');
$var .= file_get_contents('file1.mp3');
$var .= file_get_contents('file2.mp3');


Krijg je dan het gewenste resultaat?

Dan zou je het ook zo kunnen opzetten:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
$var  = file_put_contents('combined.mp3');
// query
// start lus
$var .= file_get_contents($row['bestand']);
//einde lus
Gewijzigd op 09/11/2023 09:53:00 door E vH
 
- Ariën  -
Beheerder

- Ariën -

09/11/2023 10:15:12
Quote Anchor link
En die file_get_contents($row['bestand']) kan je dus ook vervangen door -i "$row['file']" als je het betrouwbare ffmpeg wilt gebruiken.
 
Jolly Janssen

Jolly Janssen

09/11/2023 10:21:25
Quote Anchor link
E vH als ik die van jou doe uitvoeren krijg ik 500 Foutmelding

en voer ik

shell_exec("ffmpeg -i '1 'Welkom.mp3' -i 2 Bericht 1.mp3' -filter_complex 'concat=n=3:v=0:a=1' -y 'uitvoer.mp3'");

uit dan krijg ik een witte pagina en geen mp3 file
 
- Ariën  -
Beheerder

- Ariën -

09/11/2023 10:32:49
Quote Anchor link
Ja, dat kan. Je voert een commando uit, en die heeft geen interactie met PHP.
Mogelijk is je mp3-file al gecreëerd in uitvoer.mp3?

Misschien is het handiger om output te tonen. Dan weet je in ieder geval wat er gebeurt.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
$output
= shell_exec("ffmpeg -i '1 'Welkom.mp3' -i 2 Bericht 1.mp3' -filter_complex 'concat=n=3:v=0:a=1' -y 'uitvoer.mp3'");
echo "Uitvoer:" .$output;
?>

Lees ook even wat shell_exec doet. Elke functie die je gegeven wordt is handig om even na te lezen.

Verder klopt E vh zijn code niet, daarmee probeer je een file_put_contents() aan een file_get_contents() te rijgen.
Gewijzigd op 09/11/2023 11:07:09 door - Ariën -
 
E vH

E vH

09/11/2023 10:37:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php

include("connect.php");

$query13 = "select * from nieuwsbulletin_items WHERE nieuwsbulletin = '1'";                                            
$var = '';
if ($result13 = mysqli_query($con, $query13)) {                                                
    while ($row13 = $result13->fetch_assoc()) {
        $var .= file_get_contents($row13["bestand"]);
    }
}

    $var .= file_get_contents('6 Slot.mp3');
    file_put_contents('test.mp3', $var);
    
?>


probeer bovenstaande even.

Zojuist getest met deze code:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
$var = file_get_contents('sample-3s.mp3');
$var .= file_get_contents('sample-6s.mp3');
$var .= file_get_contents('sample-9s.mp3');

file_put_contents('test.mp3', $var);


werkte prima
Gewijzigd op 09/11/2023 10:38:11 door E vH
 
- Ariën  -
Beheerder

- Ariën -

09/11/2023 10:52:09
Quote Anchor link
Neemt niet weg dat MP3's samenvoegen op deze manier geen goede oplossing is.
Ik durf niet te zeggen wat er gebeurt als je audio met meerdere bitrates gaat samenvoegen, en of alle players er wel goed mee om gaan. De tijdlijn is al sowieso brak met enkel de tijd van het eerste bestand.
 
Jolly Janssen

Jolly Janssen

09/11/2023 10:53:18
Quote Anchor link
E vH die van jou werkt nu goed.

- Ariën - bij output krijg ik niets te dien.
 
E vH

E vH

09/11/2023 10:53:58
Quote Anchor link
- Ariën - op 09/11/2023 10:52:09:
Neemt niet weg dat MP3's samenvoegen op deze manier geen goede oplossing is.
Ik durf niet te zeggen wat er gebeurt als je audio met meerdere bitrates gaat samenvoegen, en of alle players er wel goed mee om gaan. De tijdlijn is al sowieso brak met enkel de tijd van het eerste bestand.


Zover heb ik niet getest ;-)
 
- Ariën  -
Beheerder

- Ariën -

09/11/2023 10:54:11
Quote Anchor link
Jolly Janssen op 09/11/2023 10:53:18:
E vH die van jou werkt nu goed.

- Ariën - bij output krijg ik niets te dien.


Probeer het eens met iets simpels, zoals whoami als commando.
Zet ook je fout-afhandeling in PHP even op maximaal.

Edit: puntkomma miste i.p.v. een dubbele punt in mijn vingervlugheid.
Heb mijn bericht ge-edit.

Toevoeging op 09/11/2023 11:44:26:

Goed nieuws: Ik heb net succesvol met FFMPEG op mijn computer (WSL;Windows Subsystem for Linux) drie mp3's achter elkaar geplakt:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
ffmpeg -i "1.mp3" -i "2.mp3" -i "3.mp3" -filter_complex "concat=n=3:v=0:a=1" -y "uitvoer.mp3"


Het tijdspoor is hiermee ook prima.
Gewijzigd op 09/11/2023 11:45:24 door - Ariën -
 
Ad Fundum

Ad Fundum

10/11/2023 12:24:30
Quote Anchor link
Het is sowieso geen slim idee om audiobestanden aan elkaar te plakken in PHP en verwachten dat het blijft werken. Interessant genoeg bestaat MP3 uit frames waarmee het gesynchroniseerd kan worden. Maar er zijn ook frames met metadata. Het zou dus (korte) glitches kunnen geven in het geluid. Helemaal precies weten doe ik het niet omdat ik geen zin heb geld te betalen voor de officiële MP3 standaard, als je ook met Ogg Vorbis kunt werken.
Het is dan slimmer om Ariëns voorbeeld te gebruiken, daar wordt wel met allerlei frames rekening gehouden.

En het is een nogal domme techniek om met file_get_contents() eerst complete MP3-bestanden (in theorie GB's groot) helemaal in het RAM van je webserver te laden, om ze daarna alleen maar na elkaar naar de browser te sturen. Gebruik dan meteen readfile().
 
- Ariën  -
Beheerder

- Ariën -

10/11/2023 12:34:28
Quote Anchor link
Het is dan te hopen dat de hostingserver ffmpeg geïnstalleerd heeft.
Zo niet, kan je altijd een (managed) VPS nemen, of kijken of je een conversiedienst kan vinden met een API.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.