जब ffmpeg के साथ MP4 विभाजित करते हैं तो मैं मेटाडेटा कैसे शामिल करूं?


8

मेरे पास कुछ MP4 हैं जो मैं अपने फ़्लिकर खाते में अपलोड करना चाहता हूं, लेकिन उनका अधिकतम आकार 500mb है क्योंकि मेरा केवल 550 के बारे में है मैं उन्हें केवल आधे में विभाजित करने की योजना बना रहा था, फिर उन्हें अपलोड कर दूंगा, लेकिन मैं यह सुनिश्चित करना चाहता हूं कि सभी मेटा डेटा शामिल है, लेकिन यह प्रतीत नहीं होता है। मैंने निम्नलिखित में से प्रत्येक को बिना किसी भाग्य के आज़माया है, (इस पोस्ट के अंत में मेरे पास मूल और नया ffprobe आउटपुट है):

ffmpeg -ss 00:00:00.00 -t 00:04:19.35 -i SANY0069.MP4 -acodec copy -vcodec copy -map_metadata 0:0 SANY0069A.MP4

ffmpeg -ss 00:00:00.00 -t 00:04:19.35 -i SANY0069.MP4 -acodec copy -vcodec copy -map_meta_data SANY0069.MP4:SANY0069A.MP4 SANY0069A.MP4

इस एक के साथ मैंने स्वयं व्यक्तिगत मेटा टैग का उत्पादन किया जो मैंने इस कमांड से लिया था

ffmpeg -i SANY0069A.MP4 -f ffmetadata meta.txt
ffmpeg -ss 00:00:00.00 -t 00:04:19.35 -i SANY0069.MP4 -acodec copy -vcodec copy -metadata major_brand="mp42" -metadata minor_version="1" -metadata compatible_brands="mp42avc1" -metadata creation_time="2012-09-29 09:05:50" -metadata comment="SANYO DIGITAL CAMERA CA9" -metadata comment-eng="SANYO DIGITAL CAMERA CA9" SANY0069A.MP4

पूर्व कमांड के आउटपुट का उपयोग करके मैंने भी यह कोशिश की:

ffmpeg -ss 00:00:00.00 -t 00:04:19.35 -i SANY0069.MP4 -acodec copy -vcodec copy -f ffmetadata -i meta.txt SANY0069A.MP4 

आउटपुट: मेरे पहले आदेश से नमूना आउटपुट:

ffmpeg -ss 00:00:00.00 -t 00:04:19.35 -i SANY0069.MP4 -acodec copy -vcodec copy -map_metadata 0:0 SANY0069A.MP4
ffmpeg version 0.8.12, Copyright (c) 2000-2011 the FFmpeg developers
  built on Jun 13 2012 09:57:38 with gcc 4.6.3 20120306 (Red Hat 4.6.3-2)
  configuration: --prefix=/usr --bindir=/usr/bin --datadir=/usr/share/ffmpeg --incdir=/usr/include/ffmpeg --libdir=/usr/lib64 --mandir=/usr/share/man --arch=x86_64 --extra-cflags='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic' --enable-bzlib --enable-libcelt --enable-libdc1394 --enable-libdirac --enable-libfreetype --enable-libgsm --enable-libmp3lame --enable-libopenjpeg --enable-librtmp --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxvid --enable-x11grab --enable-avfilter --enable-postproc --enable-pthreads --disable-static --enable-shared --enable-gpl --disable-debug --disable-stripping --shlibdir=/usr/lib64 --enable-runtime-cpudetect
  libavutil    51.  9. 1 / 51.  9. 1
  libavcodec   53.  8. 0 / 53.  8. 0
  libavformat  53.  5. 0 / 53.  5. 0
  libavdevice  53.  1. 1 / 53.  1. 1
  libavfilter   2. 23. 0 /  2. 23. 0
  libswscale    2.  0. 0 /  2.  0. 0
  libpostproc  51.  2. 0 / 51.  2. 0
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'SANY0069.MP4':
  Metadata:
    major_brand     : mp42
    minor_version   : 1
    compatible_brands: mp42avc1
    creation_time   : 2012-09-29 09:05:50
    comment         : SANYO DIGITAL CAMERA CA9
    comment-eng     : SANYO DIGITAL CAMERA CA9
  Duration: 00:08:38.71, start: 0.000000, bitrate: 9142 kb/s
    Stream #0.0(eng): Video: h264 (Constrained Baseline), yuv420p, 1280x720 [PAR 1:1 DAR 16:9], 9007 kb/s, 29.97 fps, 29.97 tbr, 30k tbn, 59.94 tbc
    Metadata:
      creation_time   : 2012-09-29 09:05:50
    Stream #0.1(eng): Audio: aac, 48000 Hz, stereo, s16, 127 kb/s
    Metadata:
      creation_time   : 2012-09-29 09:05:50
