
Recherche avancée
Médias (33)
-
Stereo master soundtrack
17 octobre 2011, par
Mis à jour : Octobre 2011
Langue : English
Type : Audio
-
#7 Ambience
16 octobre 2011, par
Mis à jour : Juin 2015
Langue : English
Type : Audio
-
#6 Teaser Music
16 octobre 2011, par
Mis à jour : Février 2013
Langue : English
Type : Audio
-
#5 End Title
16 octobre 2011, par
Mis à jour : Février 2013
Langue : English
Type : Audio
-
#3 The Safest Place
16 octobre 2011, par
Mis à jour : Février 2013
Langue : English
Type : Audio
-
#4 Emo Creates
15 octobre 2011, par
Mis à jour : Février 2013
Langue : English
Type : Audio
Autres articles (98)
-
MediaSPIP 0.1 Beta version
25 avril 2011, parMediaSPIP 0.1 beta is the first version of MediaSPIP proclaimed as "usable".
The zip file provided here only contains the sources of MediaSPIP in its standalone version.
To get a working installation, you must manually install all-software dependencies on the server.
If you want to use this archive for an installation in "farm mode", you will also need to proceed to other manual (...) -
Multilang : améliorer l’interface pour les blocs multilingues
18 février 2011, parMultilang est un plugin supplémentaire qui n’est pas activé par défaut lors de l’initialisation de MediaSPIP.
Après son activation, une préconfiguration est mise en place automatiquement par MediaSPIP init permettant à la nouvelle fonctionnalité d’être automatiquement opérationnelle. Il n’est donc pas obligatoire de passer par une étape de configuration pour cela. -
HTML5 audio and video support
13 avril 2011, parMediaSPIP uses HTML5 video and audio tags to play multimedia files, taking advantage of the latest W3C innovations supported by modern browsers.
The MediaSPIP player used has been created specifically for MediaSPIP and can be easily adapted to fit in with a specific theme.
For older browsers the Flowplayer flash fallback is used.
MediaSPIP allows for media playback on major mobile platforms with the above (...)
Sur d’autres sites (8782)
-
How to extract time-accurate video segments with ffmpeg ?
25 mai 2016, par Jim MillerThis is not a particularly new question area around here, but I’ve tried what’s been suggested there without much luck. So, my story :
I’ve got a hunk of 15 seconds of straight-from-the-camera.mov video out of which I want to extract a specific chunk, which I can identify by start time and stop time, in seconds. I started by trying to do what I’ll call a "copy extraction" : to get seconds 9 to 12,
ffmpeg -i test.mov -vcodec copy -acodec copy -ss 9 -to 12 test-copy.mov
This was a not-bad start, but there are some black frames at the beginning and end of the clip, which I can’t have — it has to be a clean edit from the original. So, I tried recoding the original into a new, trimmed clip :
ffmpeg -i test.mov -ss 00:00:09 -t 00:00:03 test-out.mov
This is better, but not quite : There are no longer any black frames at the beginning of the clip, but they’re still there at the end.
After some more browsing and reading, I then suspected that the problem is that ffmpeg is having trouble finding the proper points because of a lack of keyframes in the original video. So I recoded the original video to (presumably) add keyframes, in a couple of different ways. Since I want to be able to pick video at boundaries of a second ("from 9 seconds to 12 seconds"), I tried, copying various suggestions around the web,
ffmpeg -i test.mov -force_key_frames "expr:gte(t, n_forced)" test-forced.mp4
and
ffmpeg -i test.mov -g 1 test-g-inserted.mp4
(I built these as mp4’s based on some comments about an mp4 container being needed to support the keyframe search, but I’m honestly just hacking here.) I then tried the extraction as before, but on these new videos that presumably now have keyframes in them. No luck — both seem to be about the same ; the start is OK but there are still black frames at the end. (FWIW, both test-forced.mp4 and test-g-inserted.mp4 also have trailing black frames.)
So : I’m still stuck, and would like to not be. Any insights out there as to what I’m doing wrong ? I feel like I’m close, but I really need to get rid of those trailing black frames....
-
avcodec/nvdec : Add support for decoding HEVC 4:4:4 content
7 octobre 2018, par Philip Langdaleavcodec/nvdec : Add support for decoding HEVC 4:4:4 content
The latest generation video decoder on the Turing chips supports
decoding HEVC 4:4:4. Supporting this is relatively straight-forward ;
we need to account for the different chroma format and pick the
right output and sw formats at the right times.There was one bug which was the hard-coded assumption that the
first chroma plane would be half-height ; I fixed this to use the
actual shift value on the plane.We also need to pass the SPS and PPS range extension flags.
-
How to fix av_interleaved_write_frame() broken pipe error in php
31 mars, par Adekunle AdeyeyeI have an issue using ffmpeg to stream audio and parse to google cloud speech to text in PHP.


