Valami minimalista eszközt keresek (legjobb valami parancssoros izé lenne), amivel DV-kazettáról lementett DV-t lehet módosítani. Sajnos a kamerában rosszul volt beállítva a dátum és idő, ennek köszönhetően a lejátszáskor is, meg a kinyert fájlok nevében is rosszul látszik ez az információ. Nyilván az utóbbi könnyedén módosítható, de vajon az első is? (Legjobb valami olyan lenne, mint a JPG fájlokhoz a jhead, amivel tudom módosítani az EXIF infót, illetve az abban található adatok alapján pl. a fájlokat is át tudom nevezni / be tudom állítani a fájlok módosítási dátumát.)
- 2019 megtekintés
Hozzászólások
ffmpeg ( http://wiki.multimedia.cx/index.php?title=FFmpeg_Metadata ) ???
kipróbálni nem tudom, mert most nincs nálam kéznél közvetlenül kamerából származó anyag,
nem tudom, hogy a dv anyagod milyen konténerbe van csomagolva, de egy sor programot találni erre (sajnos parancssorosat kevésbé), én "hasonló" kereséssel is próbálkoznék: https://www.google.hu/search?q=dv+video+metadata+time
szerkesztés:
http://mediaarea.net/en/MediaInfo, ha az ffmpeg "nem jönne be", ha jól értelmezem, akkor parancssorból is lehet használni, sok os alatt elérhető, open source ("megnézheted", hogy miként nyeri ki az információt), ...
szerkesztés 2.:
"értelemszerűen" az ffmpeg alatt a "projektet" értem, azaz az ffprobe-bal "kell" kinyerni az információt,
ha zavarja valaki szemét a "ffprobe-bal", akkor javítsa ki a hibám (nem tudom, hogy miként helyes: ffprobe-bal, ffprobebal, ffprobe-val, ...?), köszönöm,
- A hozzászóláshoz be kell jelentkezni
Sok disztró már nem az ffmpeg-et, hanem a fork libav-t szállítja. Azzal is működnie kell a legtöbb dolognak, ffprobe->avprobe.
- A hozzászóláshoz be kell jelentkezni
köszönöm a kiegészítést ("sajnos" nem *nix-en "tolom", meg "le vagyok maradva", jobban mondva feledékeny vagyok, és mindig későn jut eszembe a "szakítás")
- A hozzászóláshoz be kell jelentkezni
Az ffmpeg/libav multiplatform. Van Windowsra is.
- A hozzászóláshoz be kell jelentkezni
ffmpeg-gel "tisztában" vagyok, mert azt szoktam használni, de neked is köszönöm, hogy ráirányítottad a figyelmemet a libav-ra,
- A hozzászóláshoz be kell jelentkezni
Hát izé:
$ file clip-XYZ.dv
clip-XYZ.dv: DIF (DV) movie file (PAL)
$ ffprobe clip-XYZ.dv
...
[dv @ 0x2ac88410] Detected timecode is invalid
...
Input #0, dv, from 'clip-XYZ.dv':
Duration: 00:00:00.04, start: 0.000000, bitrate: 28800 kb/s
Stream #0:0: Video: dvvideo, yuv420p, 720x576 [SAR 16:15 DAR 4:3], 28800 kb/s, 25 fps, 25 tbr, 25 tbn, 25 tbc
Stream #0:1: Audio: pcm_s16le, 32000 Hz, stereo, s16, 1024 kb/s
Stream #0:2: Audio: pcm_s16le, 32000 Hz, stereo, s16, 1024 kb/s
$ mediainfo clip-XYZ.dv
General
Complete name : clip-XYZ.dv
Format : DV
Commercial name : DVCPRO
File size : 141 KiB
Duration : 40ms
Overall bit rate mode : Constant
Overall bit rate : 28.8 Mbps
Recorded date : 2015-02-08 20:35:43.000
Video
Format : DV
Commercial name : DVCPRO
Duration : 40ms
Bit rate mode : Constant
Bit rate : 24.4 Mbps
Width : 720 pixels
Height : 576 pixels
Display aspect ratio : 4:3
Frame rate mode : Constant
Frame rate : 25.000 fps
Standard : PAL
Chroma subsampling : 4:2:0
Bit depth : 8 bits
Scan type : Interlaced
Scan order : Bottom Field First
Compression mode : Lossy
Bits/(Pixel*Frame) : 2.357
Time code of first frame : 00:19:43:19
Time code source : Subcode time code
Stream size : 119 KiB (85%)
Audio #1
ID : 0
Format : PCM
Duration : 40ms
Bit rate mode : Constant
Bit rate : 768 Kbps
Encoded bit rate : 0 bps
Channel(s) : 2 channels
Sampling rate : 32.0 KHz
Bit depth : 12 bits
Stream size : 3.75 KiB (3%)
Audio #2
ID : 1
Format : PCM
Duration : 40ms
Bit rate mode : Constant
Bit rate : 768 Kbps
Encoded bit rate : 0 bps
Channel(s) : 2 channels
Sampling rate : 32.0 KHz
Bit depth : 12 bits
Stream size : 3.75 KiB (3%)
A libav-féle avprobe ugyanazt írja ki, mint az ffprobe, csak elhalálozik a végén :-(
Az a bajom, hogy a konkrétan ez utóbbi - a mediainfo kimenetében található - recorded date/time a hibás, ellenben az ffmpeg doksijában erre utaló jelet nem találok, hogy ezt tudnám módosítni.
- A hozzászóláshoz be kell jelentkezni
Lehet, hogy vak vagyok? Van egy -timestamp opció. Már csak az a kérdés, hogy én igazából semmiféle átalakítást nem szeretnék, csak ezt átírni. Esetleg valami streamcopy funkcióval kéne próbálkozni.
- A hozzászóláshoz be kell jelentkezni
ffmpeg-nél a stream copyt az -c copy vagy -c:v copy és -c:a copy -nak hívják. (A -c copy és -c:a/-c:v közül csak az egyiket lehet használni.)
- A hozzászóláshoz be kell jelentkezni
Hat ez baromi jo. Olvasom a doksit meg ezt a hozzaszolast.
$ ffmpeg -timestamp 2013-02-08 20:15:32.000 -codec copy -i clip-XYZ.dv out.dv
....
Unknown decoder 'copy'
A manual szerint irhatom: -codec copy, -codec:a copy -codec:v copy, vagy eppen -ac copy -vc copy formaban. De nem erdekli, semelyik se jo. Az avconf ellenben nem ismeri a -timestamp opciot. Valamint pont ugyanezt a hibauzenetet adja vissza, ha azt kihagyom. Mi a franc van itt ma?
- A hozzászóláshoz be kell jelentkezni
Az már látszik, hogy mivel a dátum/idő nem volt aposztrófok/idézőjelek között, ezt valahogy félreértette, de hogy pontosan minek is vette, azt még nem látom :-) mindegy, ez az út rossz.
- A hozzászóláshoz be kell jelentkezni
nem DV-re, hanem egy mp4-re a következő "működött" nekem (Windows7, a "-v quiet"-et csak azért használtam, hogy "átláthatóbb" legyen a kimenet):
e:\tmp>ffprobe -v quiet -show_entries stream=codec_name:stream_tags=creation_time -print_format flat in.mp4
streams.stream.0.codec_name="h264"
streams.stream.0.tags.creation_time="2014-11-06 15:07:28"
streams.stream.1.codec_name="aac"
streams.stream.1.tags.creation_time="2014-11-06 15:07:28"
e:\tmp>ffmpeg -v quiet -i in.mp4 -c copy -metadata creation_time="2015-01-18 20:00:00" -y out.mp4
e:\tmp>ffprobe -v quiet -show_entries stream=codec_name:stream_tags=creation_time -print_format flat out.mp4
streams.stream.0.codec_name="h264"
streams.stream.0.tags.creation_time="2015-01-18 20:00:00"
streams.stream.1.codec_name="aac"
streams.stream.1.tags.creation_time="2015-01-18 20:00:00"
- A hozzászóláshoz be kell jelentkezni
Sajnos nincs creation_time tag (mert hibasnak tekinti??) es a kimenete se jo. Ha mp4-et akarok csinalni, akkor:
[mp4 @ 0x2ac5da10] Could not find tag for codec dvvideo in stream #0, codec not currently supported in container
Could not write header for output file #0 (incorrect codec parameters ?): Invalid argument
Ha pedig DV-t, akkor
[dv @ 0x2ac5da10] Can't initialize DV format!
Make sure that you supply exactly two streams:
video: 25fps or 29.97fps, audio: 2ch/48kHz/PCM
(50Mbps allows an optional second audio stream)
Could not write header for output file #0 (incorrect codec parameters ?): Operation not permitted
az eredmeny. Es persze nincs kimeneti fajl. (Igaz, legalabb nem rinyal a copy parameterre.)
- A hozzászóláshoz be kell jelentkezni
szerintem a copy-ra a paraméterek sorrendje miatt "panaszkodik",
nálam nincs "kéznél" most ("natív") dv, viszont, ha ffmpeg-gel konvertáltam egyet az in.mp4-ből clip-XYZ.dv névre (-target pal-dv -vel), majd arra meghívtam az előbbi példámban levő "másolást" az out.dv-be, akkor a MediaTab szerint annak a "Recorded_Date" mezőjében az általam megadott idő szerepelt már (a clip-XYZ.dv-re még "1970-01-01 00:00:00"-et írt ki), azaz látszólag az
ffmpeg -v quiet -i clip-XYZ.dv -c copy -metadata creation_time="2015-01-18 21:00:00" -y out.dv
működőnek tűnik, de könnyen lehet, hogy a "Recorded_Date" nem egy stream-hez tartozó metadata, stb. hanem ... és emiatt nem jó valójában az előbbi kódrészlet,
szerkesztés: közben megnéztem a MediaInfo Windows 64 CLI v.0.7.72-es verziójával (http://mediaarea.net/download/binary/mediainfo/0.7.72/MediaInfo_CLI_0.7.72_Windows_x64.zip), és az is az általam megadott időbélyeget írta ki a "Recorded date"-nek...
- A hozzászóláshoz be kell jelentkezni
Az mp4-re azért panaszkodik, mert dv-t (mint codec) nem tehetsz mp4 konténerbe.
- A hozzászóláshoz be kell jelentkezni
apropó, jut eszembe: feltételezem nem a timecode-ot akarod átírni, mert az szerintem eleve "balga ötlet",
tfh. megvágod az anyagot, vagy csinálsz vele valamit, de később megsérül a forrásfájl, azaz újra be kellene írnod a kazettáról, és az alapján rekonstruálni kellene a vágást, ha nem tudod "kockapontosan", hogy miként módosítottad a tc-t, mert "elfelejtetted", akkor veszett fejsze nyele (illesztheted "szemre", ha van mihez, azaz van belőle korábbi "export/mixdown/akármi", ami megmaradt) ... egyébként meg pikk-pakk megy, mert szerintem a használható vágóprogramok mindegyike megcsinálja neked a capture-t újra, "1 gombnyomásra" (a probléma esetleg az szokott lenni ez esetben, hogy nem a bejátszót vezérelve csináltad korábban, eleve nem tc-vel, hanem csak úgy ráengedted, stb. azaz ha a belépőjét "nem tudja" megtalálni),
vélhetőleg az összes népszerűbb vágóprogramban tudsz kezelni Auxiliary TC-t, többet is, és szerintem azt kell használni arra, ha külön/további/másik timecode információt akarsz egy anyaghoz kötni,
vagy én nem értem, hogy valóban mit is szeretnél....
- A hozzászóláshoz be kell jelentkezni
Van a kamerában egy óra, és ennek beállítása alapján valahol tárolva van a videofájlban, hogy mikor vették fel. Ezt akarom átírni. Nem timecode, hanem timestamp - szerintem :-)
Mondjuk odáig már eljutottam, hogy a "-timestamp" az szerinte input opció, és valószínűleg a fentebb szereplő -metadata creation_time= lenne a jó, de most meg nyafog az audio sávon, mert szerinte az kizárólag 48 kHz-es PCM lehet. Ebben a dögben ezzel szemben 32 kHz-es hangsáv van (kettő is???). Kezdek fáradni, de akkor is megoldom valahogy, ha az ffmpeg beledöglik :-)
(Ha már itt tartunk, honnan a francból tudhatom, hogy milyen metadata mezők létez(het)nek?)
- A hozzászóláshoz be kell jelentkezni