
Recherche avancée
Médias (16)
-
#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
-
#2 Typewriter Dance
15 octobre 2011, par
Mis à jour : Février 2013
Langue : English
Type : Audio
Autres articles (104)
-
Qualité du média après traitement
21 juin 2013, parLe bon réglage du logiciel qui traite les média est important pour un équilibre entre les partis ( bande passante de l’hébergeur, qualité du média pour le rédacteur et le visiteur, accessibilité pour le visiteur ). Comment régler la qualité de son média ?
Plus la qualité du média est importante, plus la bande passante sera utilisée. Le visiteur avec une connexion internet à petit débit devra attendre plus longtemps. Inversement plus, la qualité du média est pauvre et donc le média devient dégradé voire (...) -
Participer à sa traduction
10 avril 2011Vous pouvez nous aider à améliorer les locutions utilisées dans le logiciel ou à traduire celui-ci dans n’importe qu’elle nouvelle langue permettant sa diffusion à de nouvelles communautés linguistiques.
Pour ce faire, on utilise l’interface de traduction de SPIP où l’ensemble des modules de langue de MediaSPIP sont à disposition. ll vous suffit de vous inscrire sur la liste de discussion des traducteurs pour demander plus d’informations.
Actuellement MediaSPIP n’est disponible qu’en français et (...) -
Les tâches Cron régulières de la ferme
1er décembre 2010, parLa gestion de la ferme passe par l’exécution à intervalle régulier de plusieurs tâches répétitives dites Cron.
Le super Cron (gestion_mutu_super_cron)
Cette tâche, planifiée chaque minute, a pour simple effet d’appeler le Cron de l’ensemble des instances de la mutualisation régulièrement. Couplée avec un Cron système sur le site central de la mutualisation, cela permet de simplement générer des visites régulières sur les différents sites et éviter que les tâches des sites peu visités soient trop (...)
Sur d’autres sites (11618)
-
FFMPEG - Edit Audio
9 avril 2015, par TonyLooking to edit a blip out of the beginning of a video/audio file... How can I use FFMPEG to only edit the first two seconds of the clip so that there’s no longer that blip in the audio ?
How do I ensure that all 7 audio tracks are affected by the audio filter and then how do I ensure that all 7 are also present in my output file in the same input specs ?
Complete output -
ffmpeg -i ~/Downloads/in.mov -vcodec copy -acodec pcm_s24le -q:a 0 -af "volume=enable='between(t,0,3)':volume=0" ~/Downloads/out2.mov
ffmpeg version 2.6.1 Copyright (c) 2000-2015 the FFmpeg developers
built with Apple LLVM version 6.0 (clang-600.0.57) (based on LLVM 3.5svn)
configuration: --prefix=/usr/local/Cellar/ffmpeg/2.6.1 --enable-shared --enable-pthreads --enable-gpl --enable-version3 --enable-hardcoded-tables --enable-avresample --cc=clang --host-cflags= --host-ldflags= --enable-libx264 --enable-libmp3lame --enable-libvo-aacenc --enable-libxvid --enable-vda
libavutil 54. 20.100 / 54. 20.100
libavcodec 56. 26.100 / 56. 26.100
libavformat 56. 25.101 / 56. 25.101
libavdevice 56. 4.100 / 56. 4.100
libavfilter 5. 11.102 / 5. 11.102
libavresample 2. 1. 0 / 2. 1. 0
libswscale 3. 1.101 / 3. 1.101
libswresample 1. 1.100 / 1. 1.100
libpostproc 53. 3.100 / 53. 3.100
Guessed Channel Layout for Input Stream #0.1 : mono
Guessed Channel Layout for Input Stream #0.2 : mono
Guessed Channel Layout for Input Stream #0.3 : mono
Guessed Channel Layout for Input Stream #0.4 : mono
Guessed Channel Layout for Input Stream #0.5 : mono
Guessed Channel Layout for Input Stream #0.6 : mono
Guessed Channel Layout for Input Stream #0.7 : stereo
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '~/Downloads/in.mov':
Metadata:
major_brand : qt
minor_version : 537199360
compatible_brands: qt
creation_time : 2014-01-16 18:02:27
Duration: 00:00:06.44, start: 0.000000, bitrate: 119128 kb/s
Stream #0:0(eng): Video: prores (apch / 0x68637061), yuv422p10le(bt709), 1920x1080, 109843 kb/s, SAR 1:1 DAR 16:9, 29.97 fps, 29.97 tbr, 2997 tbn, 2997 tbc (default)
Metadata:
creation_time : 2014-01-16 18:02:27
handler_name : Apple Alias Data Handler
encoder : Apple ProRes 422 (HQ)
timecode : 01:00:00;00
Stream #0:1(eng): Audio: pcm_s24le (in24 / 0x34326E69), 48000 Hz, 1 channels, s32 (24 bit), 1152 kb/s (default)
Metadata:
creation_time : 2014-01-16 18:02:27
handler_name : Apple Alias Data Handler
Stream #0:2(eng): Audio: pcm_s24le (in24 / 0x34326E69), 48000 Hz, 1 channels, s32 (24 bit), 1152 kb/s (default)
Metadata:
creation_time : 2014-01-16 18:02:27
handler_name : Apple Alias Data Handler
Stream #0:3(eng): Audio: pcm_s24le (in24 / 0x34326E69), 48000 Hz, 1 channels, s32 (24 bit), 1152 kb/s (default)
Metadata:
creation_time : 2014-01-16 18:02:27
handler_name : Apple Alias Data Handler
Stream #0:4(eng): Audio: pcm_s24le (in24 / 0x34326E69), 48000 Hz, 1 channels, s32 (24 bit), 1152 kb/s (default)
Metadata:
creation_time : 2014-01-16 18:02:27
handler_name : Apple Alias Data Handler
Stream #0:5(eng): Audio: pcm_s24le (in24 / 0x34326E69), 48000 Hz, 1 channels, s32 (24 bit), 1152 kb/s (default)
Metadata:
creation_time : 2014-01-16 18:02:27
handler_name : Apple Alias Data Handler
Stream #0:6(eng): Audio: pcm_s24le (in24 / 0x34326E69), 48000 Hz, 1 channels, s32 (24 bit), 1152 kb/s (default)
Metadata:
creation_time : 2014-01-16 18:02:27
handler_name : Apple Alias Data Handler
Stream #0:7(eng): Audio: pcm_s24le (in24 / 0x34326E69), 48000 Hz, 2 channels, s32 (24 bit), 2304 kb/s (default)
Metadata:
creation_time : 2014-01-16 18:02:27
handler_name : Apple Alias Data Handler
Stream #0:8(eng): Data: none (tmcd / 0x64636D74), 0 kb/s (default)
Metadata:
creation_time : 2014-01-16 18:02:28
handler_name : Apple Alias Data Handler
timecode : 01:00:00;00
File '~/Downloads/out2.mov' already exists. Overwrite ? [y/N] y
Output #0, mov, to '~/Downloads/out2.mov':
Metadata:
major_brand : qt
minor_version : 537199360
compatible_brands: qt
encoder : Lavf56.25.101
Stream #0:0(eng): Video: prores (apch / 0x68637061), yuv422p10le, 1920x1080 [SAR 1:1 DAR 16:9], q=2-31, 109843 kb/s, 29.97 fps, 29.97 tbr, 11988 tbn, 2997 tbc (default)
Metadata:
creation_time : 2014-01-16 18:02:27
handler_name : Apple Alias Data Handler
encoder : Apple ProRes 422 (HQ)
timecode : 01:00:00;00
Stream #0:1(eng): Audio: pcm_s24le (in24 / 0x34326E69), 48000 Hz, stereo, s32 (24 bit), 2304 kb/s (default)
Metadata:
creation_time : 2014-01-16 18:02:27
handler_name : Apple Alias Data Handler
encoder : Lavc56.26.100 pcm_s24le
Stream mapping:
Stream #0:0 -> #0:0 (copy)
Stream #0:7 -> #0:1 (pcm_s24le (native) -> pcm_s24le (native))
Press [q] to stop, [?] for help
frame= 193 fps=109 q=-1.0 Lsize= 88166kB time=00:00:06.43 bitrate=112155.7kbits/s
video:86349kB audio:1811kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.006946% -
How to detect delay or silence in an audio file ?
15 juillet 2022, par LynobI want to detect silence or delay in audio for a given duration file and remove it. For example, if someone started speaking and then paused for some duration to think.


