I use ffmpeg to convert existing movies to H.265 format to reduce their occupied size in HDD. They're encoded mostly in H.264. For this, I use the following command:
ffmpeg -i 1.mkv -c:v libx265 -c:a libmp3lame -b:a 128k -c:s mov_text -map 0 1.mp4
The same for other files. But it's not enough to keep streams descriptive names. The metadata for subtitles, video, and audio streams in input files include their languages (eng, English for example), but they're missing in the output file. For example, ffmpeg outputs the info of the input audio stream as:
Stream #0:1(eng): Audio: ...
And I see "Track 1 - [English]" when playing it with VLC in the list of audio tracks, but it outputs the info of the output audio stream as:
Stream #0:1(und): Audio: ...
And VLC just mentions it as "Track 1". I know that I may add the missing metadata to the output file in some way like this:
ffmpeg -i 1.mp4 -c copy -metadata:s:a:0 language=eng -metadata:s:a:0 handler="English" ...
To re-include them, but why they should be lost to add them later again? I need to improve the first command not to omit them and include them in the output file, 1.mp4
.
What I'm missing in the first command?
-map_metadata 0
to your original command.-map_metadata 0
so I would go with that.