user2718593
user2718593

Reputation: 131

ffmpeg how to attach & extract text/data file to audio or video stream?

I have:

1/ AUDIO.m4a stream

2/ a cover album jpeg

3/ an UTF8 text file

I wish to bind all of them into a mkv/mp4 container.

To bind the audio & image I can

ffmpeg -y -i "AUDIO.mp4" -attach COVER.jpg -metadata:s mimetype="image/jpeg" -c:a copy "AUDIO_COPY_WITH_COVER.mka"

Further to bind the text file

ffmpeg -y -i "AUDIO_COPY_WITH_COVER.mka" -c copy -attach "TEXT.txt" -metadata:s:2 mimetype=application/octet-stream "AUDIO_JPEG_TEXT.mkv"

If I check I get:

Input #0, matroska,webm, from 'AUDIO_JPEG_TEXT.mkv': Metadata: MINOR_VERSION : 512 COMPATIBLE_BRANDS: M4A isomiso2 MAJOR_BRAND : M4A ENCODER : Lavf58.45.100 Duration: 00:36:10.36, start: 0.000000, bitrate: 67 kb/s Stream #0:0: Video: mjpeg (Baseline), yuvj420p(pc, bt470bg/unknown/unknown), 320x240 [SAR 1:1 DAR 4:3], 1k tbr, 1k tbn, 1k tbc (default) Metadata: FILENAME : COVER.jpg MIMETYPE : image/jpeg DURATION : 00:00:00.000000000 Stream #0:1: Audio: aac (HE-AAC), 44100 Hz, stereo, fltp (default) Metadata: HANDLER_NAME : SoundHandler MIMETYPE : image/jpeg DURATION : 00:36:10.358000000 Stream #0:2: Attachment: none Metadata: filename : TEXT.txt mimetype : application/octet-stream

Question:

1/ How do I extract my text file?

ffmpeg -i "AUDIO_JPEG_TEXT.mkv" -map 0:t -metadata:s:2 mimetype=application/octet-stream "my text.txt"

I get the error: Unable to find a suitable output format for 'my text.txt' my text.txt: Invalid argument

**2/If I replace the command with **

ffmpeg -y -i "AUDIO_COPY_WITH_COVER.mka" -c copy -attach "TEXT.txt" -metadata:t:2 mimetype=application/octet-stream "AUDIO_JPEG_TEXT.mkv"

Excuting ffmpeg -i "AUDIO_JPEG_TEXT.mkv"

get error

EBML header parsing failed AUDIO_JPEG_TEXT.mkv: Invalid data found when processing input

2/ How can I write in one command the 3 attachments(audio,img,document)?

Thanks

Upvotes: 1

Views: 2815

Answers (1)

Gyan
Gyan

Reputation: 93058

To attach in one command,

ffmpeg -y -i "AUDIO.mp4" -attach COVER.jpg -metadata:s:1 mimetype="image/jpeg" -attach "TEXT.txt" -metadata:s:2 mimetype=application/octet-stream -c copy "AUDIO_JPEG_TEXT.mkv"

To extract text,

ffmpeg -dump_attachment:t:0 out.txt -i AUDIO_JPEG_TEXT.mkv

Upvotes: 0

Related Questions