There's this question but it only detects the silence at the end and doesn't remove it. My colleague suggested sox but I'm not sure if it's the best tool for the job nor how to use it frankly, moreover, the project died in 2015.


-
How do terminal pipes in Python differ from those in Rust ?
5 octobre 2022, par rust_convertTo work on learning Rust (in a Tauri project) I am converting a Python 2 program that uses ffmpeg to create a custom video format from a GUI. The video portion converts successfully, but I am unable to get the audio to work. With the debugging I have done for the past few days, it looks like I am not able to read in the audio data in Rust correctly from the terminal pipe - what is working to read in the video data is not working for the audio. I have tried reading in the audio data as a string and then converting it to bytes but then the byte array appears empty. I have been researching the 'Pipe'-ing of data from the rust documentation and python documentation and am unsure how the Rust pipe could be empty or incorrect if it's working for the video.


From this python article and this rust stack overflow exchange, it looks like the python stdout pipe is equivalent to the rust stdin pipe ?


The python code snippet for video and audio conversion :


output=open(self.outputFile, 'wb')
devnull = open(os.devnull, 'wb')

vidcommand = [ FFMPEG_BIN,
 '-i', self.inputFile,
 '-f', 'image2pipe',
 '-r', '%d' % (self.outputFrameRate),
 '-vf', scaleCommand,
 '-vcodec', 'rawvideo',
 '-pix_fmt', 'bgr565be',
 '-f', 'rawvideo', '-']
 
