Den 04.05.2025 15:42, skrev Andrew
Randrianasulu:
Den 04.05.2025 05:49, skrev Andrew Randrianasulu:
Den 03.05.2025 13:00, skrev Terje J.
Hanssen:
Den 02.05.2025 21:42, skrev Andrew
Randrianasulu:
>> it seems
in some cases ffmpeg not
geared towards preserving
most information, just picks
up most commonly
defined/first pixel format.
>> Try mpeg2video as
output codec, and/or specify
pixel format (pix_fmt) more
explicitly before output's
filename?
>>> Could you
possibly examplify the
latter?
>>>> I think I
just theorized ffmpeg may
try to get some info from
alsa device file directly,
as it tries with /dev/video.
But I never >>>>
tried this way, so I can be
totally wrong!
-------------------------------
Instead of 50i (pal interlaced
fields), I try 50 fps
(progressive) that at least is
a pal frequence.
And yes, it seems from the
output that ffmpeg uses
mpeg1video as default output
codec.
Furter I try to combine the
current line
ffmpeg
-hide_banner -f v4l2
-input_format yuyv422
-video_size 720x576
-framerate 25 -t 20 -i
/dev/video2
out-720x576_ms2130.mpeg
with and utilize the syntax
developed 2021 for "Blu-ray
compliant MPEG-2 SD video with
LPCM audio"
ffmpeg -i dv28.dv
-c:v mpeg2video -refs 1 -bf
2 -b:v 25M -maxrate 25M
-minrate 25M -bufsize 45M
-muxrate 45M -dc 10 -c:a
pcm_s16be -f vob dv28.mpg
and for the current ongoing
"DVD compliant MPEG-2 Video
and PCM Audio"
ffmpeg
-hide_banner -i dv01.dv -c:v
mpeg2video -refs 1 -bf 2
-b:v 8M -maxrate 8M -minrate
8M -bufsize 20M -muxrate 11M
-dc 10 -c:a pcm_dvd -f vob
-flags +ilme+ildct dv01.mpg
to first
ffmpeg
-hide_banner -f v4l2
-input_format yuyv422
-video_size 720x576
-framerate 50 -c:v
mpeg2video -refs 1 -bf 2
-b:v 8M -maxrate 8M -minrate
8M -bufsize 20M -muxrate 11M
-dc 10 -c:a pcm_dvd -f vob
-t 20 -i /dev/video2
720x576_50p_ms2130.mpg
Option b:v (video bitrate
(please use -b:v)) cannot be
applied to input url
/dev/video2 -- you are
trying to apply an input
option to an output file or
vice versa. Move this option
before the file it belongs
to.
Error parsing options for
input file /dev/video2.
Error opening input files:
Invalid argument
and next revised with no
output. That is I need help to
debug the syntax error:
ffmpeg
-hide_banner -f v4l2
-input_format yuyv422
-video_size 720x576
-framerate 50 -i /dev/video2
-c:v mpeg2video -refs 1 -bf
2 -b:v 8M -maxrate 8M
-minrate 8M -bufsize 20M
-muxrate 11M -dc 10 -c:a
pcm_dvd -f vob -t 20
720x576_50p_ms2130.mpg
[video4linux2,v4l2 @
0x55db770ef9c0] Dequeued
v4l2 buffer contains
corrupted data (0 bytes).
Input #0, video4linux2,v4l2,
from '/dev/video2':
Duration: N/A, start:
0.000000, bitrate: 331776
kb/s
Stream #0:0: Video:
rawvideo (YUY2 /
0x32595559), yuyv422,
720x576, 331776 kb/s, 50
fps, 50 tbr, 1000k tbn
Stream mapping:
Stream #0:0 -> #0:0
(rawvideo (native) ->
mpeg2video (native))
Press [q] to stop, [?] for
help
[video4linux2,v4l2 @
0x55db770ef9c0] Dequeued
v4l2 buffer contains
corrupted data (0 bytes).
Last message repeated 30
times
[mpeg2video @
0x55db77114f00] Warning
vbv_delay will be set to
0xFFFF (=VBR) as the
specified vbv buffer is too
large for the given bitrate!
Output #0, vob, to
'720x576_50p_ms2130.mpg':
Metadata:
encoder :
Lavf59.27.100
Stream #0:0: Video:
mpeg2video (4:2:2),
yuv422p(tv, progressive),
720x576, q=2-31, 8000 kb/s,
50 fps, 90k tbn
Metadata:
encoder :
Lavc59.37.100 mpeg2video
Side data:
cpb: bitrate
max/min/avg:
8000000/8000000/8000000
buffer size: 20000000
vbv_delay: N/A
frame= 0 fps=0.0 q=0.0
Lsize= 0kB
time=00:00:00.00 bitrate=N/A
speed= 0x
video:0kB audio:0kB
subtitle:0kB other
streams:0kB global
headers:0kB muxing overhead:
unknown
Output file is empty,
nothing was encoded (check
-ss / -t / -frames
parameters if used)
well, I think
framerate still 25 for 50i stream
....
can you re-check last
line with framerate parameter
removed or changed back to 25?
Ok, as this old post by my mistake already
has been forwarded to the list and
replied, I will follow it up later today,
but need to rig rig up my camcorder and
devices
Finally ready, I had to recall a lot since
2023.
ls /dev/video*
/dev/video0 /dev/video1 /dev/video2
/dev/video3
for i in /dev/video*; do echo "$i"; udevadm
info --query=all --attribute-walk --name=$i
| grep -E "name"; done
/dev/video0
ATTR{name}=="USB3.0 UHD: USB3.0 UHD"
/dev/video1
ATTR{name}=="USB3.0 UHD: USB3.0 UHD"
/dev/video2
ATTR{name}=="USB 2.0 Camera: HD 720P
Webcam"
/dev/video3
ATTR{name}=="USB 2.0 Camera: HD 720P
Webcam"
v4l2-ctl --list-devices
USB 2.0 Camera: HD 720P Webcam
(usb-0000:00:14.0-11.2):
/dev/video2
/dev/video3
/dev/media1
USB3.0 UHD: USB3.0 UHD (usb-0000:00:14.0-3):
/dev/video0
/dev/video1
/dev/media0
As seen the HDMI-USB3 capture card + the
S-Video/HDMI converter (with the analog
S-video camcorder) is now on /dev/video0
while the USB2 webcam is on /dev/video2
but what is on video1 ?
Nothing as far as I can see(?). It seems both camera
devices allocate or are associated with three devices
each.
it seems that whole thing fail at
Dequeued v4l2 buffer contains
corrupted data (0 bytes).
I seems to happend when and after using unsupported fps
Does anything else (guvcview, vlc
..) process video stream this usb3 UHD device?
mplayer tv:// -demuxer tv ?
Not that I use, but have not haven't found a way to
verify it.
However, I have recalled and found out more with
progress.
The most important it seems required to reboot the
machine with the camcorder ON (video signal) on
beforehand, before ffmpeg get the video input.
Reboot also seems required to clean up v4L2 buffer after
using unsupported fps ffplay or ffmpeg cause the
"Dequeued v4l2 buffer contains corrupted data (0
bytes)."
Hopefully there are a v4L command to easier cleanup the
latter?
Does unpluggin and repluggin it helps without
reboot?
It is easier and faster for me to reboot than to creep under the
table and unplug from the WS backplane :)
There is the only working USB3 port, while it tend to hang on the
frontpanel. I read somewhere once that shared USB buses may have
such problems on Linux.
Otherwise you probably want to talk to v4l2
maintainers or knowledgable people at suse forums ...
Beside the already listed Video4Linux devices, there are
also
cat /proc/asound/cards
0 [PCH_1 ]: HDA-Intel - HDA Intel
PCH
HDA Intel PCH at 0x4200910000
irq 168
1 [PCH ]: HDA-Intel - HDA Intel PCH
HDA Intel PCH at 0x41300000 irq
169
2 [UHD ]: USB-Audio - USB3.0 UHD
MACROSILICON USB3.0 UHD at
usb-0000:00:14.0-3, super speed
3 [Camera ]: USB-Audio - USB 2.0 Camera
Sonix Technology Co., Ltd. USB
2.0 Camera at usb-0000:00:14.0-11.2, high speed
However, so far ffmpeg has yet to find any audio streams
via v4l2 as seen below.
may be you need another -i so you can point
ffmpeg at alsa or pulseaudio audio capture device?
yes, this line grows bigger by the day ... )
Thank you for the tip and reminder regarding alsa input. I also
found a FFmpeg wiki: Capture / V4L2_ALSA that helped me
https://trac.ffmpeg.org/wiki/Capture/V4L2_ALSA
arecord -L
null
Discard all samples (playback) or generate zero samples
(capture)
sysdefault
Default Audio Device
speexrate
Rate Converter Plugin Using Speex Resampler
pipewire
PipeWire Sound Server
upmix
Plugin for channel upmix (4,6,8)
default
Default ALSA Output (currently PipeWire Media Server)
sysdefault:CARD=UHD
USB3.0 UHD, USB Audio
Default Audio Device
front:CARD=UHD,DEV=0
USB3.0 UHD, USB Audio
Front output / input
sysdefault:CARD=PCH_1
HDA Intel PCH, ALC897 Analog
Default Audio Device
front:CARD=PCH_1,DEV=0
HDA Intel PCH, ALC897 Analog
Front output / input
sysdefault:CARD=Camera
USB 2.0 Camera, USB Audio
Default Audio Device
front:CARD=Camera,DEV=0
USB 2.0 Camera, USB Audio
Front output / input
I used -i hw:CARD=UHD,DEV=0 as working alsa input device for ffmpeg
below
------------------------
Capture MPEG-2 File with 422 Video an PCM_DVD Audio Encoding
cd /Videoklipp/HDMI-USB3_Capture
Reboot camcorder to clean up v4l2 buffer first:
ffmpeg -hide_banner -f v4l2 -input_format yuyv422 -video_size
720x576 -framerate 50 -i /dev/video0 -f alsa -ac 2 -i
hw:CARD=UHD,DEV=0 -c:v mpeg2video -refs 1 -bf 2 -b:v 8M -maxrate 8M
-minrate 8M -bufsize 20M -muxrate 11M -dc 10 -c:a pcm_dvd -f vob -t
20 720x576_50fps+alsa_ms2130.mpg
Input #0, video4linux2,v4l2, from '/dev/video0':
Duration: N/A, start: 247.290426, bitrate: 331776 kb/s
Stream #0:0: Video: rawvideo (YUY2 / 0x32595559), yuyv422,
720x576, 331776 kb/s, 50 fps, 50 tbr, 1000k tbn
[aist#1:0/pcm_s16le @ 0x558f7224bf00] Guessed Channel Layout:
stereo
Input #1, alsa, from 'hw:CARD=UHD,DEV=0':
Duration: N/A, start: 1746391255.237803, bitrate: 1536 kb/s
Stream #1:0: Audio: pcm_s16le, 48000 Hz, stereo, s16, 1536 kb/s
Stream mapping:
Stream #0:0 -> #0:0 (rawvideo (native) -> mpeg2video
(native))
Stream #1:0 -> #0:1 (pcm_s16le (native) -> pcm_dvd
(native))
Press [q] to stop, [?] for help
[mpeg2video @ 0x558f72233280] Warning vbv_delay will be set to
0xFFFF (=VBR) as the specified vbv buffer is too large for the
given bitrate!
Output #0, vob, to '720x576_50fps+alsa_ms2130.mpg':
Metadata:
encoder : Lavf61.7.100
Stream #0:0: Video: mpeg2video (4:2:2), yuv422p(tv,
progressive), 720x576, q=2-31, 8000 kb/s, 50 fps, 90k tbn
Metadata:
encoder : Lavc61.19.101 mpeg2video
Side data:
cpb: bitrate max/min/avg: 8000000/8000000/8000000 buffer
size: 20000000 vbv_delay: N/A
Stream #0:1: Audio: pcm_dvd, 48000 Hz, stereo, s16, 1536 kb/s
Metadata:
encoder : Lavc61.19.101 pcm_dvd
[out#0/vob @ 0x558f7224c200] video:18921KiB audio:3756KiB
subtitle:0KiB other streams:0KiB global headers:0KiB muxing
overhead: 1.320964%
frame= 1000 fps= 50 q=2.5 Lsize= 22976KiB time=00:00:19.98
bitrate=9420.4kbits/s speed=0.998x
Stopped automatic with frame=1000
--------
du -sh *
23M 720x576_50fps+alsa_ms2130.mpg
19M 720x576_50fps_ms2130.mpg
--------
ffprobe -hide_banner 720x576_50fps+alsa_ms2130.mpg
Input #0, mpeg, from '720x576_50fps+alsa_ms2130.mpg':
Duration: 00:00:20.01, start: 0.520000, bitrate: 9408 kb/s
Stream #0:0[0x1e0]: Video: mpeg2video (4:2:2), yuv422p(tv,
progressive), 720x576 [SAR 1:1 DAR 5:4], 50 fps, 50 tbr, 90k tbn
Side data:
cpb: bitrate max/min/avg: 8000000/0/0 buffer size:
20004864 vbv_delay: N/A
Stream #0:1[0xa0]: Audio: pcm_dvd, 48000 Hz, stereo, s16, 1536
kb/s
========================================
-----------------------
S-vido as well as audio L/R cables are connected
between the camcorder out and A/D converter IN.
Maybe additional configuration is required (I didn't
think the separate sound card (Behringer U-Phono should
be necessary)
----------
To list the v4l2 device capabilities;
v4l2-ctl -d /dev/video0 --list-formats-ext
ioctl: VIDIOC_ENUM_FMT
Type: Video Capture
[0]: 'YUYV' (YUYV 4:2:2)
Size: Discrete 1920x1080
Interval: Discrete 0.017s (60.000 fps)
Interval: Discrete 0.020s (50.000 fps)
Interval: Discrete 0.033s (30.000 fps)
Interval: Discrete 0.050s (20.000 fps)
Interval: Discrete 0.100s (10.000 fps)
Size: Discrete 1600x1200
Interval: Discrete 0.017s (60.000 fps)
Interval: Discrete 0.020s (50.000 fps)
Interval: Discrete 0.033s (30.000 fps)
Interval: Discrete 0.050s (20.000 fps)
Interval: Discrete 0.100s (10.000 fps)
Size: Discrete 1360x768
Interval: Discrete 0.017s (60.000 fps)
Interval: Discrete 0.020s (50.000 fps)
Interval: Discrete 0.033s (30.000 fps)
Interval: Discrete 0.050s (20.000 fps)
Interval: Discrete 0.100s (10.000 fps)
Size: Discrete 1280x1024
Interval: Discrete 0.017s (60.000 fps)
Interval: Discrete 0.020s (50.000 fps)
Interval: Discrete 0.033s (30.000 fps)
Interval: Discrete 0.050s (20.000 fps)
Interval: Discrete 0.100s (10.000 fps)
Size: Discrete 1280x960
Interval: Discrete 0.017s (60.000 fps)
Interval: Discrete 0.020s (50.000 fps)
Interval: Discrete 0.033s (30.000 fps)
Interval: Discrete 0.050s (20.000 fps)
Interval: Discrete 0.100s (10.000 fps)
Size: Discrete 1280x720
Interval: Discrete 0.017s (60.000 fps)
Interval: Discrete 0.020s (50.000 fps)
Interval: Discrete 0.033s (30.000 fps)
Interval: Discrete 0.050s (20.000 fps)
Interval: Discrete 0.100s (10.000 fps)
Size: Discrete 1024x768
Interval: Discrete 0.017s (60.000 fps)
Interval: Discrete 0.020s (50.000 fps)
Interval: Discrete 0.033s (30.000 fps)
Interval: Discrete 0.050s (20.000 fps)
Interval: Discrete 0.100s (10.000 fps)
Size: Discrete 800x600
Interval: Discrete 0.017s (60.000 fps)
Interval: Discrete 0.020s (50.000 fps)
Interval: Discrete 0.033s (30.000 fps)
Interval: Discrete 0.050s (20.000 fps)
Interval: Discrete 0.100s (10.000 fps)
Size: Discrete 720x576
Interval: Discrete 0.017s (60.000 fps)
Interval: Discrete 0.020s (50.000 fps)
Interval: Discrete 0.033s (30.000 fps)
Interval: Discrete 0.050s (20.000 fps)
Interval: Discrete 0.100s (10.000 fps)
Size: Discrete 720x480
Interval: Discrete 0.017s (60.000 fps)
Interval: Discrete 0.020s (50.000 fps)
Interval: Discrete 0.033s (30.000 fps)
Interval: Discrete 0.050s (20.000 fps)
Interval: Discrete 0.100s (10.000 fps)
Size: Discrete 640x480
Interval: Discrete 0.017s (60.000 fps)
Interval: Discrete 0.020s (50.000 fps)
Interval: Discrete 0.033s (30.000 fps)
Interval: Discrete 0.050s (20.000 fps)
Interval: Discrete 0.100s (10.000 fps)
That is supported 10-20-30-50-60 fps for all sizes, not
25 fps!
so it looks like it does some frame/field
interpolation (for s-video input) without letting user
correct/disable this?
I don't see real drawback it makes progressive 50p PAL video output.
Does this device come with manual of any sort?
Any Windows utility perhaps?
This is the ms2130 HDMI-USB3 dongle we also discussed in older
threads:
https://www.aliexpress.com/item/1005004883158574.html
https://www.cnx-software.com/2022/11/07/ms2130-based-4k-hdmi-to-usb-3-0-video-capture-dongle-sells-for-19/
https://www.mail-archive.com/cin@lists.cinelerra-gg.org/msg05587.html
The AV S-Video to HDMI converter is this one
https://www.ebay.com.au/itm/356431236663?_trkparms=amclksrc%3DITM%26aid%3D1110006%26algo%3DHOMESPLICE.SIM%26ao%3D1%26asc%3D20231107084023%26meid%3Dbe9608c9e82b4402bdf76dd76348ab53%26pid%3D101875%26rk%3D3%26rkt%3D4%26sd%3D405137532923%26itm%3D356431236663%26pmt%3D1%26noa%3D0%26pg%3D2332490%26algv%3DSimVIDwebV3WithCPCExpansionEmbeddingSearchQuerySemanticBroadMatchSingularityRecallReplaceKnnV4WithVectorDbNsOptHotPlRecall%26brand%3DUnbranded&_trksid=p2332490.c101875.m1851&itmprp=cksum%3A356431236663be9608c9e82b4402bdf76dd76348ab53%7Cenc%3AAQAKAAABYHKEKKNMUePryBh1zZl0qrjonWK6%252Bbjh8v6%252FxTRbw1Loxqx736BoO2V7ozv6W4xuOBJjwGhPLWk9lnRB2teM6PFgOrZGVcTwpTth7MW79p066SWQrB1VasW1Di58xl1RMBXsH%252BaNxpzil0t8bdqbPkgJlZgvtHVYNSkxo5xG%252Bq21xDVUvrBLotjMgH%252FqV5wXQshGzZM4R6lRyvrYsaYO6TKvrPFmelkCTCubM5eKn0qdO3WG4prHt35axM0b1AnPHppmlHMdGYmjckTyOKNM9%252FV6GLsHrR8V%252Ff%252B4IzCQPxMALQwAlk93n4I9O8AtpmJfVUqsoKsJZFWDdLSsj%252B4SwyzNEGDD0PvOh7nWjXVZBIKMAXxQ94%252B6ePFlKMbiIx4MUcjDAsxbXWMGCAgmUAUvyT8%252FjaimC0vYNMPEguAR4RrTGwG3aZFugrXdz9WAUWrYTwBHrcQRD06DIrkiCLvdErY%253D%7Campid%3APL_CLK%7Cclp%3A2332490&itmmeta=01JTDZ3923JE7AHB2E0118810J
-------------
Try the same test for /dev/video1
v4l2-ctl -d /dev/video1 --list-formats-ext
ioctl: VIDIOC_ENUM_FMT
===========
ffmpeg listed available formats (supported pixel
formats, video formats, and frame sizes) for a
particular input device:
ffmpeg -hide_banner -f v4l2 -list_formats all -i
/dev/video0
[video4linux2,v4l2 @ 0x55a384b214c0] Raw :
yuyv422 : YUYV 4:2:2 : 1920x1080 1600x1200
1360x768 1280x1024 1280x960 1280x720 1024x768 800x600
720x576 720x480 640x480
[in#0 @ 0x55a384b21200] Error opening input: Immediate
exit requested
Error opening input file /dev/video0.
And similar test for /dev/video1
ffmpeg -hide_banner -f v4l2 -list_formats all -i
/dev/video1
[video4linux2,v4l2 @ 0x557e1a5164c0]
ioctl(VIDIOC_G_INPUT): Inappropriate ioctl for device
[in#0 @ 0x557e1a516200] Error opening input:
Inappropriate ioctl for device
Error opening input file /dev/video1.
Error opening input files: Inappropriate ioctl for
device
===============
With supported 50 fps specified, ffplay playback looks
ok visually:
ffplay -hide_banner -f v4l2 -input_format yuyv422
-video_size 720x576 -framerate 50 /dev/video0
Input #0, video4linux2,v4l2, from
'/dev/video0':B sq= 0B
Duration: N/A, start: 311.577886, bitrate: 331776
kb/s
Stream #0:0: Video: rawvideo (YUY2 / 0x32595559),
yuyv422, 720x576, 331776 kb/s, 50 fps, 50 tbr, 1000k
tbn
^Cterje@localhost:/Videoklipp/HDMI-USB3_Capture>
sq= 0B
===============
Capture DVD compatible MPG video (no audio found) with
supported 50 fps progressive video.
No Audio stream!?
ffmpeg -hide_banner -f v4l2 -input_format yuyv422
-video_size 720x576 -framerate 50 -i /dev/video0 -c:v
mpeg2video -refs 1 -bf 2 -b:v 8M -maxrate 8M -minrate 8M
-bufsize 20M -muxrate 11M -dc 10 -c:a pcm_dvd -f vob -t
20 720x576_50fps_ms2130.mpg
Input #0, video4linux2,v4l2, from
'/dev/video0':
Duration: N/A, start: 323.195348, bitrate: 331776
kb/s
Stream #0:0: Video: rawvideo (YUY2 / 0x32595559),
yuyv422, 720x576, 331776 kb/s, 50 fps, 50 tbr, 1000k
tbn
Stream mapping:
Stream #0:0 -> #0:0 (rawvideo (native) ->
mpeg2video (native))
Press [q] to stop, [?] for help
[mpeg2video @ 0x55e390580200] Warning vbv_delay will
be set to 0xFFFF (=VBR) as the specified vbv buffer is
too large for the given bitrate!
Output #0, vob, to '720x576_50fps_ms2130.mpg':
Metadata:
encoder : Lavf61.7.100
Stream #0:0: Video: mpeg2video (4:2:2), yuv422p(tv,
progressive), 720x576, q=2-31, 8000 kb/s, 50 fps, 90k
tbn
Metadata:
encoder : Lavc61.19.101 mpeg2video
Side data:
cpb: bitrate max/min/avg:
8000000/8000000/8000000 buffer size: 20000000
vbv_delay: N/A
[out#0/vob @ 0x55e390581e00] video:18921KiB audio:0KiB
subtitle:0KiB other streams:0KiB global headers:0KiB
muxing overhead: 1.242550%
frame= 1000 fps= 50 q=2.5 Lsize= 19156KiB
time=00:00:19.98 bitrate=7854.2kbits/s speed=0.998x
Stopped automatic ! Why?
may be usb cable just moved a bit?
No, next test also stopped at frame=1000
Maybe this is some security default for "still" camcorder (Sony
TR2000) on a desk mount where the image is not changed or moved.
I have not tested playback of real S-video tape recordings.