File 'SANY0069A.MP4' already exists. Overwrite ? [y/N] y
Output #0, mp4, to 'SANY0069A.MP4':
  Metadata:
    major_brand     : mp42
    minor_version   : 1
    compatible_brands: mp42avc1
    creation_time   : 2012-09-29 09:05:50
    comment         : SANYO DIGITAL CAMERA CA9
    comment-eng     : SANYO DIGITAL CAMERA CA9
    encoder         : Lavf53.5.0
    Stream #0.0(eng): Video: libx264, yuv420p, 1280x720 [PAR 1:1 DAR 16:9], q=2-31, 9007 kb/s, 30k tbn, 29.97 tbc
    Metadata:
      creation_time   : 2012-09-29 09:05:50
    Stream #0.1(eng): Audio: aac, 48000 Hz, stereo, 127 kb/s
    Metadata:
      creation_time   : 2012-09-29 09:05:50
Stream mapping:
  Stream #0.0 -> #0.0
  Stream #0.1 -> #0.1
Press [q] to stop, [?] for help
frame= 7773 fps=4644 q=-1.0 Lsize=  289607kB time=00:04:19.35 bitrate=9147.4kbits/s    
video:285416kB audio:4033kB global headers:0kB muxing overhead 0.054571%

और अंतिम, जब मैं मूल के ffprobe की तुलना करता हूं और पहला विभाजन वाला भाग मुझे 2 निम्नलिखित आउटपुट मिलता है: मूल

ffprobe version 0.8.12, Copyright (c) 2007-2011 the FFmpeg developers
  built on Jun 13 2012 09:57:38 with gcc 4.6.3 20120306 (Red Hat 4.6.3-2)
  configuration: --prefix=/usr --bindir=/usr/bin --datadir=/usr/share/ffmpeg --incdir=/usr/include/ffmpeg --libdir=/usr/lib64 --mandir=/usr/share/man --arch=x86_64 --extra-cflags='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic' --enable-bzlib --enable-libcelt --enable-libdc1394 --enable-libdirac --enable-libfreetype --enable-libgsm --enable-libmp3lame --enable-libopenjpeg --enable-librtmp --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxvid --enable-x11grab --enable-avfilter --enable-postproc --enable-pthreads --disable-static --enable-shared --enable-gpl --disable-debug --disable-stripping --shlibdir=/usr/lib64 --enable-runtime-cpudetect
  libavutil    51.  9. 1 / 51.  9. 1
  libavcodec   53.  8. 0 / 53.  8. 0
  libavformat  53.  5. 0 / 53.  5. 0
  libavdevice  53.  1. 1 / 53.  1. 1
  libavfilter   2. 23. 0 /  2. 23. 0
  libswscale    2.  0. 0 /  2.  0. 0
  libpostproc  51.  2. 0 / 51.  2. 0
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'SANY0069.MP4':
  Metadata:
    major_brand     : mp42
    minor_version   : 1
    compatible_brands: mp42avc1
    creation_time   : 2012-09-29 09:05:50
    comment         : SANYO DIGITAL CAMERA CA9
    comment-eng     : SANYO DIGITAL CAMERA CA9
  Duration: 00:08:38.71, start: 0.000000, bitrate: 9142 kb/s
    Stream #0.0(eng): Video: h264 (Constrained Baseline), yuv420p, 1280x720 [PAR 1:1 DAR 16:9], 9007 kb/s, 29.97 fps, 29.97 tbr, 30k tbn, 59.94 tbc
    Metadata:
      creation_time   : 2012-09-29 09:05:50
    Stream #0.1(eng): Audio: aac, 48000 Hz, stereo, s16, 127 kb/s
    Metadata:
      creation_time   : 2012-09-29 09:05:50

विभाजित करें