It returns this output.
I have tried delaying some part of the script, that did not solve it.
I have also checked for similar questions. however, they are mostly in python and none of the solutions actually work for this.


built with gcc 8 (GCC)
 cpudetect
 libavutil 56. 31.100 / 56. 31.100
 libavcodec 58. 54.100 / 58. 54.100
 libavformat 58. 29.100 / 58. 29.100
 libavdevice 58. 8.100 / 58. 8.100
 libavfilter 7. 57.100 / 7. 57.100
 libavresample 4. 0. 0 / 4. 0. 0
 libswscale 5. 5.100 / 5. 5.100
 libswresample 3. 5.100 / 3. 5.100
 libpostproc 55. 5.100 / 55. 5.100
Input #0, mp3, from 'https://npr-ice.streamguys1.com/live.mp3':
 Metadata:
 icy-br : 96
 icy-description : NPR Program Stream
 icy-genre : News and Talk
 icy-name : NPR Program Stream
 icy-pub : 0
 StreamTitle :
 Duration: N/A, start: 0.000000, bitrate: 96 kb/s
 Stream #0:0: Audio: mp3, 32000 Hz, stereo, fltp, 96 kb/s
Stream mapping:
 Stream #0:0 -> #0:0 (mp3 (mp3float) -> pcm_s16le (native))
Press [q] to stop, [?] for help
Output #0, s16le, to 'pipe:':
 Metadata:
 icy-br : 96
 icy-description : NPR Program Stream
 icy-genre : News and Talk
 icy-name : NPR Program Stream
 icy-pub : 0
 StreamTitle :
 encoder : Lavf58.29.100
 Stream #0:0: Audio: pcm_s16le, 16000 Hz, mono, s16, 256 kb/s
 Metadata:
 encoder : Lavc58.54.100 pcm_s16le
**av_interleaved_write_frame(): Broken pipe** 256.0kbits/s speed=1.02x
**Error writing trailer of pipe:: Broken pipe**
size= 54kB time=00:00:01.76 bitrate= 250.8kbits/s speed=0.465x
video:0kB audio:55kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown
Conversion failed!



this is my PHP code


