MP3 bestanden samenvoegen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

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 »

Fullstack developer

Zie jij mogelijkheden om onze tooling technisch te verbeteren en uit te bouwen? Over Jobmatix Jobmatix is een innovatieve en internationale speler op het gebied van jobmarketing. Onze jobmarketing automation tool helpt organisaties bij het aantrekken van nieuw talent door vacatures digitaal, geautomatiseerd en op een efficiënte manier te adverteren en onder de aandacht te brengen bij de doelgroep op 25+ jobboards. Volledig performance-based, waarbij organisaties betalen op basis van cost per click of cost per applicant. Maandelijks wordt onze jobmarketing automation tool al gebruikt door vele directe werkgevers, intermediairs en mediabureaus, waaronder Picnic, Rijkswaterstaat, AdverOnline, Schiphol, DPA, Teleperformance en

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 »

Embedded Software Developer

Functie omschrijving Voor een mooi softwarebedrijf in omgeving Moordrecht zijn wij op zoek naar een Embedded Software developer. Ben jij enthousiast en een echte team player? Lees dan snel of dit iets voor jou is! Binnen deze rol houdt jij je bezig met alle werkzaamheden die nodig zijn om een functionaliteit te bouwen. Denk aan ontwerpen, architectuur, programmeren en algoritmes. Je voert test en validatie werkzaamheden uit bij de implementatie bij de klant. Ben jij een Embedded Software Developer die affiniteit heeft met de allernieuwste technieken? Laat dan snel wat van je horen! Bedrijfsprofiel Onze opdrachtgever bestaat uit een groot

Bekijk vacature »

Applicatieontwikkelaar ABAP

Bedrijfsomschrijving Functieomschrijving De kandidaat zal worden ingezet binnen een van de DevOps teams binnen SCI (Service Centrum Inburgering) voor het ontwerpen en bouwen in SAP ABAP van de binnen SCI gebruikte informatiesystemen. Voornaamste voorkomende werkzaamheden zijn het aanpassen van en bouwen van nieuwe programmatuur in ABAP (Objects), waarbij ook gebruikt wordt gemaakt van DDD (Domain Driven Design) en het opstellen/aanpassen van Functionele/Technische ontwerpen. Daarnaast moeten ook formulieren met SAP Smartforms worden aangepast. Verder speelt de overgang naar SAP4Hana en SAP CPI. Vanwege het veelvuldig gebruik van SAP PO is kennis hiervan een pré. Achtergrond opdracht Momenteel werken meerdere DevOps teams

Bekijk vacature »

Senior Front-end Developer

Wordt jij de nieuwe Front end specialist / developer? Dan werk je dagelijks met collega’s aan de mooiste IT-projecten. Sogeti is een organisatie met een goede werksfeer en zo min mogelijk hiërarchische verhoudingen. Deze snelgroeiende groep collega’s krijgt energie van hun vak en dat merk je op de werkvloer. Onze klantenkring is groot en divers, dat vraagt om flexibiliteit van jou. Tegelijkertijd betekent dit dagelijks nieuwe dingen leren én dat geen werkdag hetzelfde is. Natuurlijk krijg jij de mogelijkheid je te certificeren. We organiseren regelmatig technische Meet-ups en doen we veel aan kennisdeling waarbij iedereen welkom is, zowel binnen als

Bekijk vacature »

Front-end Developer

Dit ga je doen Doorontwikkelen van software; Ontwikkelen en testen van nieuwe functionaliteiten; Implementaties van nieuwe functionaliteiten en updates; Verzorgen van technische migraties naar nieuwe frameworks; Verwerken van incidenten. Hier ga je werken Onze klant, gevestigd in de regio Amsterdam, draagt bij aan het verbeteren van de veiligheid en efficiëntie van de Nederlandse infrastructuur door het ontwikkelen van afgemeten software oplossingen. Zo passen zij location intelligence toe om onderhoud en reparaties efficiënt te laten verlopen. Verder zorgen deze systemen dat incidenten zo snel mogelijk worden opgelost. Als Front-end Developer ben jij samen met je team betrokken met het (door)ontwikkelen van

Bekijk vacature »

Junior .NET developer

