Skip to content

Commit e674f3d

Browse files
committed
1 parent 0b86f29 commit e674f3d

File tree

7 files changed

+332
-2
lines changed

7 files changed

+332
-2
lines changed

io/How to Add Custom File Attributes/src/main/java/com/javacreed/examples/io/Example.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
package com.javacreed.examples.io;
22

3-
import java.io.File;
43
import java.nio.ByteBuffer;
54
import java.nio.file.Files;
65
import java.nio.file.Path;
6+
import java.nio.file.Paths;
77
import java.nio.file.attribute.UserDefinedFileAttributeView;
88

99
public class Example {
1010

1111
public static void main(final String[] args) throws Exception {
12-
final Path file = new File(Example.class.getResource("/samples/example.txt").toURI()).getAbsoluteFile().toPath();
12+
final Path file = Paths.get(Example.class.getResource("/samples/example.txt").toURI()).toAbsolutePath();
1313

1414
final UserDefinedFileAttributeView view = Files.getFileAttributeView(file, UserDefinedFileAttributeView.class);
1515

io/How to Read File Attributes/pom.xml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,4 +95,13 @@
9595
</plugin>
9696
</plugins>
9797
</build>
98+
99+
<dependencies>
100+
<dependency>
101+
<groupId>uk.co.caprica</groupId>
102+
<artifactId>vlcj</artifactId>
103+
<version>3.1.0</version>
104+
</dependency>
105+
</dependencies>
106+
98107
</project>
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package com.javacreed.examples.io;
2+
3+
import java.util.concurrent.TimeUnit;
4+
5+
import uk.co.caprica.vlcj.component.EmbeddedMediaPlayerComponent;
6+
import uk.co.caprica.vlcj.player.embedded.EmbeddedMediaPlayer;
7+
import uk.co.caprica.vlcj.runtime.RuntimeUtil;
8+
9+
import com.sun.jna.NativeLibrary;
10+
11+
public class Example {
12+
13+
public static void main(final String[] args) throws Exception {
14+
15+
final String vlcLibPath = "C:\\Users\\Mona Lisa\\Downloads\\vlc-2.1.5";
16+
final String mediaPath = "\\\\192.168.75.25\\Data\\sd\\videos\\England\\2014_2015\\Premier_League\\Arsenal_vs._Aston_Villa\\908093_0\\Arsenal_vs._Aston_Villa.mp4";
17+
18+
NativeLibrary.addSearchPath(RuntimeUtil.getLibVlcLibraryName(), vlcLibPath);
19+
final EmbeddedMediaPlayerComponent embeddedMediaPlayerComponent = new EmbeddedMediaPlayerComponent();
20+
EmbeddedMediaPlayer embeddedMediaPlayer = embeddedMediaPlayerComponent.getMediaPlayer();
21+
embeddedMediaPlayer.prepareMedia(mediaPath);
22+
embeddedMediaPlayer.parseMedia();
23+
24+
System.out.println("Length: " + embeddedMediaPlayer.getLength());
25+
System.out.println("Dimentions: " + embeddedMediaPlayer.getVideoDimension());
26+
}
27+
}
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
package com.javacreed.examples.io;
2+
3+
import java.awt.event.WindowAdapter;
4+
import java.awt.event.WindowEvent;
5+
6+
import javax.swing.JFrame;
7+
import javax.swing.SwingUtilities;
8+
9+
import uk.co.caprica.vlcj.component.EmbeddedMediaPlayerComponent;
10+
import uk.co.caprica.vlcj.player.embedded.EmbeddedMediaPlayer;
11+
import uk.co.caprica.vlcj.runtime.RuntimeUtil;
12+
13+
import com.sun.jna.NativeLibrary;
14+
15+
public class Example2 {
16+
17+
public static void main(final String[] args) throws Exception {
18+
19+
final String vlcLibPath = "C:\\Users\\Mona Lisa\\Downloads\\vlc-2.1.5";
20+
final String mediaPath = "\\\\192.168.75.25\\Data\\sd\\videos\\England\\2014_2015\\Premier_League\\Arsenal_vs._Aston_Villa\\908093_0\\Arsenal_vs._Aston_Villa.mp4";
21+
22+
NativeLibrary.addSearchPath(RuntimeUtil.getLibVlcLibraryName(), vlcLibPath);
23+
24+
SwingUtilities.invokeLater(new Runnable() {
25+
@Override
26+
public void run() {
27+
final JFrame frame = new JFrame("Playing Video with VLC (Part 1)");
28+
final EmbeddedMediaPlayerComponent embeddedMediaPlayerComponent = new EmbeddedMediaPlayerComponent();
29+
frame.setContentPane(embeddedMediaPlayerComponent);
30+
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
31+
frame.setSize(1200, 800);
32+
frame.setVisible(true);
33+
34+
final EmbeddedMediaPlayer mediaPlayer = embeddedMediaPlayerComponent.getMediaPlayer();
35+
mediaPlayer.playMedia(mediaPath);
36+
37+
System.out.println("Length: " + mediaPlayer.getLength());
38+
System.out.println("Dimentions: " + mediaPlayer.getVideoDimension());
39+
40+
frame.addWindowListener(new WindowAdapter() {
41+
@Override
42+
public void windowClosing(WindowEvent e) {
43+
try {
44+
mediaPlayer.release();
45+
} catch (Exception ex) {/* Ignore */}
46+
}
47+
});
48+
}
49+
});
50+
}
51+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package com.javacreed.examples.io;
2+
3+
4+
public class Example3 {
5+
6+
7+
public static void main(String[] args) throws Exception {
8+
9+
10+
11+
System.load("C:\\Windows\\System32\\Shell32.dll");
12+
13+
14+
System.out.println("Done");
15+
}
16+
}
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
package com.javacreed.examples.io;
2+
3+
import java.awt.Dimension;
4+
import java.awt.Frame;
5+
6+
import javax.swing.JFrame;
7+
import javax.swing.SwingUtilities;
8+
9+
import uk.co.caprica.vlcj.component.EmbeddedMediaPlayerComponent;
10+
import uk.co.caprica.vlcj.player.MediaPlayer;
11+
import uk.co.caprica.vlcj.player.MediaPlayerEventAdapter;
12+
import uk.co.caprica.vlcj.player.MediaPlayerEventListener;
13+
import uk.co.caprica.vlcj.player.embedded.EmbeddedMediaPlayer;
14+
import uk.co.caprica.vlcj.runtime.RuntimeUtil;
15+
16+
import com.sun.jna.NativeLibrary;
17+
18+
public class Example4 {
19+
20+
public static void main(final String[] args) throws Exception {
21+
22+
final String vlcLibPath = "C:\\Users\\Mona Lisa\\Downloads\\vlc-2.1.5";
23+
// final String mediaPath = "\\\\192.168.75.25\\Data\\sd\\videos\\England\\2014_2015\\Premier_League\\Arsenal_vs._Aston_Villa\\908093_0\\Arsenal_vs._Aston_Villa.mp4";
24+
final String mediaPath = "\\\\192.168.75.25\\Data\\sd\\videos\\Argentina\\2014\\Primera_A\\Arsenal_de_Sarandí_vs._Banfield\\937560_0\\Arsenal_de_Sarandí_vs._Banfield.mp4";
25+
NativeLibrary.addSearchPath(RuntimeUtil.getLibVlcLibraryName(), vlcLibPath);
26+
27+
SwingUtilities.invokeLater(new Runnable() {
28+
@Override
29+
public void run() {
30+
final EmbeddedMediaPlayerComponent embeddedMediaPlayerComponent = new EmbeddedMediaPlayerComponent();
31+
32+
final JFrame application = new JFrame("Test");
33+
application.setContentPane(embeddedMediaPlayerComponent);
34+
application.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
35+
application.setExtendedState(Frame.MAXIMIZED_BOTH);
36+
application.setVisible(true);
37+
38+
final EmbeddedMediaPlayer embeddedMediaPlayer = embeddedMediaPlayerComponent.getMediaPlayer();
39+
embeddedMediaPlayer.playMedia(mediaPath);
40+
41+
final MediaPlayerEventListener listener = new MediaPlayerEventAdapter() {
42+
@Override
43+
public void positionChanged(final MediaPlayer mediaPlayer, final float newPosition) {
44+
final Dimension dimension = mediaPlayer.getVideoDimension();
45+
if (dimension != null) {
46+
System.out.printf("%d X %d%n", dimension.width, dimension.height);
47+
embeddedMediaPlayer.removeMediaPlayerEventListener(this);
48+
application.setVisible(false);
49+
application.dispose();
50+
}
51+
}
52+
};
53+
54+
embeddedMediaPlayer.addMediaPlayerEventListener(listener);
55+
}
56+
});
57+
58+
}
59+
}
Lines changed: 168 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,168 @@
1+
package com.javacreed.examples.io;
2+
3+
import java.io.IOException;
4+
import java.io.InputStreamReader;
5+
import java.io.Reader;
6+
import java.util.LinkedHashMap;
7+
import java.util.Map;
8+
import java.util.Objects;
9+
10+
public class Example5 {
11+
12+
private static class MediaInfo {
13+
14+
public static MediaInfo parse(final String data) {
15+
16+
final MediaInfo mediaInfo = new MediaInfo();
17+
18+
Section section = null;
19+
20+
for (final String line : data.split("(\\r\\n|\\r|\\n)")) {
21+
if (line.isEmpty()) {
22+
section = null;
23+
continue;
24+
}
25+
26+
if (section == null) {
27+
section = mediaInfo.addSection(Section.parse(line));
28+
continue;
29+
}
30+
31+
section.add(NameValue.parse(line));
32+
}
33+
34+
return mediaInfo;
35+
}
36+
37+
private final Map<String, Section> sections = new LinkedHashMap<>();
38+
39+
public Section addSection(final Section section) {
40+
final String name = section.getName();
41+
if (sections.containsKey(name)) {
42+
throw new IllegalArgumentException("Duplicate section name: '" + name + "'");
43+
}
44+
45+
sections.put(name, section);
46+
return section;
47+
}
48+
49+
@Override
50+
public String toString() {
51+
final StringBuilder formatted = new StringBuilder();
52+
if (sections.isEmpty()) {
53+
formatted.append("No information found!!!");
54+
} else {
55+
for (final Section section : sections.values()) {
56+
formatted.append(section);
57+
}
58+
}
59+
60+
return formatted.toString();
61+
}
62+
}
63+
64+
public static class NameValue {
65+
public static NameValue parse(final String line) {
66+
final String[] parts = line.split(":", 2);
67+
return new NameValue(parts[0].trim(), parts[1].trim());
68+
}
69+
70+
private final String name;
71+
private final String value;
72+
73+
public NameValue(final String name, final String value) {
74+
this.name = Objects.requireNonNull(name);
75+
this.value = Objects.requireNonNull(value);
76+
}
77+
78+
public String getName() {
79+
return name;
80+
}
81+
82+
public String getValue() {
83+
return value;
84+
}
85+
86+
@Override
87+
public String toString() {
88+
return String.format("[%s] = '%s'", name, value);
89+
}
90+
91+
}
92+
93+
private static class Section {
94+
public static Section parse(final String line) {
95+
if (line.contains(":")) {
96+
throw new IllegalArgumentException("Section name should not have ':'");
97+
}
98+
99+
return new Section(line.trim());
100+
}
101+
102+
private final String name;
103+
104+
private final Map<String, NameValue> values = new LinkedHashMap<>();
105+
106+
public Section(final String name) {
107+
this.name = Objects.requireNonNull(name);
108+
}
109+
110+
public void add(final NameValue nameValue) {
111+
final String name = nameValue.getName();
112+
if (values.containsKey(name)) {
113+
throw new IllegalArgumentException("Duplicate name: '" + name + "'");
114+
}
115+
116+
values.put(name, nameValue);
117+
}
118+
119+
public String getName() {
120+
return name;
121+
}
122+
123+
@Override
124+
public String toString() {
125+
final StringBuilder formatted = new StringBuilder();
126+
formatted.append(name).append("\n");
127+
if (values.isEmpty()) {
128+
formatted.append(" No values!!!\n");
129+
} else {
130+
for (final NameValue nameValue : values.values()) {
131+
formatted.append(" ").append(nameValue).append("\n");
132+
}
133+
}
134+
return formatted.toString();
135+
}
136+
}
137+
138+
private static String executeMediaInfo(final String mediaPath) throws IOException, InterruptedException {
139+
final String exePath = "C:\\Users\\Mona Lisa\\Downloads\\MediaInfo_CLI_0.7.72_Windows_x64\\MediaInfo.exe";
140+
final ProcessBuilder builder = new ProcessBuilder(exePath, mediaPath);
141+
builder.redirectErrorStream();
142+
final Process process = builder.start();
143+
144+
final StringBuilder buffer = new StringBuilder();
145+
try (Reader reader = new InputStreamReader(process.getInputStream())) {
146+
for (int i; (i = reader.read()) != -1;) {
147+
buffer.append((char) i);
148+
}
149+
}
150+
151+
final int status = process.waitFor();
152+
if (status == 0) {
153+
return buffer.toString();
154+
}
155+
156+
throw new IOException("Unexpected exit status " + status);
157+
}
158+
159+
public static void main(final String[] args) throws Exception {
160+
161+
final String mediaPath = "\\\\192.168.75.25\\Data\\sd\\videos\\Argentina\\2014\\Primera_A\\Arsenal_de_Sarandí_vs._Banfield\\937560_0\\Arsenal_de_Sarandí_vs._Banfield.mp4";
162+
163+
final String data = Example5.executeMediaInfo(mediaPath);
164+
final MediaInfo mediaInfo = MediaInfo.parse(data);
165+
System.out.println(mediaInfo);
166+
System.out.println("Done");
167+
}
168+
}

0 commit comments

Comments
 (0)