vidPipe = '';
if os.name=='nt' :
 startupinfo = sp.STARTUPINFO()
 startupinfo.dwFlags |= sp.STARTF_USESHOWWINDOW
 vidPipe=sp.Popen(vidcommand, stdin = sp.PIPE, stdout = sp.PIPE, stderr = devnull, bufsize=self.inputVidFrameBytes*10, startupinfo=startupinfo)
else:
 vidPipe=sp.Popen(vidcommand, stdin = sp.PIPE, stdout = sp.PIPE, stderr = devnull, bufsize=self.inputVidFrameBytes*10)

vidFrame = vidPipe.stdout.read(self.inputVidFrameBytes)

audioCommand = [ FFMPEG_BIN,
 '-i', self.inputFile,
 '-f', 's16le',
 '-acodec', 'pcm_s16le',
 '-ar', '%d' % (self.outputAudioSampleRate),
 '-ac', '1',
 '-']

audioPipe=''
if (self.audioEnable.get() == 1):
 if os.name=='nt' :
 startupinfo = sp.STARTUPINFO()
 startupinfo.dwFlags |= sp.STARTF_USESHOWWINDOW
 audioPipe = sp.Popen(audioCommand, stdin = sp.PIPE, stdout=sp.PIPE, stderr = devnull, bufsize=self.audioFrameBytes*10, startupinfo=startupinfo)
 else:
 audioPipe = sp.Popen(audioCommand, stdin = sp.PIPE, stdout=sp.PIPE, stderr = devnull, bufsize=self.audioFrameBytes*10)

 audioFrame = audioPipe.stdout.read(self.audioFrameBytes) 

currentFrame=0;

while len(vidFrame)==self.inputVidFrameBytes:
 currentFrame+=1
 if(currentFrame%30==0):
 self.progressBarVar.set(100.0*(currentFrame*1.0)/self.totalFrames)
 if (self.videoBitDepth.get() == 16):
 output.write(vidFrame)
 else:
 b16VidFrame=bytearray(vidFrame)
 b8VidFrame=[]
 for p in range(self.outputVidFrameBytes):
 b8VidFrame.append(((b16VidFrame[(p*2)+0]>>0)&0xE0)|((b16VidFrame[(p*2)+0]<<2)&0x1C)|((b16VidFrame[(p*2)+1]>>3)&0x03))
 output.write(bytearray(b8VidFrame))

 vidFrame = vidPipe.stdout.read(self.inputVidFrameBytes) # Read where vidframe is to match up with audio frame and output?
 if (self.audioEnable.get() == 1):


 if len(audioFrame)==self.audioFrameBytes:
 audioData=bytearray(audioFrame) 

 for j in range(int(round(self.audioFrameBytes/2))):
 sample = ((audioData[(j*2)+1]<<8) | audioData[j*2]) + 0x8000
 sample = (sample>>(16-self.outputAudioSampleBitDepth)) & (0x0000FFFF>>(16-self.outputAudioSampleBitDepth))

 audioData[j*2] = sample & 0xFF
 audioData[(j*2)+1] = sample>>8

 output.write(audioData)
 audioFrame = audioPipe.stdout.read(self.audioFrameBytes)

 else:
 emptySamples=[]
 for samples in range(int(round(self.audioFrameBytes/2))):
 emptySamples.append(0x00)
 emptySamples.append(0x00)
 output.write(bytearray(emptySamples))

