Comment convertir un fichier vidéo ogv au format vidéo Mp4 en utilisant Java


J'ai besoin de convertir le format vidéo OGV en format vidéo MP4.

  • J'utilise ce code Java ci-dessous pour convertir le format vidéo MP4 au format vidéo OGV, cela fonctionne bien.
  • Pour le format MP4, j'utilise l'audio.setCodec(" AudioAttributes.DIRECT_STREAM_COPY") et vidéo.setCodec ("VideoAttributes.DIRECT_STREAM_COPY").
  • Mais si j'utilise ce même code en changeant l'audio.setCodec ("libvorbis") et vidéo.setCodec ("mpeg4") il n'est pas converti du format Ogv au format Mp4. Et aussi J'essaie un codec dans mon exemple de programme.

  • Je ne suis pas en mesure de convertir du format Ogv au format Mp4.

public class VideoConvert {
    public static void main(String[] args) throws IOException {
    File source = new File("D:\\readxml\\videoConvertorProject\\MP4toOGV\\mp4\\Sample1.ogv");
    File target = new File("D:\\readxml\\videoConvertorProject\\MP4toOGV\\ogv\\Sample2.mp4");
    AudioAttributes audio = new AudioAttributes();
    //audio.setCodec("libvorbis");
    audio.setCodec("libfaac");
    //audio.setCodec("libmp3lame");
    //audio.setCodec(AudioAttributes.DIRECT_STREAM_COPY);
    audio.setBitRate(new Integer(128000));
    audio.setSamplingRate(new Integer(44100));
    audio.setChannels(new Integer(2));
    VideoAttributes video = new VideoAttributes();
    video.setBitRate(new Integer(160000));
    video.setFrameRate(new Integer(15));
    //video.setSize(new VideoSize(176, 144));
    //video.setCodec("libtheora");
    video.setCodec("mpeg4");
    //video.setCodec(VideoAttributes.DIRECT_STREAM_COPY);
    EncodingAttributes attrs = new EncodingAttributes();
    attrs.setFormat("mp4");
    attrs.setAudioAttributes(audio);
    attrs.setVideoAttributes(video);
    Encoder encoder = new Encoder();
    try {
        encoder.encode(source, target, attrs);
    } catch (IllegalArgumentException e) {
        e.printStackTrace();
    } catch (InputFormatException e) {
        e.printStackTrace();
    } catch (EncoderException e) {
        e.printStackTrace();
    }
}
Author: Tamil veera Cholan, 2016-01-25

2 answers

Je pense, vous la bibliothèque JAVE (Java Audio Video Encoder), j'ai donc changé le setCodec AudioAttributes.DIRECT_STREAM_COPY

public class VideoConvert {
public static void main(String[] args) throws IOException {
File source = new File("D:\\video\\mp4\\Sample.ogv");
File target = new File("D:\\video\\ogv\\Sample.mp4");
AudioAttributes audio = new AudioAttributes();
audio.setCodec(AudioAttributes.DIRECT_STREAM_COPY);
audio.setBitRate(new Integer(128000));
audio.setSamplingRate(new Integer(44100));
audio.setChannels(new Integer(2));
VideoAttributes video = new VideoAttributes();
video.setBitRate(new Integer(160000));
video.setFrameRate(new Integer(15));
video.setCodec("mpeg4");
video.setCodec(VideoAttributes.DIRECT_STREAM_COPY);
EncodingAttributes attrs = new EncodingAttributes();
attrs.setFormat("mp4");
attrs.setAudioAttributes(audio);
attrs.setVideoAttributes(video);
Encoder encoder = new Encoder();
try {
    encoder.encode(source, target, attrs);
} catch (IllegalArgumentException e) {
    e.printStackTrace();
} catch (InputFormatException e) {
    e.printStackTrace();
} catch (EncoderException e) {
    e.printStackTrace();
}

}

 3
Author: , 2016-02-16 14:03:36

Je ne suis pas tout à fait sûr de la bibliothèque que vous utilisez, mais le format conteneur MPEG-4 prend en charge un certain nombre de codecs vidéo et audio différents.

Je vois libfaac pour l'audio, ce qui me permet de supposer que vous utilisez quelque chose basé sur ffmpeg.

Pour la vidéo, vous voulez probablement H. 264/MPEG-4 AVC, auquel cas vous utiliserez libx264 comme encodeur vidéo. Je n'ai jamais vu un format de codage vidéo mpeg4 autrement.

 1
Author: MithrilTuxedo, 2016-01-27 00:54:27