ffprobe version 0.8.12, Copyright (c) 2007-2011 the FFmpeg developers
  built on Jun 13 2012 09:57:38 with gcc 4.6.3 20120306 (Red Hat 4.6.3-2)
  configuration: --prefix=/usr --bindir=/usr/bin --datadir=/usr/share/ffmpeg --incdir=/usr/include/ffmpeg --libdir=/usr/lib64 --mandir=/usr/share/man --arch=x86_64 --extra-cflags='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic' --enable-bzlib --enable-libcelt --enable-libdc1394 --enable-libdirac --enable-libfreetype --enable-libgsm --enable-libmp3lame --enable-libopenjpeg --enable-librtmp --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxvid --enable-x11grab --enable-avfilter --enable-postproc --enable-pthreads --disable-static --enable-shared --enable-gpl --disable-debug --disable-stripping --shlibdir=/usr/lib64 --enable-runtime-cpudetect
  libavutil    51.  9. 1 / 51.  9. 1
  libavcodec   53.  8. 0 / 53.  8. 0
  libavformat  53.  5. 0 / 53.  5. 0
  libavdevice  53.  1. 1 / 53.  1. 1
  libavfilter   2. 23. 0 /  2. 23. 0
  libswscale    2.  0. 0 /  2.  0. 0
  libpostproc  51.  2. 0 / 51.  2. 0
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'SANY0069A.MP4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    creation_time   : 1970-01-01 00:00:00
    encoder         : Lavf53.5.0
    comment         : SANYO DIGITAL CAMERA CA9
  Duration: 00:04:19.37, start: 0.000000, bitrate: 9146 kb/s
    Stream #0.0(eng): Video: h264 (Constrained Baseline), yuv420p, 1280x720 [PAR 1:1 DAR 16:9], 9015 kb/s, 29.97 fps, 29.97 tbr, 30k tbn, 59.94 tbc
    Metadata:
      creation_time   : 1970-01-01 00:00:00
    Stream #0.1(eng): Audio: aac, 48000 Hz, stereo, s16, 127 kb/s
    Metadata:
      creation_time   : 1970-01-01 00:00:00

मुझे पता है कि यह अविश्वसनीय रूप से लंबा है, लेकिन वास्तव में यह काफी सरल प्रश्न है। मैंने सोचा कि जितना संभव हो उतना विस्तार प्रदान करना सबसे अच्छा होगा।

किसी भी सलाह यहाँ महान होगा,

धन्यवाद


1
लंबे, विस्तृत प्रश्न इसके विपरीत बहुत बेहतर हैं, और यह अच्छा है कि ffmpeg कंसोल आउटपुट के लिए पूछना न पड़े।
6

हाँ, मैंने ऐसा सोचा था, Im बिल्कुल एक linux noob नहीं है, तो मुझे लगा कि यह जानकारी है कि जो कोई भी वास्तव में मदद कर सकता है उसे ज़रूरत होगी।
जोश

मैंने बस इसे संक्षेप में देखा, लेकिन मेरा मानना ​​है कि सभी creation_time( लेकिन जब तक इसे छोड़ नहीं दिया जाता है) और commentस्वचालित रूप से सेट होते हैं। के व्यवहार creation_timeके बीच भिन्न हो रहा है 0.8.12और Git से मौजूदा ffmpeg; जब तक मैं इसे शामिल नहीं करता, यह इसे जोड़ना / कॉपी करना प्रकट नहीं होता है। मैंने कोड का उल्लेख नहीं किया है, लेकिन नकल creation_timeकरते समय नहीं, जब आप पूछते हैं, तो धाराओं को एक बग नहीं माना जा सकता है या नहीं माना जा सकता है।
लोलगन

मुझे लगता है कि जिस तरह से यह मेरे सिस्टम पर व्यवहार कर रहा है, उसे सभी द्वारा बग माना जाएगा, अगर यह मूल वीडियो से निर्माण समय की नकल नहीं कर रहा है तो क्या यह निर्माण समय को वर्तमान में सेट नहीं करना चाहिए? इसके बजाय, 1/1/1970 (युगांतर?) के बजाय, अगर मुझे "कॉपी" कोडक का उपयोग नहीं करना चाहिए, तो प्रमुख_ब्रांड, माइनर_वर्जन और कम्पैटिबल_ब्रांड समान नहीं होना चाहिए? इसी तरह एनकोडर सेट किया जा रहा है?
जोश

जवाबों:


2

FFmpeg को स्वचालित रूप से मेटाडेटा पर ले जाना चाहिए (इसलिए इसे बिना -map_metadataदेखें और देखें कि क्या काम करता है), लेकिन अगर आपको इसके -map_metadata 0बजाय उपयोग करने का प्रयास नहीं करना चाहिए -map_metadata 0:0- :0पहले डेटा स्ट्रीम (शायद वीडियो) को संदर्भित करता है, और ffmpeg कोशिश कर रहा हो सकता है संपूर्ण फ़ाइल के बजाय केवल स्ट्रीम-विशिष्ट मेटाडेटा पर प्रतिलिपि बनाने के लिए।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.