self.progressBarVar.set(100.0)

vidPipe.terminate()
vidPipe.stdout.close()
vidPipe.wait()

if (self.audioEnable.get() == 1):
 audioPipe.terminate()
 audioPipe.stdout.close()
 audioPipe.wait()

output.close()



The Rust snippet that should accomplish the same goals :


let output_file = OpenOptions::new()
 .create(true)
 .truncate(true)
 .write(true)
 .open(&output_path)
 .unwrap();
let mut writer = BufWriter::with_capacity(
 options.video_frame_bytes.max(options.audio_frame_bytes),
 output_file,
);
let ffmpeg_path = sidecar_path("ffmpeg");
#[cfg(debug_assertions)]
let timer = Instant::now();

let mut video_cmd = Command::new(&ffmpeg_path);
#[rustfmt::skip]
video_cmd.args([
 "-i", options.path,
 "-f", "image2pipe",
 "-r", options.frame_rate,
 "-vf", options.scale,
 "-vcodec", "rawvideo",
 "-pix_fmt", "bgr565be",
 "-f", "rawvideo",
 "-",
])
.stdin(Stdio::null())
.stdout(Stdio::piped())
.stderr(Stdio::null());

// windows creation flag CREATE_NO_WINDOW: stops the process from creating a CMD window
// https://docs.microsoft.com/en-us/windows/win32/procthread/process-creation-flags
#[cfg(windows)]
video_cmd.creation_flags(0x08000000);

let mut video_child = video_cmd.spawn().unwrap();
let mut video_stdout = video_child.stdout.take().unwrap();
let mut video_frame = vec![0; options.video_frame_bytes];

let mut audio_cmd = Command::new(&ffmpeg_path);
#[rustfmt::skip]
audio_cmd.args([
 "-i", options.path,
 "-f", "s16le",
 "-acodec", "pcm_s16le",
 "-ar", options.sample_rate,
 "-ac", "1",
 "-",
])
.stdin(Stdio::null())
.stdout(Stdio::piped())
.stderr(Stdio::null());

#[cfg(windows)]
audio_cmd.creation_flags(0x08000000);

let mut audio_child = audio_cmd.spawn().unwrap();
let mut audio_stdout = audio_child.stdout.take().unwrap();
let mut audio_frame = vec![0; options.audio_frame_bytes];

while video_stdout.read_exact(&mut video_frame).is_ok() {
 writer.write_all(&video_frame).unwrap();

 if audio_stdout.read_to_end(&mut audio_frame).is_ok() {
 if audio_frame.len() == options.audio_frame_bytes {
 for i in 0..options.audio_frame_bytes / 2 {
 let temp_sample = ((u32::from(audio_frame[(i * 2) + 1]) << 8)
 | u32::from(audio_frame[i * 2]))
 + 0x8000;
 let sample = (temp_sample >> (16 - 10)) & (0x0000FFFF >> (16 - 10));

 audio_frame[i * 2] = (sample & 0xFF) as u8;
 audio_frame[(i * 2) + 1] = (sample >> 8) as u8;
 }
 } else {
 audio_frame.fill(0x00);
 }
 }
 writer.write_all(&audio_frame).unwrap();
}


video_child.wait().unwrap();
audio_child.wait().unwrap();

#[cfg(debug_assertions)]
{
 let elapsed = timer.elapsed();
 dbg!(elapsed);
}

writer.flush().unwrap();



I have looked at the hex data of the files using HxD - regardless of how I alter the Rust program, I am unable to get data different from what is previewed in the attached image - so the audio pipe is incorrectly interfaced. I included a screenshot of the hex data from the working python program that converts the video and audio correctly.


HxD Python program hex output :




HxD Rust program hex output :