X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=doc%2Findevs.texi;h=af3173217f8e481537d97648bd5e6202e80b5fb1;hb=cd8087444bb459c7c62e21913adfef5ec09675cc;hp=6951940a93a4421c77e88b5249b5bf09d8b25f35;hpb=a7109b82c4ab86a7ae75ad34245af918f1a26b95;p=ffmpeg diff --git a/doc/indevs.texi b/doc/indevs.texi index 6951940a93a..af3173217f8 100644 --- a/doc/indevs.texi +++ b/doc/indevs.texi @@ -267,7 +267,8 @@ audio track. @item list_devices If set to @option{true}, print a list of devices and exit. -Defaults to @option{false}. +Defaults to @option{false}. Alternatively you can use the @code{-sources} +option of ffmpeg to list the available input devices. @item list_formats If set to @option{true}, print a list of supported formats and exit. @@ -326,6 +327,12 @@ Defaults to @samp{2}. Sets the decklink device duplex mode. Must be @samp{unset}, @samp{half} or @samp{full}. Defaults to @samp{unset}. +@item timecode_format +Timecode type to include in the frame and video stream metadata. Must be +@samp{none}, @samp{rp188vitc}, @samp{rp188vitc2}, @samp{rp188ltc}, +@samp{rp188any}, @samp{vitc}, @samp{vitc2}, or @samp{serial}. Defaults to +@samp{none} (not included). + @item video_input Sets the video input source. Must be @samp{unset}, @samp{sdi}, @samp{hdmi}, @samp{optical_sdi}, @samp{component}, @samp{composite} or @samp{s_video}. @@ -364,6 +371,20 @@ If set to @option{true}, timestamps are forwarded as they are without removing the initial offset. Defaults to @option{false}. +@item timestamp_align +Capture start time alignment in seconds. If set to nonzero, input frames are +dropped till the system timestamp aligns with configured value. +Alignment difference of up to one frame duration is tolerated. +This is useful for maintaining input synchronization across N different +hardware devices deployed for 'N-way' redundancy. The system time of different +hardware devices should be synchronized with protocols such as NTP or PTP, +before using this option. +Note that this method is not foolproof. In some border cases input +synchronization may not happen due to thread scheduling jitters in the OS. +Either sync could go wrong by 1 frame or in a rarer case +@option{timestamp_align} seconds. +Defaults to @samp{0}. + @end table @subsection Examples @@ -402,116 +423,6 @@ ffmpeg -channels 16 -format_code Hi50 -f decklink -i 'UltraStudio Mini Recorder' @end itemize -@section kmsgrab - -KMS video input device. - -Captures the KMS scanout framebuffer associated with a specified CRTC or plane as a -DRM object that can be passed to other hardware functions. - -Requires either DRM master or CAP_SYS_ADMIN to run. - -If you don't understand what all of that means, you probably don't want this. Look at -@option{x11grab} instead. - -@subsection Options - -@table @option - -@item device -DRM device to capture on. Defaults to @option{/dev/dri/card0}. - -@item format -Pixel format of the framebuffer. Defaults to @option{bgr0}. - -@item format_modifier -Format modifier to signal on output frames. This is necessary to import correctly into -some APIs, but can't be autodetected. See the libdrm documentation for possible values. - -@item crtc_id -KMS CRTC ID to define the capture source. The first active plane on the given CRTC -will be used. - -@item plane_id -KMS plane ID to define the capture source. Defaults to the first active plane found if -neither @option{crtc_id} nor @option{plane_id} are specified. - -@item framerate -Framerate to capture at. This is not synchronised to any page flipping or framebuffer -changes - it just defines the interval at which the framebuffer is sampled. Sampling -faster than the framebuffer update rate will generate independent frames with the same -content. Defaults to @code{30}. - -@end table - -@subsection Examples - -@itemize - -@item -Capture from the first active plane, download the result to normal frames and encode. -This will only work if the framebuffer is both linear and mappable - if not, the result -may be scrambled or fail to download. -@example -ffmpeg -f kmsgrab -i - -vf 'hwdownload,format=bgr0' output.mp4 -@end example - -@item -Capture from CRTC ID 42 at 60fps, map the result to VAAPI, convert to NV12 and encode as H.264. -@example -ffmpeg -crtc_id 42 -framerate 60 -f kmsgrab -i - -vf 'hwmap=derive_device=vaapi,scale_vaapi=w=1920:h=1080:format=nv12' -c:v h264_vaapi output.mp4 -@end example - -@end itemize - -@section libndi_newtek - -The libndi_newtek input device provides capture capabilities for using NDI (Network -Device Interface, standard created by NewTek). - -Input filename is a NDI source name that could be found by sending -find_sources 1 -to command line - it has no specific syntax but human-readable formatted. - -To enable this input device, you need the NDI SDK and you -need to configure with the appropriate @code{--extra-cflags} -and @code{--extra-ldflags}. - -@subsection Options - -@table @option - -@item find_sources -If set to @option{true}, print a list of found/available NDI sources and exit. -Defaults to @option{false}. - -@item wait_sources -Override time to wait until the number of online sources have changed. -Defaults to @option{0.5}. - -@item allow_video_fields -When this flag is @option{false}, all video that you receive will be progressive. -Defaults to @option{true}. - -@end table - -@subsection Examples - -@itemize - -@item -List input devices: -@example -ffmpeg -f libndi_newtek -find_sources 1 -i dummy -@end example - -@item -Restream to NDI: -@example -ffmpeg -f libndi_newtek -i "DEV-5.INTERNAL.M1STEREO.TV (NDI_SOURCE_NAME_1)" -f libndi_newtek -y NDI_SOURCE_NAME_2 -@end example - -@end itemize - @section dshow Windows DirectShow input device. @@ -876,7 +787,7 @@ ffplay -f iec61883 -i auto Grab and record the input of a FireWire DV/HDV device, using a packet buffer of 100000 packets if the source is HDV. @example -ffmpeg -f iec61883 -i auto -hdvbuffer 100000 out.mpg +ffmpeg -f iec61883 -i auto -dvbuffer 100000 out.mpg @end example @end itemize @@ -939,6 +850,68 @@ Set the number of channels. Default is 2. @end table +@section kmsgrab + +KMS video input device. + +Captures the KMS scanout framebuffer associated with a specified CRTC or plane as a +DRM object that can be passed to other hardware functions. + +Requires either DRM master or CAP_SYS_ADMIN to run. + +If you don't understand what all of that means, you probably don't want this. Look at +@option{x11grab} instead. + +@subsection Options + +@table @option + +@item device +DRM device to capture on. Defaults to @option{/dev/dri/card0}. + +@item format +Pixel format of the framebuffer. Defaults to @option{bgr0}. + +@item format_modifier +Format modifier to signal on output frames. This is necessary to import correctly into +some APIs, but can't be autodetected. See the libdrm documentation for possible values. + +@item crtc_id +KMS CRTC ID to define the capture source. The first active plane on the given CRTC +will be used. + +@item plane_id +KMS plane ID to define the capture source. Defaults to the first active plane found if +neither @option{crtc_id} nor @option{plane_id} are specified. + +@item framerate +Framerate to capture at. This is not synchronised to any page flipping or framebuffer +changes - it just defines the interval at which the framebuffer is sampled. Sampling +faster than the framebuffer update rate will generate independent frames with the same +content. Defaults to @code{30}. + +@end table + +@subsection Examples + +@itemize + +@item +Capture from the first active plane, download the result to normal frames and encode. +This will only work if the framebuffer is both linear and mappable - if not, the result +may be scrambled or fail to download. +@example +ffmpeg -f kmsgrab -i - -vf 'hwdownload,format=bgr0' output.mp4 +@end example + +@item +Capture from CRTC ID 42 at 60fps, map the result to VAAPI, convert to NV12 and encode as H.264. +@example +ffmpeg -crtc_id 42 -framerate 60 -f kmsgrab -i - -vf 'hwmap=derive_device=vaapi,scale_vaapi=w=1920:h=1080:format=nv12' -c:v h264_vaapi output.mp4 +@end example + +@end itemize + @section lavfi Libavfilter input virtual device. @@ -1077,6 +1050,86 @@ IIDC1394 input device, based on libdc1394 and libraw1394. Requires the configure option @code{--enable-libdc1394}. +@subsection Options +@table @option + +@item framerate +Set the frame rate. Default is @code{ntsc}, corresponding to a frame +rate of @code{30000/1001}. + +@item pixel_format +Select the pixel format. Default is @code{uyvy422}. + +@item video_size +Set the video size given as a string such as @code{640x480} or @code{hd720}. +Default is @code{qvga}. +@end table + +@section libndi_newtek + +The libndi_newtek input device provides capture capabilities for using NDI (Network +Device Interface, standard created by NewTek). + +Input filename is a NDI source name that could be found by sending -find_sources 1 +to command line - it has no specific syntax but human-readable formatted. + +To enable this input device, you need the NDI SDK and you +need to configure with the appropriate @code{--extra-cflags} +and @code{--extra-ldflags}. + +@subsection Options + +@table @option + +@item find_sources +If set to @option{true}, print a list of found/available NDI sources and exit. +Defaults to @option{false}. + +@item wait_sources +Override time to wait until the number of online sources have changed. +Defaults to @option{0.5}. + +@item allow_video_fields +When this flag is @option{false}, all video that you receive will be progressive. +Defaults to @option{true}. + +@item extra_ips +If is set to list of comma separated ip addresses, scan for sources not only +using mDNS but also use unicast ip addresses specified by this list. + +@end table + +@subsection Examples + +@itemize + +@item +List input devices: +@example +ffmpeg -f libndi_newtek -find_sources 1 -i dummy +@end example + +@item +List local and remote input devices: +@example +ffmpeg -f libndi_newtek -extra_ips "192.168.10.10" -find_sources 1 -i dummy +@end example + +@item +Restream to NDI: +@example +ffmpeg -f libndi_newtek -i "DEV-5.INTERNAL.M1STEREO.TV (NDI_SOURCE_NAME_1)" -f libndi_newtek -y NDI_SOURCE_NAME_2 +@end example + +@item +Restream remote NDI to local NDI: +@example +ffmpeg -f libndi_newtek -extra_ips "192.168.10.10" -i "DEV-5.REMOTE.M1STEREO.TV (NDI_SOURCE_NAME_1)" -f libndi_newtek -y NDI_SOURCE_NAME_2 +@end example + + +@end itemize + @section openal The OpenAL input device provides audio capture on all systems with a @@ -1195,7 +1248,6 @@ Set the number of channels. Default is 2. @end table - @section pulse PulseAudio input device.