require_once 'vendor/autoload.php';
 
 $projectId = "xxx-45512";
 putenv('GOOGLE_APPLICATION_CREDENTIALS=' . __DIR__ . '/xxx-45512-be3eb805f1d7.json');
 
 // Database connection
 $pdo = new PDO('mysql:host=localhost;dbname=', '', '');
 $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
 
 $url = "https://npr-ice.streamguys1.com/live.mp3";
 
 $ffmpegCmd = "ffmpeg -re -i $url -acodec pcm_s16le -ac 1 -ar 16000 -f s16le -";
 
 $fp = popen($ffmpegCmd, "r");
 if (!$fp) {
 die("Failed to open FFmpeg stream.");
 }
 sleep(5);

 try {
 $client = new SpeechClient(['transport' => 'grpc', 'credentials' => json_decode(file_get_contents(getenv('GOOGLE_APPLICATION_CREDENTIALS')), true)]);
 } catch (Exception $e) {
 echo 'Error: ' . $e->getMessage(); 
 exit;
 }
 
 $recognitionConfig = new RecognitionConfig([
 'auto_decoding_config' => new AutoDetectDecodingConfig(),
 'language_codes' => ['en-US'],
 'model' => 'long',
 ]);
 
 $streamingConfig = new StreamingRecognitionConfig([
 'config' => $recognitionConfig,
 ]);
 
 $configRequest = new StreamingRecognizeRequest([
 'recognizer' => "projects/$projectId/locations/global/recognizers/_",
 'streaming_config' => $streamingConfig,
 ]);
 
 
 function streamAudio($fp)
 {
 while (!feof($fp)) {
 yield fread($fp, 4096);
 }
 }
 
 $responses = $client->streamingRecognize([
 'requests' => (function () use ($configRequest, $fp) {
 yield $configRequest; // Send initial config
 foreach (streamAudio($fp) as $audioChunk) {
 yield new StreamingRecognizeRequest(['audio' => $audioChunk]);
 }
 })()]
 );
 
 // $responses = $speechClient->streamingRecognize();
 // $responses->writeAll([$request,]);
 
 foreach ($responses as $response) {
 foreach ($response->getResults() as $result) {
 $transcript = $result->getAlternatives()[0]->getTranscript();
 // echo "Transcript: $transcript\n";
 
 // Insert into the database
 $stmt = $pdo->prepare("INSERT INTO transcriptions (transcript) VALUES (:transcript)");
 $stmt->execute(['transcript' => $transcript]);
 }
 }
 
 
 pclose($fp);
 $client->close();



I'm not sure what the issue is at this time.


UPDATE


I've done some more debugging and i have gotten the error to clear and to stream actually starts.
However, I expect the audio to transcribe and update my database but instead I get this error when i close the stream




this is my updated code


$handle = popen($ffmpegCommand, "r");

 try {
 $client = new SpeechClient(['transport' => 'grpc', 'credentials' => json_decode(file_get_contents(getenv('GOOGLE_APPLICATION_CREDENTIALS')), true)]);
 } catch (Exception $e) {
 echo 'Error: ' . $e->getMessage(); 
 exit;
 }
 
 try {
 $recognitionConfig = (new RecognitionConfig())
 ->setAutoDecodingConfig(new AutoDetectDecodingConfig())
 ->setLanguageCodes(['en-US'], ['en-UK'])
 ->setModel('long');
 } catch (Exception $e) {
 echo 'Error: ' . $e->getMessage(); 
 exit;
 }
 
 try {
 $streamConfig = (new StreamingRecognitionConfig())
 ->setConfig($recognitionConfig);
 } catch (Exception $e) {
 echo 'Error: ' . $e->getMessage();
 exit;
 }
 try {
 $configRequest = (new StreamingRecognizeRequest())
 ->setRecognizer("projects/$projectId/locations/global/recognizers/_")
 ->setStreamingConfig($streamConfig);
 } catch (Exception $e) {
 echo 'Error: ' . $e->getMessage(); 
 exit;
 }
 
 $stream = $client->streamingRecognize();
 $stream->write($configRequest);
 
 mysqli_query($conn, "INSERT INTO transcriptions (transcript) VALUES ('bef')");
 
 while (!feof($handle)) {
 $chunk = fread($handle, 25600);
 // printf('chunk: ' . $chunk);
 if ($chunk !== false) {
 try {
 $request = (new StreamingRecognizeRequest())
 ->setAudio($chunk);
 $stream->write($request);
 } catch (Exception $e) {
 printf('Errorc: ' . $e->getMessage());
 }
 }
 }
 
 
 $insr = json_encode($stream);
 mysqli_query($conn, "INSERT INTO transcriptions (transcript) VALUES ('$insr')");
 
 foreach ($stream->read() as $response) {
 mysqli_query($conn, "INSERT INTO transcriptions (transcript) VALUES ('loop1')");
 foreach ($response->getResults() as $result) {
 mysqli_query($conn, "INSERT INTO transcriptions (transcript) VALUES ('loop2')");
 foreach ($result->getAlternatives() as $alternative) {
 $trans = $alternative->getTranscript();
 mysqli_query($conn, "INSERT INTO transcriptions (transcript) VALUES ('$trans')");
 }
 }
 }
 
 pclose($handle);
 $stream->close();
 $client->close();```