vMix Forums
»
General
»
General Discussion
»
vMix pipes as independent feeds for FFmpeg CLI
Rank: Newbie
Groups: Registered
Joined: 4/11/2017(UTC) Posts: 4
Thanks: 1 times
|
Hello everyone, I'm trying to use custom ffmpeg commands through ffmpegformats.xml in recording from a Magewell capture card. It works properly when recording through vmix interface, thus invoking the ffmpeg.exe in vmix installation folder. What about if I wanted to pass the input source (as seen by vMix) to an independent build of ffmpeg in my PC? In particular I would like to exploit the .asf streams created by vMix/ffmpeg i.e. input type Code:"C:\\Program Files (x86)\\vMix\\streaming\\ffmpeg.exe" -report -y -f asf -i "\\\\.\\pipe\\--long key here--" etc...
and put the pipe as a source in an independent ffmpeg CLI. What I really want is to avoid the dshow call in my ffmpeg command, due to an issue in recognizing full audio features of my Magewell card as DirectShow audio device. As you can expect, the input pipe as it is reported in vMix/ffmpeg log file cannot be used after ending the record. Is there any (hopefully simple...) way to grab the key produced by vMix in the pipe and use it real time in a totally separate ffmpeg command? Thank you!
|
|
|
|
Rank: Advanced Member
Groups: Registered
Joined: 3/20/2014(UTC) Posts: 2,721 Location: Bordeaux, France Thanks: 243 times Was thanked: 794 time(s) in 589 post(s)
|
Hi and welcome to the vMix forum
I do it easily using the EXTERNAL feature. Simply activate external (or EXT2 set to any specific input) and use vMixVideo and vMixAudio virtual devices as capture inputs in FFMPEG
Hpe this helps Guillaume
|
|
|
|
Rank: Advanced Member
Groups: Registered
Joined: 3/20/2014(UTC) Posts: 2,721 Location: Bordeaux, France Thanks: 243 times Was thanked: 794 time(s) in 589 post(s)
|
I have already explained this with many details in this thread: https://forums.vmix.com/....aspx?g=posts&t=8659PS : Remember GTX cards only accepts 2 simultaneous encodes. Might need to adapt your script in order to use CPU encoding instead of GPU.
|
|
|
|
Rank: Newbie
Groups: Registered
Joined: 4/11/2017(UTC) Posts: 4
Thanks: 1 times
|
Thank you, Guillaume. I've already scrutinized your posts. If I'm not wrong, they help in adapting vMix commands reported in log files, after a recording has been done, that it's what I've just done by myself with success. Moreover the procedure you are kindly recalling involves dshow management of the virtual devices. This can be trivially be done in ffmpeg, directly in CLI and without any intermediate software layer, vMix or whatever. As I wrote, though straightforward, dshow calls are undesiderable for my purposes. The EXTERNAL feature appears in the User Guide as a way to pilot 3rd party applications such as Adobe Flash Media Live Encoder and Skype: FFmpeg is a medium in that case, not the final application to be piloted. I possibly need this particular use of FFmpeg. So: 1. How can I intercept the key connected to pipe while recording in vMix (not after)? 2. Can be EXTERNAL used to pass 'something' to an independent (= completely user controlled) FFmpeg CLI? Thanks again
|
|
|
|
Rank: Advanced Member
Groups: Registered
Joined: 3/20/2014(UTC) Posts: 2,721 Location: Bordeaux, France Thanks: 243 times Was thanked: 794 time(s) in 589 post(s)
|
Maybe I wasn't clear enough... You can do what I wrote AT THE SAME TIME as vMix records or streams... I use this method to simultaneously stream or record to other destinations or codecs. I only mentionned the log file as an easy way to get a working sample for commandlines which most people are not familiar with. I suggested to do a small record or stream in order to create a log file with appropriate settings/presets. Quote:The EXTERNAL feature appears in the User Guide as a way to pilot 3rd party applications such as Adobe Flash Media Live Encoder and Skype Or FFMPEG, or VLC or OBS or any other application which accepts audio and video capture (virtual) devices... Quote: dshow calls are undesiderable for my purposes I'd be curious to know why Quote:How can I intercept the key connected to pipe while recording in vMix (not after)? The way I indicated which is not to try to intercept the pipe but rather use EXT or EXT2 virtual devices Quote:Can be EXTERNAL used to pass 'something' to an independent (= completely user controlled) FFmpeg CLI?
Yes, this is exactly what I explained Believe me, just try... Activate EXTERNAL, configure FFMPEG with vMixAudio and vMixVideo virtual devices as inputs and define your options and destinations. You can also test with VLC for easier/quicker setting, it works the same way. vMix virtual devices are seen as any regular capture device. Guillaume
|
1 user thanked DWAM for this useful post.
|
|
|
Rank: Advanced Member
Groups: Registered
Joined: 3/20/2014(UTC) Posts: 2,721 Location: Bordeaux, France Thanks: 243 times Was thanked: 794 time(s) in 589 post(s)
|
Quote:What I really want is to avoid the dshow call in my ffmpeg command, due to an issue in recognizing full audio features of my Magewell card as DirectShow audio device. You won't get this issue with my solution as dshow recognizes perfectly well vMix outs.
|
|
|
|
Rank: Newbie
Groups: Registered
Joined: 4/11/2017(UTC) Posts: 4
Thanks: 1 times
|
Thank you Guillaume, I did manage. I was completely misunderstanding the ability of vMix to create virtual devices for any capturing software, including a process running in ffmpeg CLI at the same time EXTERNAL output is being activated. Your last reply was definitly clarifyng, sorry for my poor insight. I use it as a workaround for capturing in ffmpeg the audio channel of my Magewell card which is wrongly "seen" by dshow as a 44.1 KHz device (even though with sources at higher sampling rate). So I cannot produce quality capture without resampling audio streams (as an alternative audio capture could be done with Magewell SDK tools, for example, and then remuxed with video, which is a time expensive method).
Hopefully the stream produced by vMix (through EXTERNAL) is not processed at all and so I can simply copy the PCM stream in final output. Are we sure there is no background processing (i.e. audio resampling) by vMix in launching EXTERNAL feature? (I see in ffmpeg log the correct sample rate but it is the vMix output, while it's the stream entering vMix that I wish investigate...)
Thank you so much
|
|
|
|
Rank: Advanced Member
Groups: Registered
Joined: 3/20/2014(UTC) Posts: 2,721 Location: Bordeaux, France Thanks: 243 times Was thanked: 794 time(s) in 589 post(s)
|
Good! ;o) Quote:Are we sure there is no background processing by vMix in launching EXTERNAL feature? What do you mean here? Sorry it's my turn not to understand! Remember I'm French, english is not my mother tongue. Background processing? regarding the signal, the image/audio treatment? I think not, it's uncompressed signal, not altered... But there is background processing in terms of CPU/GPU...
|
|
|
|
Rank: Advanced Member
Groups: Registered
Joined: 3/20/2014(UTC) Posts: 2,721 Location: Bordeaux, France Thanks: 243 times Was thanked: 794 time(s) in 589 post(s)
|
Quote:Are we sure there is no background processing (i.e. audio resampling) by vMix in launching EXTERNAL feature? (I see in ffmpeg log the correct sample rate but it is the vMix output, while it's the stream entering vMix that I wish investigate...) Oh I just saw your edit. I will not answer this point, I prefer Magewell specialists like Martin Kay (Zenvideo) or Tom Sinclair or (obviously) Martin to do it if they see this thread. My opinion is : it depends on your Magewell card settings and your input and project settings in vMix. Guillaume
|
|
|
|
Rank: Newbie
Groups: Registered
Joined: 4/11/2017(UTC) Posts: 4
Thanks: 1 times
|
DWAM wrote:Quote:Are we sure there is no background processing (i.e. audio resampling) by vMix in launching EXTERNAL feature? (I see in ffmpeg log the correct sample rate but it is the vMix output, while it's the stream entering vMix that I wish investigate...) Oh I just saw your edit. I will not answer this point, I prefer Magewell specialists like Martin Kay (Zenvideo) or Tom Sinclair or (obviously) Martin to do it if they see this thread. My opinion is : it depends on your Magewell card settings and your input and project settings in vMix. Guillaume If vMix developers could tell us how they manage the original MagewellPlugin.dll e LibMWCapture.dll in the installation folder of the application (both are part of Magewell SDK), it would be greatly appreciated! I have only limited developing skills, but these .dll's would let me assume that Magewell card's audio/video properties are correctly parsed when entering the input layer of vMix. IMHO that is a prerequisite to operate with project settings in vMix. The question arising is again how is produced the .asf stream (with pipe string reported in post#1). Thank you for your time and support :-)
|
|
|
|
vMix Forums
»
General
»
General Discussion
»
vMix pipes as independent feeds for FFmpeg CLI
Forum Jump
You cannot post new topics in this forum.
You cannot reply to topics in this forum.
You cannot delete your posts in this forum.
You cannot edit your posts in this forum.
You cannot create polls in this forum.
You cannot vote in polls in this forum.
Important Information:
The vMix Forums uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close