Functie Als junior .NET developer begint jouw dag na een bak koffie met een stand up. De vorderingen worden tijdens de stand up besproken en de doelen worden opgesteld waar jullie als team in de volgende sprint naartoe gaan werken. Onze backend is geschreven in .NET Core en onze Front-end in Angular. Bij ons ga jij dan ook Fullstack aan de slag. Jij wordt hier opgeleid om zelfstandig te kunnen programmeren en applicaties te kunnen implementeren. Er wordt op projectbasis gewerkt, dit bied leuke uitdagingen omdat elke klant een andere visie heeft over de applicatie die wij maken. Je gaat

Bekijk vacature »

Senior Front-End Developer

As a Senior Front-end Developer you maintain the balance between creativity and functionality for our webshop, and you coach your fellow developers. How do I become a Senior Front-End Developer at Coolblue? As a Front-end Developer you work on the user-friendliness of our webshop for millions of customers. You enjoy working with the UX Designer to pick up stories. You get energy from coming up with creative solutions and are happy to present this within the team. You are also proud of your work and welcome all feedback. Would you also like to become a Senior Front-End Developer at Coolblue?

Bekijk vacature »

PHP Developer Symfony

Dit ga je doen Ontwikkelen van Product Informatie Management (PIM) systemen; Werken aan zowel grotere als kleine projecten voor toonaangevende klanten binnen o.a. de retail. Hier ga je werken Als PHP Developer kom je te werken binnen een vooruitstrevende organisatie die Product Informatie Management (PIM) systemen levert aan hun klanten. Hun klanten zijn toonaangevende bedrijven binnen o.a. de retail. De organisatie zit gevestigd in regio Zwolle en bestaat uit zo'n 35 medewerkers, waarvan 30 IT. Je komt te werken binnen één van de zelfsturende development teams welke ieder verantwoordelijk zijn voor hun 'eigen' klanten. Jouw team bestaat uit 6 backend

Bekijk vacature »

Traineeship Full Stack .NET Developer

Dit ga je doen Start op 7 augustus 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 hier

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 »

.NET developer

Functie Als .NET ontwikkelaar start jij in een multidisciplinair team met 7 ontwikkelaars. Dit team is verdeeld onder Front-end ontwikkelaars en backend developers. De backend developers werken voornamelijk aan desktop applicaties in combinatie met backend systemen. Hier ga jij dus ook mee aan de slag! Hierbij wordt voornamelijk gebruik gemaakt van C# .NET, WPF, UWP, XAML en MVVM. WPF, UWP, .NET Core, Azure Devops en Entity Framework. WPF en UWP worden dan ook voornamelijk gebruikt voor de user interface van de desktop applicatie. Het development team is dan ook erg gedreven m.b.t. het ontwikkelen van vooruitstrevende en innovatieve horeca automatiseringsoplossingen.

Bekijk vacature »

Software Developer (Junior functie)

Functieomschrijving Wij zijn op zoek naar een Software Developer! Sta jij in de startblokken om je carrière te beginnen en kan je niet wachten om toffe software te gaan ontwikkelen? Kortom, ben je onlangs afgestudeerd of sta je op het punt om je papiertje te behalen? Voor een IT dienstverlener dat gespecialiseerd is in Microsoft technologie zijn wij op zoek naar C#.NET Developers. Het bedrijf heeft meerdere klanten in regio Utrecht waar je permanent kan komen te werken. Kom je liever te werken bij een klein softwarebedrijf of bij een groot consultancy bureau? Dat is helemaal aan jou de keuze!

Bekijk vacature »

Full Stack .NET Developer

Dit ga je doen Als developer nieuwe gave features ontwikkelen; Werken met technieken als C#, Angular 12 en Javascript,; Maken van technische keuzes en beslissingen over de architectuur; Junior collega's coachen; Initiatief nemen voor nieuwe technische mogelijkheden; Je bent een belangrijke schakel - en vindt het leuk - om te schakelen met de business. Hier ga je werken In een team van 7 professionals ben je als Full Stack .NET Developer verantwoordelijk voor het ontwikkelen van applicaties voor het grootste inhouse product: een applicatie voor alles omtrent hypotheken. De programmeertaal die je hierbij beheerst is C#. Wil je van meerwaarde

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

08/12/2023 16:21:15
 
- 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.