MP3 bestanden samenvoegen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

.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 »

Medior/Senior Front-end Developers gezocht (Utrech

Functie Het team bestaat uit 10+ gespecialiseerde (veel senior) front-end ontwikkelaars en ontwerpers die werken aan projecten voor klanten van verschillende groottes (kan twee jaar bezig zijn met 1 klant). Je helpt klanten met ingewikkelde front-end vraagstukken, hierbij kun je denken aan: UX/UI design, CI/CD, architectuur en integratie met back-end systemen. De werkzaamheden verricht je op locatie bij de klant, dit is vaak in de Randstad. De organisatiestructuur is plat en er heerst een informele sfeer, zo kun je met vragen dus terecht bij de directie. Er wordt veel nadruk gelegd op het bevorderen van persoonlijke ontwikkeling door middel van

Bekijk vacature »

Senior java ontwikkelaar integratie

Functieomschrijving Voor de gemeente Rotterdam zijn wij op zoek naar een senior java ontwikkelaar integratie. Taken Binnen een zelfsturend Scrumteam voer je geheel zelfstanding je opdrachten uit en levert het eindresultaat op aan het Integratieteam. Jij voelt je net als alle teamleden verantwoordelijk voor alle aspecten, vanaf de vraag tot en met de oplevering in productie. Je bent kritisch, je helpt de klant om zijn wensen helder te krijgen, je schrijft zelfstandig clean code die van hoge kwaliteit is, met bijbehorende unit- en integratietesten, je ondersteunt zo nodig bij deployments naar productie. Het Integratieteam bouwt componenten (Endpoints) op de ESB.

Bekijk vacature »

Software Developer Mendix / Maatschappelijk Betrok

Dit ga je doen Het bouwen van de Mendix applicaties in samenwerking met jouw team of zelfstandig; Werken met Scrum methodiek; Ontwikkelen van vooruitstrevende oplossingen; Meedenken over nieuwe applicaties en ontwikkelingen; On the job eigen maken van de Mendix omgeving. Hier ga je werken Deze dynamische en snelgroeiende organisatie begeeft zich in de recyclingbranche. Zij nemen op duurzame en efficiënte manier de recycling op zich. Vanwege hun snelle groei zijn zij op zoek naar een young professional die zich graag wilt ontwikkelen als Mendix Developer. Je komt te werken binnen een IT team van +/- 15 medewerkers. Het huidige ‘vaste’

Bekijk vacature »

Team Lead Java Developer

Functie Wat ga je doen als Java developer? Als Team Lead Java Developer draag een grote verantwoordelijk je stuurt ontwikkelaars aan en staat dagelijks in contact met jou ICT Manager. De team Bestaat uit front-end en backend systemen. Je ben in staat op hoog niveau de technische vak te bepalen en ook te bewaren. Je dag zie er als volgt uit, ontwikkelen van nieuwe en bestaande applicaties, het uitvoeren van processen en analyses en het beschrijven van functioneel ontwerpen. Ook zal samen met jouw Tester applicaties gaan testen door middel van peer reviews en het leveren van support aan gebruikers

Bekijk vacature »

.NET developer

Wat ga je doen als Full stack .NET developer Microsoft 365? Je stelt je op als sparringpartner voor het team en PO over toekomstige functionaliteiten, architectuur en mogelijke nieuwe producten. Je bent mede-verantwoordelijk voor het vertalen en omzetten van een user story in een passend technisch design. Je implementeert functionaliteiten op basis van een technisch design en user story. Je bent mede-verantwoordelijk voor het beheer van Azure DevOps, waaronder het beheer van GIT, Build Pipelines, Release Pipelines en geautomatiseerde testen. Hier herken jij jezelf in Hbo werk- en denkniveau of hoger aangevuld met relevante certificeringen en/of cursussen; Minimaal 3 jaar

Bekijk vacature »

C#.NET developer

Functie Het development team bestaat momenteel uit vijf backend C#/.NET ontwikkelaars. Op dit moment zit één ontwikkelaar dedicated op de mobiele applicatie. Als team werk je samen aan het zelf ontwikkelde software platform. Dit bestaat uit zowel apps als websites. Om het systeem door meer dan honderdduizenden gebruikers wordt gebruikt is het bijna vanzelfsprekend dat de kwaliteit van het product hoog moet liggen. Het systeem bestaat uit drie projecten. Je werkt dus aan deze drie projecten waarbij de focus op z’n tijd verschuift. De technieken die worden toegepast zijn o.a. .NET Core, Xamarin, C# en MVC. Je zal dus met

Bekijk vacature »

Frontend Developer - Leeuwarden

Als Frontend Developer bouw jij mee aan het onderwijs van de toekomst! In een scrum team werken met jonge en enthousiaste collega’s, moderne technieken, ruimte voor eigen ontwikkeling en op een proactieve wijze kunnen meewerken aan innovatie binnen het onderwijs. Magister is het state-of-the-art softwarepakket dat scholen in het voortgezet onderwijs op alle fronten ontzorgt. Van leerlingenadministratie tot het ondersteunen van individuele leerlijnen, van toegang tot digitaal lesmateriaal tot het plannen van het lesrooster. In de Magister app bedient Magister ruim 2,5 miljoen gebruikers waarvan, dagelijks meer dan 600.000 unieke. Hiermee is Magister de absolute marktleider in onderwijsland. Wat vragen

Bekijk vacature »

Ervaren C#.NET developer

Functieomschrijving We zijn op zoek naar een ervaren C#.NET programmeur voor een moderne werkgever in de regio Prinsenbeek. Als programmeur zal je bezig zijn met het ontwikkelen van op maat gemaakte webapplicaties voor verschillende klanten, waarbij je ervoor zorgt dat complexe processen zo goed mogelijk worden ondersteund. Je takenpakket omvat onder andere: Werken met databases en dataopslagoplossingen, implementeren van beveiligingsoplossingen en het waarborgen van de beveiliging van applicaties en gegevens, evenals het schrijven van technische documentatie en gebruikershandleidingen. Het ontwikkelen en onderhouden van C#.NET-applicaties. Bijdragen aan het ontwerp en de architectuur van softwaretoepassingen. Het schrijven van hoogwaardige en herbruikbare codes.

Bekijk vacature »

Senior PHP developer

Functie Jouw werkzaamheden zullen grotendeels bestaan uit het in teamverband ontwerpen, vernieuwen en door ontwikkelen van het systeem. Het is echt back-end werk (bijvoorbeeld het doorontwikkelen van een API) en dit moet je dan ook liggen. Ze zijn niet persee gebonden aan talen of tools maar gebruiken graag de technieken die het beste aansluiten op de gegeven oplossing. Voor nieuwe (versies van) componenten maken ze veelal gebruik van Go(lang). Bij aanpassingen aan bestaande onderdelen gebeurt dit in PHP en C++. Het team is heel divers, er hangt een relaxte sfeer en ze organiseren regelmatig leuke music nights, game nights e.d.

Bekijk vacature »

Front-end Developer (HTML/CSS, Angular/React/Vue,

Functie Je zal aan de slag gaan in een klein, hecht team met front-end development experts die de ambitie delen mooi werk te leveren. Samen met hen zal je werken aan het gebruiksvriendelijk en interactief maken van complexe webapplicaties, websites en mobile apps. Je levert klanten wat ze nodig hebben terwijl je actief aan jezelf blijft werken met de ondersteuning vanuit je werkplek. Talen als Javascript programmeer jij vloeiend en je hebt kennis van frameworks als React en Angular. Je zou je het liefst nog veel meer ontwikkelen in verschillende front-end talen. Deze kennis deel je graag met je collega’s,

Bekijk vacature »

Low Code Developer - Consultant

Functie omschrijving Wil jij fungeren als een spin in het web en samenwerken met klanten? Voor een leuke en interessante opdrachtgever in omgeving Leiden zijn wij op zoek naar een Low Code developer die zich bezig gaat houden met het optimaliseren van bedrijfsprocessen bij klanten en het leiden van projecten. Ben jij toe aan een nieuwe uitdaging en heb jij verstand van datamodellering en NO CODE Platformen? Lees dan snel verder! Bij deze rol horen de volgende werkzaamheden: Je gaat geen code kloppen maar bedenken hoe applicaties eruit moet komen te zien. Je gaat werken met een non code platform,

Bekijk vacature »

Dynamische Oracle/APEX Ontwikkelaar in de logistie

Bedrijfsomschrijving De organisatie in de regio Rotterdam is gespecialiseerd in het ontwikkelen van moderne webbased software voor de ERP branche. In totaal is er 20FTE aan specialisten actief binnen de organisatie. De ICT afdeling bestaat momenteel uit 15FTE. Ze groeien ontzettend hard en daarom zoeken zij een Oracle/APEX Developer die het reeds sterke team nog sterker komt maken. Hier werken ze op projectbasis voor verschillende grote organisaties in de logistieke sector. Het is een informele organisatie waarbinnen een fijne werksfeer heerst. Zoals aangegeven willen ze het team nog sterker maken en daarvoor zoeken ze bij voorkeur medior of senior Oracle/APEX

Bekijk vacature »

Technisch Applicatie ontwikkelaar

Functie omschrijving Ben jij op zoek naar een nieuwe uitdaging en zoek jij een informele werkgever waar je zelfstandig kunt werken binnen een leuk IT team, lees dan snel verder want wie weet zijn wij op zoek naar jou! In deze functie werk jij voornamelijk aan: Het onderhouden en ontwikkelen van de IT systemen; Het opzetten van Azure Cloud systemen, denk aan interfaces, hardware op de Cloud, webportalen of BI functies; Werk je aan scripts binnen verschillende software applicaties, denk aan ERP en CAD; Ontwikkel en implementeren je MS PowerApps en Power BI. Bedrijfsprofiel Je komt terecht bij een familiair

Bekijk vacature »

.NET developer

Functie As a .NET developer you work together in a multidisciplinary development team with 1-2 Senior .NET developers, two front-end developers, Data Scientists and one UX designer. As a team you work on developing a Cloud based application and making this application more stable. Unit testing will also become very important in your new position. Together with the Senior .NET developer you will be responsible for developing the API. You work with a lot of data and occasionally there will also be data issues and some queries will have to be run. This means that you will work a lot

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

06/12/2023 18:54:55
 
- 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.